defaultLanguage = $arguments['default_language']; } $this->destinationType = $arguments['destination_type']; $this->relationTable = $arguments['relation_table']; $this->relationTableSourceID = $arguments['relation_table_source_id']; $this->relationTableDestinationID = $arguments['relation_table_destination_id']; $this->endpointSourceType = $arguments['endpoint_source_type']; $this->endpointDestinationType = $arguments['endpoint_destination_type']; parent::__construct($arguments); $query = $this->query(); $this->sourceOptions['fix_field_names'] = $this->fixFieldNames; $this->source = new MigrateDrupal5SourceSQL($query, $this->sourceFields, NULL, $this->sourceOptions); $this->destination = new MigrateDestinationRelation($this->destinationType); $this->map = new MigrateSQLMap($this->machineName, array( $this->relationTableSourceID => array( 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'description' => 'Relation Source ID', 'alias' => 'r', ), $this->relationTableDestinationID => array( 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'description' => 'Relation Destination ID', 'alias' => 'r', ), ), MigrateDestinationRelation::getKeySchema() ); $this->addFieldMapping('is_new') ->defaultValue(1); $this->addFieldMapping('endpoints') ->description('Handled in prepare()'); $this->addFieldMapping('entity_id_source', 'relation_source_nid') ->sourceMigration($arguments['relation_source_migration']); $this->addFieldMapping('entity_id_destination', 'relation_destination_nid') ->sourceMigration($arguments['relation_destination_migration']); $this->addUnmigratedDestinations(array( 'migrate_redirects', 'path', 'pathauto', 'uid', 'changed', 'created', // Relation 'endpoints:entity_id', 'endpoints:r_index', )); } /** * Query for basic node fields from Drupal 5. * * @return QueryConditionInterface */ protected function query() { $query = Database::getConnection('default', $this->sourceConnection) ->select($this->relationTable, 'r'); $query->addField('r', $this->relationTableSourceID); $query->addField('r', $this->relationTableDestinationID); return $query; } public function prepare(stdClass $relation, stdClass $row) { if (!empty($relation->entity_id_source) && !empty($relation->entity_id_destination)) { $relation->endpoints[LANGUAGE_NONE] = array( // Relation Source array('entity_type' => $this->endpointSourceType, 'entity_id' => $relation->entity_id_source), // Relation Destination: array('entity_type' => $this->endpointDestinationType, 'entity_id' => $relation->entity_id_destination), ); } } }