*/
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.
$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;
$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');
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) {
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.