Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / modules / contrib / migrate_upgrade / src / MigrateUpgradeDrushRunner.php
index 9ad3a31163b91d3616bb3bf595e9288e4d487bec..7196c2c4c0237df0ef69d7a929e3c52b47e74ce9 100644 (file)
@@ -52,6 +52,16 @@ class MigrateUpgradeDrushRunner {
    */
   protected $nodeMigrations = [];
 
+  /**
+   * List of process plugin IDs used to lookup migrations.
+   *
+   * @var array
+   */
+  protected $migrationLookupPluginIds = [
+    'migration',
+    'migration_lookup',
+  ];
+
   /**
    * From the provided source information, instantiate the appropriate migrations
    * in the active configuration.
@@ -129,7 +139,7 @@ class MigrateUpgradeDrushRunner {
       $process = $migration->getProcess();
       $new_nid_process = [];
       foreach ($process[$id_property] as $delta => $plugin_configuration) {
-        if ($plugin_configuration['plugin'] == 'migration' &&
+        if (in_array($plugin_configuration['plugin'], $this->migrationLookupPluginIds) &&
             is_string($plugin_configuration['migration']) &&
             substr($plugin_configuration['migration'], -7) == 'd6_node') {
           $plugin_configuration['migration'] = $this->nodeMigrations;
@@ -182,12 +192,20 @@ class MigrateUpgradeDrushRunner {
       $group['shared_configuration']['source']['database'] = $db_info['database'];
     }
 
+    // Ditto for the key.
+    if (!empty(drush_get_option('legacy-db-key'))) {
+      $group['shared_configuration']['source']['key'] = drush_get_option('legacy-db-key');
+    }
+
     $group = MigrationGroup::create($group);
     $group->save();
     foreach ($this->migrationList as $migration_id => $migration) {
       drush_print(dt('Exporting @migration as @new_migration',
         ['@migration' => $migration_id, '@new_migration' => $this->modifyId($migration_id)]));
       $entity_array['id'] = $migration_id;
+      $entity_array['class'] = $migration->get('class');
+      $entity_array['cck_plugin_method'] = $migration->get('cck_plugin_method');
+      $entity_array['field_plugin_method'] = $migration->get('field_plugin_method');
       $entity_array['migration_group'] = $this->databaseStateKey;
       $entity_array['migration_tags'] = $migration->get('migration_tags');
       $entity_array['label'] = $migration->get('label');
@@ -229,7 +247,7 @@ class MigrateUpgradeDrushRunner {
   protected function substituteMigrationIds(&$process) {
     if (is_array($process)) {
       // We found a migration plugin, change the ID.
-      if (isset($process['plugin']) && $process['plugin'] == 'migration') {
+      if (isset($process['plugin']) && in_array($process['plugin'], $this->migrationLookupPluginIds)) {
         if (is_array($process['migration'])) {
           $new_migration = [];
           foreach ($process['migration'] as $migration) {
@@ -240,6 +258,16 @@ class MigrateUpgradeDrushRunner {
         else {
           $process['migration'] = $this->modifyId($process['migration']);
         }
+        // The source_ids configuration for migrate_lookup is keyed by
+        // migration id.  If it is there, we need to rekey to the new ids.
+        if (isset($process['source_ids']) && is_array($process['source_ids'])) {
+          $new_source_ids = [];
+          foreach ($process['source_ids'] as $migration_id => $source_ids) {
+            $new_migration_id = $this->modifyId($migration_id);
+            $new_source_ids[$new_migration_id] = $source_ids;
+          }
+          $process['source_ids'] = $new_source_ids;
+        }
       }
       else {
         // Recurse on each array member.