You are here

function picture_update_7200 in Picture 7.2

Update from 7.x-1.x.

File

./picture.install, line 138
Install/schema hooks for the picture module.

Code

function picture_update_7200() {
  module_load_include('php', 'picture', 'includes/PictureMapping');
  db_add_field('picture_mapping', 'label', array(
    'type' => 'varchar',
    'length' => 255,
    'not null' => TRUE,
    'default' => '',
    'description' => 'The machine name of the mapping',
  ));
  variable_set('picture_ckeditor_mappings', variable_get('picture_ckeditor_groups', array()));
  variable_del('picture_ckeditor_groups');

  // Force a schema reset.
  drupal_get_schema('picture_mapping', TRUE);

  // Get old picture mappings from code.
  ctools_include('export');
  $schema = ctools_export_get_schema('picture_mapping');
  $export = $schema['export'];
  $export['api'] = array(
    'owner' => 'picture',
    'api' => 'default_picture_mapping',
    'minimum_version' => 1,
    'current_version' => 1,
  );
  $code_mappings = _ctools_export_get_defaults('picture_mapping', $export);

  // Get old picture mappings from database.
  $db_mappings = ctools_export_crud_load_all('picture_mapping');
  $all_mappings = array_merge($db_mappings, $code_mappings);

  // Update mappings.
  foreach ($all_mappings as $picture_mapping) {
    if (!$picture_mapping instanceof PictureMapping) {
      $old_mapping = $picture_mapping;
      $picture_mapping = new PictureMapping();
      $picture_mapping
        ->setValues($schema, $old_mapping);
    }
    $mapping = $picture_mapping
      ->getMappings();
    $picture_mapping
      ->setLabel($picture_mapping
      ->getMachineName());
    if (isset($picture_mapping->api_version)) {
      $picture_mapping->api_version = 2;
    }
    $new_mapping = array();
    foreach ($mapping as $breakpoint => $multipliers) {
      foreach ($multipliers as $multiplier => $image_style) {
        $new_mapping[$breakpoint][$multiplier] = array(
          'mapping_type' => 'image_style',
          'image_style' => $image_style,
          'sizes' => '',
          'sizes_image_styles' => array(),
        );
      }
    }
    $picture_mapping
      ->setMappings($new_mapping);
    $picture_mapping
      ->save();
  }
}