protected function MigrateManifest::injectDependencies in Migrate Manifest 8
Same name and namespace in other branches
- 8.2 src/MigrateManifest.php \Drupal\migrate_manifest\MigrateManifest::injectDependencies()
- 3.x src/MigrateManifest.php \Drupal\migrate_manifest\MigrateManifest::injectDependencies()
A naive graph flattener for compressing dependencies into a list.
Parameters
\Drupal\migrate\Plugin\MigrationInterface $migration:
\Drupal\migrate\Plugin\MigrationInterface[] $manifest_list:
Return value
\Drupal\migrate\Plugin\MigrationInterface[]
1 call to MigrateManifest::injectDependencies()
- MigrateManifest::import in src/MigrateManifest.php 
- Drush execution method. Runs imports on the supplied manifest.
File
- src/MigrateManifest.php, line 148 
Class
Namespace
Drupal\migrate_manifestCode
protected function injectDependencies(MigrationInterface $migration, array $manifest_list) {
  $migrations = [
    $migration
      ->id() => $migration,
  ];
  if ($required_ids = $migration
    ->get('requirements')) {
    /** @var \Drupal\migrate\Plugin\MigrationPluginManager $manager */
    $manager = \Drupal::service('plugin.manager.migration');
    /** @var \Drupal\migrate\Plugin\MigrationInterface[] $required_migrations */
    $required_migrations = [];
    foreach ($required_ids as $id) {
      // See if there are any configured versions of the migration already
      // in the manifest list.
      if (isset($manifest_list[$id])) {
        $required_migrations[$id] = $manifest_list[$id];
      }
      else {
        // TODO - add migrations to manifest list to avoid duplicate creation.
        $required_migrations = $manager
          ->createInstances($id) + $required_migrations;
      }
    }
    // Merge required migrations, using requirements as the base so they
    // bubble to the front.
    $migrations = $required_migrations + $migrations;
    // Recursively add and requirements the new migrations need.
    foreach ($required_migrations as $required_migration) {
      $migrations = $this
        ->injectDependencies($required_migration, $manifest_list) + $migrations;
    }
  }
  return $migrations;
}