diff --git a/field_collection.module b/field_collection.module index 87dd018..aca6721 100644 --- a/field_collection.module +++ b/field_collection.module @@ -2026,7 +2026,7 @@ function field_collection_feeds_set_target($source, $entity, $target, $value, $m $field = isset($entity->$target) ? $entity->$target : array(); try { - while (!empty($value[$delta])) { + while (isset($value[$delta])) { // Zero out. $field_collection_item = null; @@ -2051,7 +2051,7 @@ function field_collection_feeds_set_target($source, $entity, $target, $value, $m $sub_mapping = $mapping; $sub_mapping['target'] = $sub_target; // Needs language or feeds mappers shout php notices. - $sub_mapping['language'] = $config['processor']['config']['language']; + $sub_mapping['language'] = !empty($config['processor']['config']['language']) ? $config['processor']['config']['language'] : LANGUAGE_NONE; break; } } @@ -2097,6 +2097,10 @@ function field_collection_feeds_set_target($source, $entity, $target, $value, $m $delta++; } + // If new field value has less field collections than old one, remove extra collections. + if (count($value) < count($field['und'])) { + $field['und'] = array_slice($field['und'], 0, count($value)); + } } catch (Exception $e) { drupal_set_message($e->getMessage(), 'error');