function migrate_plus_migration_plugins_alter in Migrate Plus 8.2
Same name and namespace in other branches
- 8.5 migrate_plus.module \migrate_plus_migration_plugins_alter()
- 8.3 migrate_plus.module \migrate_plus_migration_plugins_alter()
- 8.4 migrate_plus.module \migrate_plus_migration_plugins_alter()
Implements hook_migration_plugins_alter().
File
- ./
migrate_plus.module, line 18 - Provides enhancements for implementing and managing migrations.
Code
function migrate_plus_migration_plugins_alter(array &$migrations) {
/** @var \Drupal\migrate\Plugin\MigrationInterface $migration */
foreach ($migrations as $id => $migration) {
// Add the default class where empty.
if (empty($migration['class'])) {
$migrations[$id]['class'] = 'Drupal\\migrate\\Plugin\\Migration';
}
if (empty($migration['migration_group'])) {
$migration['migration_group'] = 'default';
}
$group = MigrationGroup::load($migration['migration_group']);
if (empty($group)) {
// If the specified group does not exist, create it. Provide a little more
// for the 'default' group.
$group_properties = [];
$group_properties['id'] = $migration['migration_group'];
if ($migration['migration_group'] == 'default') {
$group_properties['label'] = 'Default';
$group_properties['description'] = 'A container for any migrations not explicitly assigned to a group.';
}
else {
$group_properties['label'] = $group_properties['id'];
$group_properties['description'] = '';
}
$group = MigrationGroup::create($group_properties);
$group
->save();
}
$shared_configuration = $group
->get('shared_configuration');
if (empty($shared_configuration)) {
continue;
}
foreach ($shared_configuration as $key => $group_value) {
$migration_value = $migration[$key];
// Where both the migration and the group provide arrays, replace
// recursively (so each key collision is resolved in favor of the
// migration).
if (is_array($migration_value) && is_array($group_value)) {
$merged_values = array_replace_recursive($group_value, $migration_value);
$migrations[$id][$key] = $merged_values;
}
elseif (is_null($migration_value)) {
$migrations[$id][$key] = $group_value;
}
// Otherwise, the existing migration value overrides the group value.
}
}
}