function MigrationPluginManager::getDiscovery

Same name in other branches
  1. 9 core/modules/migrate/src/Plugin/MigrationPluginManager.php \Drupal\migrate\Plugin\MigrationPluginManager::getDiscovery()
  2. 8.9.x core/modules/migrate/src/Plugin/MigrationPluginManager.php \Drupal\migrate\Plugin\MigrationPluginManager::getDiscovery()
  3. 11.x core/modules/migrate/src/Plugin/MigrationPluginManager.php \Drupal\migrate\Plugin\MigrationPluginManager::getDiscovery()

Gets the plugin discovery.

This method overrides DefaultPluginManager::getDiscovery() in order to search for migration configurations in the MODULENAME/migrations directory.

Overrides DefaultPluginManager::getDiscovery

File

core/modules/migrate/src/Plugin/MigrationPluginManager.php, line 69

Class

MigrationPluginManager
Plugin manager for migration plugins.

Namespace

Drupal\migrate\Plugin

Code

protected function getDiscovery() {
    if (!isset($this->discovery)) {
        $directories = array_map(function ($directory) {
            return [
                $directory . '/migrations',
            ];
        }, $this->moduleHandler
            ->getModuleDirectories());
        $yaml_discovery = new YamlDirectoryDiscovery($directories, 'migrate');
        // This gets rid of migrations which try to use a non-existent source
        // plugin. The common case for this is if the source plugin has, or
        // specifies, a non-existent provider.
        $only_with_source_discovery = new NoSourcePluginDecorator($yaml_discovery);
        // This gets rid of migrations with explicit providers set if one of the
        // providers do not exist before we try to use a potentially non-existing
        // deriver. This is a rare case.
        $filtered_discovery = new ProviderFilterDecorator($only_with_source_discovery, [
            $this->moduleHandler,
            'moduleExists',
        ]);
        $this->discovery = new ContainerDerivativeDiscoveryDecorator($filtered_discovery);
    }
    return $this->discovery;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.