Commit 7644dc0a authored by Damien McKenna's avatar Damien McKenna
Browse files

Issue #3169952 by Wim Leers, tim.plunkett: Derive metatag migrations by entity type (and bundle).

parent 0f884024
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -5,6 +5,8 @@ Metatag 8.x-1.x-dev, xxxx-xx-xx
#2782797 by DamienMcKenna, Rolf van de Krol, michaelpetri, mvwensen, mxr576,
  Alex G: Allow each tag to have its own permission (merge Metatag Access).
#3180470 by SivaprasadC: Typos in couple of files.
#3169952 by Wim Leers, tim.plunkett: Derive metatag migrations by entity type
  (and bundle).


Metatag 8.x-1.14, 2020-08-11
+29 −2
Original line number Diff line number Diff line
@@ -829,8 +829,35 @@ function metatag_migration_plugins_alter(array &$definitions) {
          'plugin' => 'd7_metatag_entities',
          'source' => 'pseudo_metatag_entities',
        ];
        $definition['migration_dependencies']['optional'][] = 'd7_metatag_field';
        $definition['migration_dependencies']['optional'][] = 'd7_metatag_field_instance';
        $destination_plugin_parts = explode(':', $definition['destination']['plugin']);
        $entity_destination_plugins = ['entity', 'entity_complete'];
        $entity_type_id = in_array($destination_plugin_parts[0], $entity_destination_plugins, TRUE) ?
          $destination_plugin_parts[1] : NULL;
        $bundle_id = $definition['destination']['default_bundle'] ?? NULL;

        // When there are no bundle derivatives, make e.g. the d7_node_complete
        // migration depend on:
        // - d7_metatag_field:node
        // - d7_metatag_field_instance:node
        // - d7_field_instance_widget:node
        // but if there is a bundle derivative such as d7_node_complete:article,
        // then instead make it depend on:
        // - d7_metatag_field:node
        // - d7_metatag_field_instance:node:article
        // - d7_field_instance_widget:node:article
        // Either way, this matches the dependencies used by for example
        // d7_node_complete, which has dependencies on d7_field_instance and
        // d7_comment_field_instance to ensure correct migration order.
        if ($bundle_id && isset($definitions["d7_metatag_field_instance:$entity_type_id:$bundle_id"])) {
          $definition['migration_dependencies']['required'][] = "d7_metatag_field:$entity_type_id";
          $definition['migration_dependencies']['required'][] = "d7_metatag_field_instance:$entity_type_id:$bundle_id";
          $definition['migration_dependencies']['required'][] = "d7_metatag_field_instance_widget_settings:$entity_type_id:$bundle_id";
        }
        elseif (isset($definitions["d7_metatag_field_instance:$entity_type_id"])) {
          $definition['migration_dependencies']['required'][] = "d7_metatag_field:$entity_type_id";
          $definition['migration_dependencies']['required'][] = "d7_metatag_field_instance:$entity_type_id";
          $definition['migration_dependencies']['required'][] = "d7_metatag_field_instance_widget_settings:$entity_type_id";
        }
      }
    }
  }
+1 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ label: Metatag field
migration_tags:
  - Drupal 7
  - Configuration
deriver: Drupal\metatag\Plugin\migrate\source\d7\MetatagFieldDeriver
source:
  plugin: d7_metatag_field
  source_module: metatag
+2 −6
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ label: Metatag field instance
migration_tags:
  - Drupal 7
  - Configuration
deriver: Drupal\metatag\Plugin\migrate\source\d7\MetatagFieldInstanceDeriver
source:
  plugin: d7_metatag_field_instance
  source_module: metatag
@@ -25,9 +26,4 @@ migration_dependencies:
  required:
    # The base field migration is required before this migration can run.
    - d7_metatag_field

    # @todo Is this accurate? Does it really need the vocabulary migration, or
    # is it more precautionary, that it *might* be needed so it might as well be
    # executed first?
    - d7_node_type
    - d7_taxonomy_vocabulary
    # Relevant required dependencies are added in metatag_migration_plugins_alter().
+1 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ label: Metatag field instance widget settings
migration_tags:
  - Drupal 7
  - Configuration
deriver: Drupal\metatag\Plugin\migrate\source\d7\MetatagFieldInstanceDeriver
source:
  plugin: d7_metatag_field_instance
  source_module: metatag
Loading