You are here

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',
    ));
  }
}