Chris@14: sourceManager = $source_manager; Chris@14: $this->configFactory = $config_factory; Chris@14: } Chris@14: Chris@14: /** Chris@14: * Returns the migration tags that trigger source_module enforcement. Chris@14: * Chris@14: * @return string[] Chris@14: */ Chris@14: protected function getEnforcedSourceModuleTags() { Chris@14: if ($this->enforcedSourceModuleTags === NULL) { Chris@14: $this->enforcedSourceModuleTags = $this->configFactory Chris@14: ->get('migrate_drupal.settings') Chris@14: ->get('enforce_source_module_tags') ?: []; Chris@14: } Chris@14: return $this->enforcedSourceModuleTags; Chris@14: } Chris@14: Chris@14: /** Chris@14: * {@inheritdoc} Chris@14: */ Chris@14: public function processDefinition(&$definition, $plugin_id) { Chris@14: parent::processDefinition($definition, $plugin_id); Chris@14: Chris@14: // If the migration has no tags, we don't need to enforce the source_module Chris@14: // annotation property. Chris@14: if (empty($definition['migration_tags'])) { Chris@14: return; Chris@14: } Chris@14: Chris@14: // Check if the migration has any of the tags that trigger source_module Chris@14: // enforcement. Chris@14: $applied_tags = array_intersect($this->getEnforcedSourceModuleTags(), $definition['migration_tags']); Chris@14: if ($applied_tags) { Chris@14: // Throw an exception if the source plugin definition does not define a Chris@14: // source_module. Chris@14: $source_id = $definition['source']['plugin']; Chris@14: $source_definition = $this->sourceManager->getDefinition($source_id); Chris@14: if (empty($source_definition['source_module'])) { Chris@14: throw new BadPluginDefinitionException($source_id, 'source_module'); Chris@14: } Chris@14: } Chris@14: } Chris@14: Chris@14: }