diff --git a/core/modules/field/migrations/d6_field_formatter_settings.yml b/core/modules/field/migrations/d6_field_formatter_settings.yml index 501f154a39..9c627c9cd8 100644 --- a/core/modules/field/migrations/d6_field_formatter_settings.yml +++ b/core/modules/field/migrations/d6_field_formatter_settings.yml @@ -5,6 +5,7 @@ migration_tags: - Drupal 6 - Configuration class: Drupal\migrate_drupal\Plugin\migrate\FieldMigration +field_plugin_method: false source: plugin: d6_field_instance_per_view_mode constants: diff --git a/core/modules/field/migrations/d6_field_instance_widget_settings.yml b/core/modules/field/migrations/d6_field_instance_widget_settings.yml index ecc9d47e24..0b3b5e1575 100644 --- a/core/modules/field/migrations/d6_field_instance_widget_settings.yml +++ b/core/modules/field/migrations/d6_field_instance_widget_settings.yml @@ -4,6 +4,7 @@ migration_tags: - Drupal 6 - Configuration class: Drupal\migrate_drupal\Plugin\migrate\FieldMigration +field_plugin_method: false source: plugin: d6_field_instance_per_form_display constants: diff --git a/core/modules/field/migrations/d7_field_formatter_settings.yml b/core/modules/field/migrations/d7_field_formatter_settings.yml index 2722ed6fcf..ca5b5b4ff4 100644 --- a/core/modules/field/migrations/d7_field_formatter_settings.yml +++ b/core/modules/field/migrations/d7_field_formatter_settings.yml @@ -4,6 +4,7 @@ migration_tags: - Drupal 7 - Configuration class: Drupal\migrate_drupal\Plugin\migrate\FieldMigration +field_plugin_method: false source: plugin: d7_field_instance_per_view_mode constants: diff --git a/core/modules/field/migrations/d7_field_instance_widget_settings.yml b/core/modules/field/migrations/d7_field_instance_widget_settings.yml index 261fa15afa..99b5fde341 100644 --- a/core/modules/field/migrations/d7_field_instance_widget_settings.yml +++ b/core/modules/field/migrations/d7_field_instance_widget_settings.yml @@ -4,6 +4,7 @@ migration_tags: - Drupal 7 - Configuration class: Drupal\migrate_drupal\Plugin\migrate\FieldMigration +field_plugin_method: false source: plugin: d7_field_instance_per_form_display constants: diff --git a/core/modules/migrate_drupal/src/FieldDiscovery.php b/core/modules/migrate_drupal/src/FieldDiscovery.php index 1769885324..2712a58e0e 100644 --- a/core/modules/migrate_drupal/src/FieldDiscovery.php +++ b/core/modules/migrate_drupal/src/FieldDiscovery.php @@ -145,6 +145,11 @@ public function addBundleFieldProcesses(MigrationInterface $migration, $entity_t if ($plugin) { $method = isset($plugin_definition['field_plugin_method']) ? $plugin_definition['field_plugin_method'] : 'defineValueProcessPipeline'; + // Allow migration plugins skipping alterations. + if (!$method) { + continue; + } + call_user_func_array([ $plugin, $method, diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/field/FieldPluginBase.php b/core/modules/migrate_drupal/src/Plugin/migrate/field/FieldPluginBase.php index b8479bc8e3..929f203779 100644 --- a/core/modules/migrate_drupal/src/Plugin/migrate/field/FieldPluginBase.php +++ b/core/modules/migrate_drupal/src/Plugin/migrate/field/FieldPluginBase.php @@ -38,6 +38,16 @@ public function alterFieldInstanceMigration(MigrationInterface $migration) { * {@inheritdoc} */ public function alterFieldWidgetMigration(MigrationInterface $migration) { + $migration_processes = $migration->getProcess(); + $predefined_type_map = $migration_processes['options/type']['type']['map'] ?? NULL; + // If the process with key 'type' is not a 'static_map' plugin, don't do + // anything. + if ( + !is_array($predefined_type_map) || + $migration_processes['options/type']['type']['plugin'] !== 'static_map' + ) { + return; + } $process = []; foreach ($this->getFieldWidgetMap() as $source_widget => $destination_widget) { $process['type']['map'][$source_widget] = $destination_widget; @@ -84,6 +94,17 @@ public function getFieldWidgetMap() { * {@inheritdoc} */ public function alterFieldFormatterMigration(MigrationInterface $migration) { + // If the process with key '0' is not a 'static_map' plugin, don't do + // anything. + $migration_processes = $migration->getProcess(); + $predefined_type_map = $migration_processes['options/type'][0]['map'] ?? NULL; + if ( + !is_array($predefined_type_map) || + $migration_processes['options/type'][0]['plugin'] !== 'static_map' + ) { + return; + } + $process = []; // Certain migrate field plugins do not have a type map annotation. For // these, the plugin ID is used for determining the source field type, which