diff --git a/migration_helpers.module b/migration_helpers.module index 4710a58..b443a0b 100644 --- a/migration_helpers.module +++ b/migration_helpers.module @@ -1,7 +1,5 @@ id()] = $term->label(); - } - - $nodes = migration_helpers_entity_query($entity_type, $bundle, $source_field); - foreach ($nodes as $node) { - $tids = []; - /** @var \Drupal\node\NodeInterface $node */ - $orig_values = $node->get($source_field); - foreach ($orig_values as $orig_value) { - $orig_tid = $orig_value->target_id; - $orig_term = $entity_type_manager->getStorage('taxonomy_term')->load($orig_tid); - $orig = $orig_term->name->value; - $term_name = $mapping[$orig] ?? $orig; - // If our map intentionally blanked out the term name, do not create - // a term in the new vocabulary and assign it to the destination field. - // Note, the term must be blanked out ('') or assigned to FALSE in the - // mapping, setting a term to NULL is the same as not mapping it, and it - // would be created in the new vocab etc. - if (!$term_name) { - continue; - } - $tid = array_search($term_name, $term_data); - if (empty($tid)) { - $new_term = $entity_type_manager->getStorage('taxonomy_term')->create([ - 'name' => $term_name, - 'vid' => $destination_vocabulary, - ]); - $new_term->save(); - $tid = $new_term->id(); - \Drupal::logger('mass')->log(LogLevel::INFO, "Term $term_name created with TID $tid in vocabulary $destination_vocabulary."); - } - $tids[] = $tid; - } - // Now we have collected all the term IDs that have been created. - // We have to go through a surprising number of hoops to make our - $already_there_tids = []; - $already_there_values = $node->get($destination_field); - foreach ($already_there_values as $already_there_value) { - $already_there_tids[] = $already_there_value->target_id; - } - $node->set($destination_field, array_merge($tids, $already_there_tids)); - $node->save(); - } + // 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