function imagecrop_update_7001 in Image javascript crop 7
Change the used imagestyle keys from isid to style name.
File
- ./
imagecrop.install, line 68 - Install / Uninstall file for Imagecrop.
Code
function imagecrop_update_7001() {
$styles = array();
$result = db_query('SELECT isid, name FROM {image_styles}');
foreach ($result as $row) {
$styles[$row->isid] = $row->name;
}
// Update field settings
$result = db_query("SELECT fci.id, fci.data FROM {field_config_instance} fci INNER JOIN {field_config} fc ON fci.field_id = fc.id WHERE type = 'image' OR type = 'media'");
foreach ($result as $row) {
$data = unserialize($row->data);
$new_data = $data;
if (isset($data['settings']['imagecrop'])) {
foreach ($data['settings']['imagecrop'] as $isid => $active) {
if (isset($styles[$isid])) {
if ($active) {
$active = $styles[$isid];
}
unset($data['settings']['imagecrop'][$isid]);
$data['settings']['imagecrop'][$styles[$isid]] = $active;
}
else {
$data['settings']['imagecrop'][$isid] = $active;
}
}
db_update('field_config_instance')
->condition('id', $row->id)
->fields(array(
'data' => serialize($data),
))
->execute();
}
}
// Update table
if (!db_field_exists('image_crop_settings', 'style_name')) {
db_drop_primary_key('image_crop_settings');
$field_info = array(
'type' => 'varchar',
'length' => 255,
);
// Use style name as identifier.
db_add_field('image_crop_settings', 'style_name', $field_info);
// Update the table with correct style name.
$isids = db_query('SELECT DISTINCT(isid) FROM {image_crop_settings}')
->fetchCol();
foreach ($isids as $isid) {
// Make sure only not exported styles are updated.
if (!isset($styles[$isid])) {
continue;
}
db_update('image_crop_settings')
->condition('isid', $isid)
->fields(array(
'style_name' => $styles[$isid],
))
->execute();
}
// Delete the isid info from table
db_drop_field('image_crop_settings', 'isid');
// Add primary key
db_add_primary_key('image_crop_settings', array(
'fid',
'style_name',
));
}
}