diff -u field_collection-feeds-1063434-121.patch field_collection-feeds-1063434-152.patch --- a/field_collection-feeds-1063434-121.patch +++ b/field_collection-feeds-1063434-152.patch @@ -1,10 +1,10 @@ -diff --git a/field_collection.module b/field_collection.module -index 645093a..e1e8390 100644 +diff --git a/field_collection.module" b/field_collection.module +index c820057..3de727a 100644 --- a/field_collection.module +++ b/field_collection.module -@@ -1871,3 +1871,144 @@ function field_collection_devel_generate($object, $field, $instance, $bundle) { - - return array('value' => $field_collection->item_id); +@@ -1983,3 +1983,153 @@ function field_collection_devel_generate($object, $field, $instance, $bundle) { + 'revision_id' => $field_collection->revision_id, + ); } + +/** @@ -88,6 +88,15 @@ index 645093a..e1e8390 100644 + $sub_field_info = field_info_field($sub_field[0]); + if (isset($_sub_targets[$sub_target]['callback']) && function_exists($_sub_targets[$sub_target]['callback'])) { + $callback = $_sub_targets[$sub_target]['callback']; ++ ++ // When updating a reference field that only allows 1 value, the ++ // source value gets appended to the target's existing array of values ++ // and would result in no update being made. To work around this, the ++ // reference field values and emptied before we continue. ++ if ($sub_field_info['cardinality'] == 1 && $callback == 'references_feeds_set_target') { ++ $field_collection_item->{$sub_field_info['field_name']} = array(); ++ } ++ + if($sub_field_info['cardinality'] == 1) { + $callback($source, $field_collection_item, $sub_target, $v, $sub_mapping); + }