diff --git a/docroot/sites/all/modules/contrib/multifield/multifield.migrate.inc b/docroot/sites/all/modules/contrib/multifield/multifield.migrate.inc index 3e82f35..5552ef7 100644 --- a/docroot/sites/all/modules/contrib/multifield/multifield.migrate.inc +++ b/docroot/sites/all/modules/contrib/multifield/multifield.migrate.inc @@ -83,7 +83,6 @@ class MultifieldMigrateFieldHandler extends MigrateFieldHandler { $arguments = $entity->{$field_info['field_name']}['arguments']; $subfield_arguments = array(); - // Collate the subfield values. $items = array(); foreach ($arguments as $field_name => $field_values) { @@ -130,31 +129,41 @@ class MultifieldMigrateFieldHandler extends MigrateFieldHandler { $language = $this->getFieldLanguage($entity, $field_info, $arguments); $machine_name = multifield_extract_multifield_machine_name($field_info); $subinstances = field_info_instances('multifield', $machine_name); + foreach ($items as $delta => $item) { $pseudo_entity = _multifield_field_item_to_entity($machine_name, $item); + foreach ($subinstances as $subfield_name => $subinstance) { if (property_exists($pseudo_entity, $subfield_name)) { $subfield = field_info_field($subfield_name); + // The fourth value passed should be an array with an 'arguments' key // containing $subfield_arguments. $values = array(); + foreach ($pseudo_entity->{$subfield_name} as $key => $subfield_data) { $values[] = $pseudo_entity->{$subfield_name}[$key]; } + if (isset($subfield_arguments) && array_key_exists($subfield_name, $subfield_arguments)) { // Get subfield arguments corresponding to current delta foreach ($subfield_arguments[$subfield_name] as $subfield_argument_key => $subfield_argument) { if (is_array($subfield_argument)) { $values['arguments'][$subfield_argument_key][] = $subfield_argument[$delta]; } + else if ($subfield_argument == 'tid') { //Term IDs need to be treated differently + $values['arguments'][$subfield_argument_key] = $subfield_argument; + } else { $values['arguments'][$subfield_argument_key][] = $subfield_argument; } } } + $pseudo_entity->$subfield_name = migrate_field_handler_invoke_all($pseudo_entity, $subfield, $subinstance, $values); } } + $return[$language][$delta] = _multifield_field_entity_to_item($pseudo_entity); }