function _image_update_7002_populate_dimensions
7.x image.install | _image_update_7002_populate_dimensions($table, $field_name, &$last_fid) |
Populate image dimensions in a specific table.
Parameters
$table: The name of the database table to be updated.
$columns: Keyed array of columns this table is supposed to have.
$last_fid: The fid of the last image to have been processed.
Return value
The number of images that were processed.
Related topics
1 call to _image_update_7002_populate_dimensions()
- image_update_7002 in drupal-7.x/
modules/ image/ image.install - Add width and height columns to image field schema and populate.
File
- drupal-7.x/
modules/ image/ image.install, line 314 - Install, update and uninstall functions for the image module.
Code
function _image_update_7002_populate_dimensions($table, $field_name, &$last_fid) {
// Define how many images to process per pass.
$images_per_pass = 100;
// Query the database for fid / URI pairs.
$query = db_select($table, NULL, array('fetch' => PDO::FETCH_ASSOC));
$query->join('file_managed', NULL, $table . '.' . $field_name . '_fid = file_managed.fid');
if ($last_fid) {
$query->condition('file_managed.fid', $last_fid, '>');
}
$result = $query->fields('file_managed', array('fid', 'uri'))
->orderBy('file_managed.fid')
->range(0, $images_per_pass)
->execute();
$count = 0;
foreach ($result as $file) {
$count++;
$info = image_get_info($file['uri']);
if (is_array($info)) {
db_update($table)
->fields(array(
$field_name . '_width' => $info['width'],
$field_name . '_height' => $info['height'],
))
->condition($field_name . '_fid', $file['fid'])
->execute();
}
}
// If less than the requested number of rows were returned then this table
// has been fully processed.
$last_fid = ($count < $images_per_pass) ? NULL : $file['fid'];
return $count;
}