protected function MigrationPluginManager::getDiscovery in Drupal 9
Same name and namespace in other branches
- 8 core/modules/migrate/src/Plugin/MigrationPluginManager.php \Drupal\migrate\Plugin\MigrationPluginManager::getDiscovery()
- 10 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\PluginCode
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;
}