<?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', ['people', '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."); } }