diff --git a/core/lib/Drupal/Core/Database/Driver/fake/FakeSelect.php b/core/lib/Drupal/Core/Database/Driver/fake/FakeSelect.php index 9feb177..7e6a1e7 100644 --- a/core/lib/Drupal/Core/Database/Driver/fake/FakeSelect.php +++ b/core/lib/Drupal/Core/Database/Driver/fake/FakeSelect.php @@ -180,7 +180,7 @@ protected function executeJoins() { $fields = array(); foreach ($this->fields as $field_info) { $this->fieldsWithTable[$field_info['table'] . '.' . $field_info['field']] = $field_info; - $fields[$field_info['table']][$field_info['field']] = NULL; + $fields[$field_info['table']][$field_info['field']] = $field_info['alias']; } foreach ($this->tables as $alias => $table_info) { if ($table = reset($this->databaseContents[$table_info['table']])) { @@ -256,8 +256,8 @@ protected function executeJoins() { */ protected function getNewRow($table_alias, $fields, $candidate_row, $row = array()) { $new_row[$table_alias]['all'] = $candidate_row; - foreach ($fields[$table_alias] as $field => $v) { - $new_row[$table_alias]['result'][$field] = $candidate_row[$field]; + foreach ($fields[$table_alias] as $field => $alias) { + $new_row[$table_alias]['result'][$alias] = $candidate_row[$field]; } return $new_row + $row; } diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_node.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_node.yml index 790ecb5..9681fbb 100644 --- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_node.yml +++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_node.yml @@ -13,7 +13,11 @@ process: source: language default_value: "und" title: title - uid: uid + uid: node_uid +# migrate_drupal keeps numeric entity ids. If it wouldn't then: +# plugin: migration +# migration: d6_user +# source: node_uid status: status created: created changed: changed @@ -25,7 +29,7 @@ process: source: format 'body/value': body 'body/summary': teaser - revision_uid: uid + revision_uid: revision_uid revision_log: log revision_timestamp: timestamp @@ -39,6 +43,7 @@ destination: plugin: entity:node migration_dependencies: required: + - d6_user - d6_node_type - d6_node_settings - d6_filter_format diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_node_revision.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_node_revision.yml index 824e611..443135e 100644 --- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_node_revision.yml +++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_node_revision.yml @@ -13,7 +13,10 @@ process: source: language default_value: "und" title: title - uid: uid + uid: + plugin: migration + migration: d6_user + source: node_uid status: status created: created changed: changed @@ -25,7 +28,10 @@ process: source: format 'body/value': body 'body/summary': teaser - revision_uid: uid + revision_uid: + plugin: migration + migration: d6_user + source: revision_uid revision_log: log revision_timestamp: timestamp diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/Node.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/Node.php index 3530a33..10ea3b4 100644 --- a/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/Node.php +++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/Node.php @@ -54,7 +54,6 @@ public function query() { )) ->fields('nr', array( 'vid', - 'uid', 'title', 'body', 'teaser', @@ -62,6 +61,8 @@ public function query() { 'timestamp', 'format', )); + $query->addField('n', 'uid', 'node_uid'); + $query->addField('nr', 'uid', 'revision_uid'); $query->innerJoin('node', 'n', static::JOIN); if (isset($this->configuration['node_type'])) { @@ -90,7 +91,8 @@ public function fields() { 'body' => $this->t('Body'), 'format' => $this->t('Format'), 'teaser' => $this->t('Teaser'), - 'uid' => $this->t('Authored by (uid)'), + 'node_uid' => $this->t('Node authored by (uid)'), + 'revision_uid' => $this->t('Revision authored by (uid)'), 'created' => $this->t('Created timestamp'), 'changed' => $this->t('Modified timestamp'), 'status' => $this->t('Published'), diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateNodeTestBase.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateNodeTestBase.php index d8ab3e6..ec78a83 100644 --- a/core/modules/migrate_drupal/src/Tests/d6/MigrateNodeTestBase.php +++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateNodeTestBase.php @@ -37,6 +37,10 @@ protected function setUp() { array(array(1), array('filtered_html')), array(array(2), array('full_html')), ), + 'd6_user' => array( + array(array(1), array(1)), + array(array(2), array(2)), + ), 'd6_field_instance_widget_settings' => array( array( array('page', 'field_test'), diff --git a/core/modules/migrate_drupal/tests/src/Unit/source/d6/NodeByNodeTypeTest.php b/core/modules/migrate_drupal/tests/src/Unit/source/d6/NodeByNodeTypeTest.php index cb0b671..2370bd8 100644 --- a/core/modules/migrate_drupal/tests/src/Unit/source/d6/NodeByNodeTypeTest.php +++ b/core/modules/migrate_drupal/tests/src/Unit/source/d6/NodeByNodeTypeTest.php @@ -86,6 +86,11 @@ class NodeByNodeTypeTest extends MigrateSqlSourceTestCase { */ protected function setUp() { $database_contents = $this->expectedResults; + array_walk($this->expectedResults, function (&$row) { + $row['node_uid'] = $row['uid']; + $row['revision_uid'] = $row['uid'] + 1; + unset($row['uid']); + }); $database_contents[] = array( // Node fields. @@ -115,11 +120,17 @@ protected function setUp() { // Add another row with an article node and make sure it is not migrated. foreach ($database_contents as $k => $row) { - foreach (array('nid', 'vid', 'title', 'uid', 'body', 'teaser', 'format', 'timestamp', 'log') as $i => $field) { + foreach (array('nid', 'vid', 'title', 'uid', 'body', 'teaser', 'format', 'timestamp', 'log') as $field) { $this->databaseContents['node_revisions'][$k][$field] = $row[$field]; - // Keep nid and vid. - if ($i > 1) { - unset($row[$field]); + switch ($field) { + case 'nid': case 'vid': + break; + case 'uid': + $this->databaseContents['node_revisions'][$k]['uid']++; + break; + default: + unset($row[$field]); + break; } } $this->databaseContents['node'][$k] = $row; diff --git a/core/modules/migrate_drupal/tests/src/Unit/source/d6/NodeTest.php b/core/modules/migrate_drupal/tests/src/Unit/source/d6/NodeTest.php index 81e84cd..a108f61 100644 --- a/core/modules/migrate_drupal/tests/src/Unit/source/d6/NodeTest.php +++ b/core/modules/migrate_drupal/tests/src/Unit/source/d6/NodeTest.php @@ -109,15 +109,26 @@ class NodeTest extends MigrateSqlSourceTestCase { */ protected function setUp() { foreach ($this->expectedResults as $k => $row) { - foreach (array('nid', 'vid', 'title', 'uid', 'body', 'teaser', 'log', 'timestamp', 'format') as $i => $field) { + foreach (array('nid', 'vid', 'title', 'uid', 'body', 'teaser', 'format', 'timestamp', 'log') as $field) { $this->databaseContents['node_revisions'][$k][$field] = $row[$field]; - // Keep nid and vid. - if ($i > 1) { - unset($row[$field]); + switch ($field) { + case 'nid': case 'vid': + break; + case 'uid': + $this->databaseContents['node_revisions'][$k]['uid']++; + break; + default: + unset($row[$field]); + break; } } $this->databaseContents['node'][$k] = $row; } + array_walk($this->expectedResults, function (&$row) { + $row['node_uid'] = $row['uid']; + $row['revision_uid'] = $row['uid'] + 1; + unset($row['uid']); + }); parent::setUp(); }