Add deploy hook to migrate images to media using migration helpers

This commit is contained in:
Keegan Rankin 2024-03-05 17:50:23 -08:00
parent 95d27e7a4a
commit cea389c117
2 changed files with 40 additions and 0 deletions

View file

@ -0,0 +1,39 @@
<?php
/**
* @file
* Implements migration helpers in deploy hook to help migrate images to media.
*
* Config updates in drutopia utilize media entities for storing images.
*/
use Psr\Log\LogLevel;
/**
* Move data from image fields to media entity reference fields.
*
* Implements hook_deploy_NAME().
*/
function geo_upgrade_deploy_move_images_to_media() {
$transformations = [
['paragraph', ['field_image'], 'field_media_image', ['image', 'slide']],
['node', ['field_image'], 'field_media_image', ['person', 'article', 'blog', 'collection', 'gleaning']],
// Leaving out the following for now, unless requested later
// ['paragraph', ['field_file'], 'field_media_document', ['file']],
// field_media_document would need to be created on file paragraph
// ['node', ['field_upload'], 'field_media_document', ['article', 'blog', 'gleaning']],
// new field would need to be added for generic file media (field_upload contains variety of file types)
];
\Drupal::logger('geo_upgrade')->log(LogLevel::INFO, "Transformation started.");
foreach ($transformations as $transformation) {
[$entity_type, $image_field_names, $media_field_name, $bundles] = $transformation;
/** @var \Drupal\migration_helpers\MigrationHelperFieldTransformations $field_transformations_service */
$field_transformations_service = \Drupal::service('migration_helpers.field_transformations');
$field_transformations_service->fieldToMediaEntity($entity_type, $image_field_names, $media_field_name, $bundles);
$source_fields = implode(', ', $image_field_names);
\Drupal::logger('geo_upgrade')->log(LogLevel::INFO, "Data in image field(s) $source_fields of $entity_type entity moved to $media_field_name media reference field.");
}
}

View file

@ -8,3 +8,4 @@ dependencies:
- migrate_plus
- migrate_source_csv
- migrate_tools
- migration_helpers