From 126db730374f7c500b4978b3295e6f4334429afe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?benjamin=20melan=C3=A7on?= Date: Tue, 14 Nov 2023 00:05:39 -0500 Subject: [PATCH] Add Mauricio's entity query helper and my use of it in text list to boolean --- migration_helpers.module | 49 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 migration_helpers.module diff --git a/migration_helpers.module b/migration_helpers.module new file mode 100644 index 0000000..9a6f597 --- /dev/null +++ b/migration_helpers.module @@ -0,0 +1,49 @@ +getStorage($entity_type); + $bundle_key = $entity_storage->getEntityType()->getKey('bundle'); + + $entity_query = $entity_storage->getQuery(); + $entity_query->condition($bundle_key, $bundle); + + if (!empty($field)) { + // Check that field BOTH is present on entity bundle AND has a value saved. + $entity_query->exists($field); + } + + $entity_query->accessCheck(FALSE); + + $entity_ids = $entity_query->execute(); + + return $entity_type_manager->getStorage($entity_type)->loadMultiple($entity_ids); + +} + + +// The below almost serve more as examples that can be followed + +function migration_helpers_text_list_to_boolean($old_field_name, $new_field_name, $bundle, $entity_type = 'node', $value_map = NULL) { + + $value_map = $value_map ?? [ + 'Yes' => TRUE, + 'No' => FALSE, + ]; + + $nodes = migration_helpers_entity_query($entity_type, $bundle, $old_field_name); + foreach ($nodes as $node) { + /** @var \Drupal\node\NodeInterface $node */ + $orig_value = trim($node->$old_field_name->value); + $new_value = $value_map[$orig_value] ?? (boolean) $orig_value; + $node->set($new_field_name, $new_value); + $node->save(); + } +} +