diff --git a/migration_helpers.info.yml b/migration_helpers.info.yml index 7855059..1d74e40 100644 --- a/migration_helpers.info.yml +++ b/migration_helpers.info.yml @@ -2,3 +2,4 @@ name: Migration Helpers type: module description: Provides helpers to migrate data into modern Drupal. core_version_requirement: ^9 || ^10 +php: 8.0 diff --git a/migration_helpers.module b/migration_helpers.module index 9a6f597..b443a0b 100644 --- a/migration_helpers.module +++ b/migration_helpers.module @@ -3,18 +3,25 @@ /** * Entity query helper. */ -function migration_helpers_entity_query($entity_type, $bundle, $field = '') { +function migration_helpers_entity_query( + $entity_type = 'node', + $bundle = NULL, + $field = NULL, +) { /** @var \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager */ $entity_type_manager = \Drupal::service('entity_type.manager'); $entity_storage = $entity_type_manager->getStorage($entity_type); - $bundle_key = $entity_storage->getEntityType()->getKey('bundle'); $entity_query = $entity_storage->getQuery(); - $entity_query->condition($bundle_key, $bundle); - if (!empty($field)) { + if ($bundle) { + $bundle_key = $entity_storage->getEntityType()->getKey('bundle'); + $entity_query->condition($bundle_key, $bundle); + } + + if ($field) { // Check that field BOTH is present on entity bundle AND has a value saved. $entity_query->exists($field); } @@ -27,6 +34,33 @@ function migration_helpers_entity_query($entity_type, $bundle, $field = '') { } +/** + * Move (and optionally filter/transform) terms between term reference fields. + */ +function migration_helpers_move_terms( + $source_vocabulary, + $destination_vocabulary, + $source_field, + $destination_field, + $source_bundle, + $destination_bundle = NULL, + $source_entity_type = 'node', + $destination_entity_type = 'node', + $mapping = [], +) { + // Destination bundle is also required but we default to making it + // the same as the source bundle. + $destination_bundle ??= $source_bundle; + print(" + $source_entity_type, + $source_bundle, + $source_field, + $destination_entity_type, + $destination_bundle, + $destination_field, + $source_vocabulary, + $destination_vocabulary"); +} // The below almost serve more as examples that can be followed