diff -u b/multifield.migrate.inc b/multifield.migrate.inc --- b/multifield.migrate.inc +++ b/multifield.migrate.inc @@ -25,7 +25,6 @@ * $this->addFieldMapping('field_my_multifield:field_description:format') * ->defaultValue('plain_text'); * @endcode - * */ /** @@ -108,7 +107,6 @@ * * Then, each set of multifield values can be migrated in using the * appropriate field handlers. - * */ public function prepare($entity, array $field_info, array $instance, array $values) { // Get the subfield arguments. @@ -117,12 +115,14 @@ // Get rid of arguments for subfields if they exist. foreach ($arguments as $key => $data) { if (is_array($arguments[$key]) && array_key_exists('arguments', $arguments[$key])) { - // Save off arguments (e.g. preserve_files, file_function) to another array. + // Save off arguments (e.g. preserve_files, file_function) to another + // array. // If this is not an array then the value of $subfield_arguments // gets overridcen on every iteration of the loop. $subfield_arguments[$key] = $data['arguments']; unset($arguments[$key]['arguments']); - // If this is set then only the first value of the multivalued field will get imported. + // If this is set then only the first value of the multivalued field + // will get imported. // $arguments[$key] = $arguments[$key][0]; } } @@ -173,12 +173,15 @@ 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. + // 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) { + foreach ($pseudo_entity->{$subfield_name} as $key => $subfield_data) { $values[] = $pseudo_entity->{$subfield_name}[$key]; } - $values['arguments'] = $subfield_arguments[$subfield_name]; + if (isset($subfield_arguments) && array_key_exists($subfield_name, $subfield_arguments)) { + $values['arguments'] = $subfield_arguments[$subfield_name]; + } $pseudo_entity->$subfield_name = migrate_field_handler_invoke_all($pseudo_entity, $subfield, $subinstance, $values); } }