diff --git a/core/modules/migrate/src/Plugin/MigrationPluginManager.php b/core/modules/migrate/src/Plugin/MigrationPluginManager.php index e1308f8..78e72c4 100644 --- a/core/modules/migrate/src/Plugin/MigrationPluginManager.php +++ b/core/modules/migrate/src/Plugin/MigrationPluginManager.php @@ -77,10 +77,13 @@ public function processDefinition(&$definition, $plugin_id) { $definition += [ 'migration_tags' => [], ]; - if ((is_a($destination['class'], EntityConfigBase::class, TRUE) - || is_a($destination['class'], Config::class, TRUE) - || is_a($destination['class'], UserData::class, TRUE) - || is_a($destination['class'], ComponentEntityDisplayBase::class, TRUE)) + $configuration_classes = [ + EntityConfigBase::class, + Config::class, + UserData::class, + ComponentEntityDisplayBase::class, + ]; + if ($this->classInArray($destination['class'], $configuration_classes) && !in_array('Content', $definition['migration_tags']) && !in_array('Configuration', $definition['migration_tags']) ) { @@ -293,4 +296,24 @@ protected function findDefinitions() { }); } + /** + * Determine if a class is in list of class names. + * + * @param $plugin_class + * Class name of plugin. + * @param array $classes + * + * @return bool + * TRUE if it is a class in the list or else FALSE. + */ + protected function classInArray($plugin_class, array $classes) { + foreach ($classes as $class) { + if (is_a($plugin_class, $class, TRUE)) { + return TRUE; + } + } + + return FALSE; + } + } diff --git a/core/modules/migrate/tests/src/Kernel/Plugin/DestinationCategoryTest.php b/core/modules/migrate/tests/src/Kernel/Plugin/DestinationCategoryTest.php index d99501f..4d9378d 100644 --- a/core/modules/migrate/tests/src/Kernel/Plugin/DestinationCategoryTest.php +++ b/core/modules/migrate/tests/src/Kernel/Plugin/DestinationCategoryTest.php @@ -15,7 +15,42 @@ class DestinationCategoryTest extends MigrateDrupalTestBase { /** * {@inheritdoc} */ - public static $modules = ['migrate', 'migrate_drupal', 'user', 'system', 'node', 'taxonomy', 'block', 'block_content', 'field', 'options', 'file', 'path', 'migrate_tagging_test']; + public static $modules = [ + 'action', + 'aggregator', + 'ban', + 'block_content', + 'block', + 'book', + 'comment', + 'config_translation', + 'contact', + 'dblog', + 'field', + 'file', + 'filter', + 'forum', + 'image', + 'language', + 'locale', + 'menu_link_content', + 'menu_ui', + 'migrate_drupal', + 'migrate_tagging_test', + 'migrate', + 'node', + 'options', + 'path', + 'search', + 'shortcut', + 'statistics', + 'syslog', + 'system', + 'taxonomy', + 'text', + 'tracker', + 'user', + ]; /** * {@inheritdoc} @@ -34,20 +69,43 @@ public function testTaggedConfigurationContentAlter() { $tags = ['Configuration', 'Content']; $migrations['Configuration'] = [ 'configuration_url_alias', + 'action_settings', 'block_content_body_field', 'block_content_type', + 'contact_category', + 'd6_action', + 'd6_aggregator_settings', 'd6_block', + 'd6_book_settings', + 'd6_comment_entity_display', + 'd6_comment_entity_form_display', + 'd6_comment_entity_form_display_subject', + 'd6_comment_field', + 'd6_comment_field_instance', + 'd6_comment_type', + 'd6_contact_settings', 'd6_date_formats', + 'd6_dblog_settings', 'd6_field', 'd6_field_formatter_settings', 'd6_field_instance', 'd6_field_instance_widget_settings', + 'd6_filter_format', + 'd6_forum_settings', + 'd6_i18n_system_maintenance', + 'd6_i18n_system_site', + 'd6_i18n_user_mail', + 'd6_i18n_user_settings', + 'd6_imagecache_presets', + 'd6_language_content_settings', + 'd6_menu', 'd6_node_setting_promote', 'd6_node_setting_status', 'd6_node_setting_sticky', 'd6_node_settings', 'd6_node_type', - 'd6_menu', + 'd6_search_settings', + 'd6_syslog_settings', 'd6_system_cron', 'd6_system_date', 'd6_system_file', @@ -66,15 +124,34 @@ public function testTaggedConfigurationContentAlter() { 'd6_vocabulary_entity_form_display', 'd6_vocabulary_field', 'd6_vocabulary_field_instance', + 'd7_action', + 'd7_aggregator_settings', 'd7_block', + 'd7_comment_entity_display', + 'd7_comment_entity_form_display', + 'd7_comment_entity_form_display_subject', + 'd7_comment_field', + 'd7_comment_field_instance', + 'd7_comment_type', + 'd7_contact_settings', + 'd7_dblog_settings', 'd7_field', 'd7_field_formatter_settings', 'd7_field_instance', 'd7_field_instance_widget_settings', + 'd7_filter_format', + 'd7_forum_settings', + 'd7_image_settings', + 'd7_image_styles', + 'd7_language_content_settings', + 'd7_language_negotiation_settings', + 'd7_menu', 'd7_node_settings', 'd7_node_title_label', 'd7_node_type', - 'd7_menu', + 'd7_search_settings', + 'd7_shortcut_set', + 'd7_syslog_settings', 'd7_system_authorize', 'd7_system_cron', 'd7_system_date', @@ -82,11 +159,18 @@ public function testTaggedConfigurationContentAlter() { 'd7_system_mail', 'd7_system_performance', 'd7_taxonomy_vocabulary', + 'd7_tracker_settings', 'd7_user_flood', 'd7_user_mail', 'd7_user_role', 'd7_view_modes', + 'default_language', 'file_settings', + 'language', + 'locale_settings', + 'menu_settings', + 'search_page', + 'statistics_settings', 'system_image', 'system_image_gd', 'system_logging', @@ -94,6 +178,7 @@ public function testTaggedConfigurationContentAlter() { 'system_rss', 'system_site', 'taxonomy_settings', + 'text_settings', 'user_picture_entity_display', 'user_picture_entity_form_display', 'user_picture_field', @@ -105,18 +190,33 @@ public function testTaggedConfigurationContentAlter() { ]; $migrations['Content'] = [ 'content_date_formats', + 'd6_aggregator_feed', + 'd6_aggregator_item', + 'd6_book', + 'd6_comment', 'd6_custom_block', 'd6_file', + 'd6_menu_links', 'd6_profile_values', + 'd6_taxonomy_term', 'd6_upload', - 'd6_user', 'd6_url_alias', + 'd6_user', 'd6_user_picture_file', + 'd7_aggregator_feed', + 'd7_aggregator_item', + 'd7_blocked_ips', + 'd7_comment', 'd7_custom_block', 'd7_file', + 'd7_menu_links', + 'd7_shortcut', + 'd7_shortcut_set_users', 'd7_taxonomy_term', - 'd7_user', + 'd7_tracker_node', + 'd7_tracker_user', 'd7_url_alias', + 'd7_user', ]; foreach ($tags as $tag) {