diff --git a/core/modules/migrate/migrate.module b/core/modules/migrate/migrate.module index 5e60a18..f304aa9 100644 --- a/core/modules/migrate/migrate.module +++ b/core/modules/migrate/migrate.module @@ -34,11 +34,15 @@ function migrate_migration_plugins_alter(&$definitions) { foreach ($definitions as &$definition) { $destination = $migrate_plugin_manager->getDefinition($definition['destination']['plugin'], FALSE); if (!empty($destination['class'])) { - if (is_a($destination['class'], EntityConfigBase::class, TRUE) || is_a($destination['class'], Config::class, TRUE) || is_a($destination['class'], ComponentEntityDisplayBase::class, TRUE)) { + if ((is_a($destination['class'], EntityConfigBase::class, TRUE) + || is_a($destination['class'], Config::class, TRUE) + || is_a($destination['class'], ComponentEntityDisplayBase::class, TRUE)) + && !in_array('Content', $definition['migration_tags']) + ) { $definition['migration_tags'][] = 'Configuration'; } // Default to content. - else { + elseif (!in_array('Configuration', $definition['migration_tags'])) { $definition['migration_tags'][] = 'Content'; } } diff --git a/core/modules/migrate/tests/modules/migrate_tagging_test/migrate_tagging_test.info.yml b/core/modules/migrate/tests/modules/migrate_tagging_test/migrate_tagging_test.info.yml new file mode 100644 index 0000000..d9d1c8a --- /dev/null +++ b/core/modules/migrate/tests/modules/migrate_tagging_test/migrate_tagging_test.info.yml @@ -0,0 +1,5 @@ +name: 'Migrate tagging test' +type: module +package: Testing +version: VERSION +core: 8.x diff --git a/core/modules/migrate/tests/modules/migrate_tagging_test/migration_templates/configuration_url_alias.yml b/core/modules/migrate/tests/modules/migrate_tagging_test/migration_templates/configuration_url_alias.yml new file mode 100644 index 0000000..3fa7be5 --- /dev/null +++ b/core/modules/migrate/tests/modules/migrate_tagging_test/migration_templates/configuration_url_alias.yml @@ -0,0 +1,22 @@ +id: configuration_url_alias +label: Configuration URL aliases +migration_tags: + - Configuration +source: + plugin: d7_url_alias + constants: + slash: '/' +process: + source: + plugin: concat + source: + - constants/slash + - source + alias: + plugin: concat + source: + - constants/slash + - alias + langcode: language +destination: + plugin: url_alias diff --git a/core/modules/migrate/tests/modules/migrate_tagging_test/migration_templates/content_date_formats.yml b/core/modules/migrate/tests/modules/migrate_tagging_test/migration_templates/content_date_formats.yml new file mode 100644 index 0000000..d9b253a --- /dev/null +++ b/core/modules/migrate/tests/modules/migrate_tagging_test/migration_templates/content_date_formats.yml @@ -0,0 +1,21 @@ +id: content_date_formats +label: Configuration date format configuration +migration_tags: + - Content +source: + plugin: variable_multirow + variables: + - date_format_long + - date_format_medium + - date_format_short +process: + id: + plugin: static_map + source: name + map: + date_format_long: long + date_format_short: short + date_format_medium: medium + pattern: value +destination: + plugin: entity:date_format diff --git a/core/modules/migrate/tests/src/Kernel/Plugin/PluginsAlterTest.php b/core/modules/migrate/tests/src/Kernel/Plugin/PluginsAlterTest.php new file mode 100644 index 0000000..be00ba2 --- /dev/null +++ b/core/modules/migrate/tests/src/Kernel/Plugin/PluginsAlterTest.php @@ -0,0 +1,133 @@ +installConfig($this->modules); + } + + /** + * Tests tagging migrations as configuration or content. + */ + public function testTaggedConfigurationContentAlter() { + /** @var MigrationPluginManager $migrationManager */ + $migrationManager = \Drupal::service('plugin.manager.migration'); + $tags = ['Configuration', 'Content']; + $migrations = [$tags]; + $migrations['Configuration'] = [ + 'block_content_body_field', + 'block_content_type', + 'd6_block', + 'd6_date_formats', + 'd6_field', + 'd6_field_formatter_settings', + 'd6_field_instance', + 'd6_field_instance_widget_settings', + 'd6_node_setting_promote', + 'd6_node_setting_status', + 'd6_node_setting_sticky', + 'd6_node_settings', + 'd6_node_type', + 'd6_system_cron', + 'd6_system_date', + 'd6_system_file', + 'd6_system_performance', + 'd6_taxonomy_vocabulary', + 'd6_upload_entity_display', + 'd6_upload_entity_form_display', + 'd6_upload_field', + 'd6_upload_field_instance', + 'd6_user_mail', + 'd6_user_role', + 'd6_user_settings', + 'd6_view_modes', + 'd6_vocabulary_entity_display', + 'd6_vocabulary_entity_form_display', + 'd6_vocabulary_field', + 'd6_vocabulary_field_instance', + 'd7_block', + 'd7_field', + 'd7_field_formatter_settings', + 'd7_field_instance', + 'd7_field_instance_widget_settings', + 'd7_node_settings', + 'd7_node_title_label', + 'd7_node_type', + 'd7_system_authorize', + 'd7_system_cron', + 'd7_system_date', + 'd7_system_file', + 'd7_system_mail', + 'd7_system_performance', + 'd7_taxonomy_vocabulary', + 'd7_user_flood', + 'd7_user_mail', + 'd7_user_role', + 'd7_view_modes', + 'file_settings', + 'menu', + 'system_image', + 'system_image_gd', + 'system_logging', + 'system_maintenance', + 'system_rss', + 'system_site', + 'taxonomy_settings', + 'user_picture_entity_display', + 'user_picture_entity_form_display', + 'user_picture_field', + 'user_picture_field_instance', + 'user_profile_entity_display', + 'user_profile_entity_form_display', + 'user_profile_field', + 'user_profile_field_instance', + 'configuration_url_alias', + ]; + $migrations['Content'] = [ + 'd6_custom_block', + 'd6_file', + 'd6_profile_values', + 'd6_upload', + 'd6_user', + 'd6_url_alias', + 'd6_user_contact_settings', + 'd6_user_picture_file', + 'd7_custom_block', + 'd7_file', + 'd7_taxonomy_term', + 'd7_user', + 'd7_url_alias', + 'content_date_formats', + ]; + + foreach ($tags as $tag) { + $instances = array_filter($migrationManager->getDefinitions(), function($migration) use ($tag) { + return !empty($migration['migration_tags']) && in_array($tag, $migration['migration_tags']); + }); + foreach ($migrations[$tag] as $migration) { + $this->assertArrayHasKey($migration, $instances); + } + } + } + +}