1 file.file.inc | _file_update_image_field_dimensions($file) |
Update the image dimensions stored in any image fields for a file.
Parameters
object $file: A file object that is an image.
See also
http://drupal.org/node/1448124
File
- core/
modules/ file/ file.file.inc, line 219 - File hooks implemented by the File module.
Code
function _file_update_image_field_dimensions($file) {
// Prevent PHP notices when trying to read empty files.
// @see http://drupal.org/node/681042
if (!$file->filesize) {
return;
}
// Do not bother proceeding if this file does not have an image mime type.
if (file_get_mimetype_type($file) != 'image') {
return;
}
// Find all image field enabled on the site.
$image_fields = _file_get_fields_by_type('image');
foreach ($image_fields as $image_field) {
$query = new EntityFieldQuery();
$query->fieldCondition($image_field, 'fid', $file->fid);
$results = $query->execute();
foreach ($results as $entity_type => $entities) {
$entities = entity_load($entity_type, array_keys($entities));
foreach ($entities as $entity) {
foreach ($entity->{$image_field} as $langcode => $items) {
foreach ($items as $delta => $item) {
if ($item['fid'] == $file->fid) {
$entity->{$image_field}[$langcode][$delta]['width'] = $file->metadata['width'];
$entity->{$image_field}[$langcode][$delta]['height'] = $file->metadata['height'];
}
}
}
// Save the updated field column values.
_file_fields_update($entity_type, $entity);
}
}
}
}