Chris@0: $migration) { Chris@0: if (empty($migration['migration_group'])) { Chris@0: $migration['migration_group'] = 'default'; Chris@0: } Chris@0: $group = MigrationGroup::load($migration['migration_group']); Chris@0: if (empty($group)) { Chris@0: // If the specified group does not exist, create it. Provide a little more Chris@0: // for the 'default' group. Chris@0: $group_properties = []; Chris@0: $group_properties['id'] = $migration['migration_group']; Chris@0: if ($migration['migration_group'] == 'default') { Chris@0: $group_properties['label'] = 'Default'; Chris@0: $group_properties['description'] = 'A container for any migrations not explicitly assigned to a group.'; Chris@0: } Chris@0: else { Chris@0: $group_properties['label'] = $group_properties['id']; Chris@0: $group_properties['description'] = ''; Chris@0: } Chris@0: $group = MigrationGroup::create($group_properties); Chris@0: $group->save(); Chris@0: } Chris@0: $shared_configuration = $group->get('shared_configuration'); Chris@0: if (empty($shared_configuration)) { Chris@0: continue; Chris@0: } Chris@0: foreach ($shared_configuration as $key => $group_value) { Chris@0: $migration_value = $migration[$key]; Chris@0: // Where both the migration and the group provide arrays, replace Chris@0: // recursively (so each key collision is resolved in favor of the Chris@0: // migration). Chris@0: if (is_array($migration_value) && is_array($group_value)) { Chris@0: $merged_values = array_replace_recursive($group_value, $migration_value); Chris@0: $migrations[$id][$key] = $merged_values; Chris@0: } Chris@0: // Where the group provides a value the migration doesn't, use the group Chris@0: // value. Chris@0: elseif (is_null($migration_value)) { Chris@0: $migrations[$id][$key] = $group_value; Chris@0: } Chris@0: // Otherwise, the existing migration value overrides the group value. Chris@0: } Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * Implements hook_migrate_prepare_row(). Chris@0: */ Chris@0: function migrate_plus_migrate_prepare_row(Row $row, MigrateSourceInterface $source, MigrationInterface $migration) { Chris@0: \Drupal::service('event_dispatcher')->dispatch(MigrateEvents::PREPARE_ROW, new MigratePrepareRowEvent($row, $source, $migration)); Chris@0: }