summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-03-09 17:06:37 +0000
committerDries Buytaert <dries@buytaert.net>2010-03-09 17:06:37 +0000
commit2787acc050ac046337aac300915a5e664d90f918 (patch)
tree99b8b843aabbfda62cb6f4c30ccd530cc0b4e726 /modules
parent117f039a0792ef235e582e3f271dcf4ac6ad2a7d (diff)
downloadbrdo-2787acc050ac046337aac300915a5e664d90f918.tar.gz
brdo-2787acc050ac046337aac300915a5e664d90f918.tar.bz2
- Patch #644338 by yched: file_field_update() triggered a full entity load durung entity_save().
Diffstat (limited to 'modules')
-rw-r--r--modules/file/file.field.inc8
1 files changed, 4 insertions, 4 deletions
diff --git a/modules/file/file.field.inc b/modules/file/file.field.inc
index 4fce28414..367c3bfc7 100644
--- a/modules/file/file.field.inc
+++ b/modules/file/file.field.inc
@@ -274,11 +274,11 @@ function file_field_update($entity_type, $entity, $field, $instance, $langcode,
$fids[] = $item['fid'];
}
- // Delete items from original object.
- list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
- $load_function = $entity_type . '_load';
+ // Get the current values in the entity, and delete files for removed items.
+ list($id) = entity_extract_ids($entity_type, $entity);
+ $original = clone $entity;
+ field_attach_load($entity_type, array($id => $original), FIELD_LOAD_CURRENT, array('field_id' => $field['id']));
- $original = $load_function($id);
if (!empty($original->{$field['field_name']}[$langcode])) {
foreach ($original->{$field['field_name']}[$langcode] as $original_item) {
if (isset($original_item['fid']) && !in_array($original_item['fid'], $fids)) {