Compare commits

...

3 commits

2 changed files with 39 additions and 4 deletions

View file

@ -2,3 +2,4 @@ name: Migration Helpers
type: module type: module
description: Provides helpers to migrate data into modern Drupal. description: Provides helpers to migrate data into modern Drupal.
core_version_requirement: ^9 || ^10 core_version_requirement: ^9 || ^10
php: 8.0

View file

@ -3,18 +3,25 @@
/** /**
* Entity query helper. * 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 */ /** @var \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager */
$entity_type_manager = \Drupal::service('entity_type.manager'); $entity_type_manager = \Drupal::service('entity_type.manager');
$entity_storage = $entity_type_manager->getStorage($entity_type); $entity_storage = $entity_type_manager->getStorage($entity_type);
$bundle_key = $entity_storage->getEntityType()->getKey('bundle');
$entity_query = $entity_storage->getQuery(); $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. // Check that field BOTH is present on entity bundle AND has a value saved.
$entity_query->exists($field); $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 // The below almost serve more as examples that can be followed