diff --git a/migration_helpers.info.yml b/migration_helpers.info.yml index 7855059..bc7a6ca 100644 --- a/migration_helpers.info.yml +++ b/migration_helpers.info.yml @@ -1,4 +1,5 @@ -name: Migration Helpers +name: Agaric Migration Helpers type: module description: Provides helpers to migrate data into modern Drupal. +package: Agaric core_version_requirement: ^9 || ^10 diff --git a/migration_helpers.services.yml b/migration_helpers.services.yml index a8a4d6d..df7678d 100644 --- a/migration_helpers.services.yml +++ b/migration_helpers.services.yml @@ -1,4 +1,4 @@ services: - migration_helpers.field_transformations: + agaric_migration_helpers.field_transformations: class: Drupal\migration_helpers\MigrationHelperFieldTransformations arguments: ['@entity_type.manager'] diff --git a/src/MigrationHelperFieldTransformations.php b/src/MigrationHelperFieldTransformations.php index 1f100d7..b10be49 100644 --- a/src/MigrationHelperFieldTransformations.php +++ b/src/MigrationHelperFieldTransformations.php @@ -1,10 +1,10 @@ getTranslationLanguages(); - $translations = []; - if ($langcodes > 0) { - foreach($langcodes as $langcode) { - $check_translation = $entity->getTranslation($langcode->getId()); - if ($check_translation !== NULL) { - $translations[] = $entity->getTranslation($langcode->getId()); + + foreach ($source_field_names as $source_field_name) { + foreach ($entity->$source_field_name as $fieldItem) { + $entity_data = [ + 'bundle' => $media_entity_bundle, + 'uid' => $entity->getOwnerId(), + 'langcode' => $entity->language()->getId(), + 'status' => 1, + ]; + + foreach (\array_keys($fieldItem->getValue()) as $subfield) { + $entity_data[$media_target_field][$subfield] = $fieldItem->get($subfield)->getValue(); } + + $media_entity = $media_entity_storage->create($entity_data); + $media_entity->save(); + $media_target_ids[] = $media_entity->id(); } } - foreach ($translations as $translation) { - - foreach ($source_field_names as $source_field_name) { - foreach ($translation->$source_field_name as $fieldItem) { - $entity_data = [ - 'bundle' => $media_entity_bundle, - 'langcode' => $fieldItem->getLangcode(), - 'status' => 1, - ]; - // Some entities (like taxonomy terms) do not have a an owner id - if(method_exists($entity, 'getOwnerId')) { - $entity_data['uid'] = $entity->getOwnerId(); - } - - foreach (\array_keys($fieldItem->getValue()) as $subfield) { - $entity_data[$media_target_field][$subfield] = $fieldItem->get($subfield)->getValue(); - } - - $media_entity = $media_entity_storage->create($entity_data); - $media_entity->save(); - $media_target_ids[] = $media_entity->id(); - } - } - $translation->set($media_field_name, $media_target_ids); - } + $entity->set($media_field_name, $media_target_ids); $entity->save(); - } + } } + }