You are here

function gallery_assist_update_3 in Gallery Assist 6

Implementation of hook_update_N().

File

./gallery_assist.install, line 598
Install, update and uninstall functions and DB tables for the Gallery Assist module.

Code

function gallery_assist_update_3() {
  $ret = array();

  // DB Operations.
  $result1 = db_query("SELECT gref, shadow, data from {gallery_assist}");
  $my_data = array();
  while ($r = db_fetch_object($result1)) {
    $my_data[$r->gref] = $r;
    $data = unserialize($r->data);
    $data['shadow'] = $r->shadow;
    $my_data[$r->gref]->show_in_homepage_block = $data['show_in_homepage_block'];
    unset($data['show_in_homepage_block']);
    unset($my_data[$r->gref]->shadow);
    $my_data[$r->gref]->data = serialize($data);
  }
  $spec = array(
    'show_in_homepage_block' => array(
      'type' => 'int',
      'not null' => TRUE,
      'default' => 0,
      'description' => 'Marker that help to filter which galleries will be showed in the block Galleries.',
    ),
    'cover' => array(
      'type' => 'int',
      'not null' => TRUE,
      'default' => 0,
      'description' => 'Marker that help to filter which galleries will be showed in the block Galleries.',
    ),
  );
  db_add_field($ret, 'gallery_assist', 'show_in_homepage_block', $spec['show_in_homepage_block']);
  if (count($my_data) > 1) {
    foreach ($my_data as $k) {
      $show_in_homepage_block = isset($k->show_in_homepage_block) && $k->show_in_homepage_block ? 1 : 0;
      $data = $k->data;
      $gref = $k->gref;
      update_sql("UPDATE {gallery_assist} set show_in_homepage_block = {$show_in_homepage_block}, data = '{$data}' WHERE gref = {$gref}");
      $type = 'Update 2';
      $message = 'Table <strong>%table_name</strong> was sucessfull altered.</br>';
      $variables = array(
        '%table_name' => 'gallery_assist',
        '@gid' => $k->gref,
        '@show_in_homepage_block' => $k->show_in_homepage_block,
      );
      watchdog($type, $message, $variables);
    }
  }
  drupal_set_message('<p><strong>The feature "cover" is new. At now you or the registered users of your homepage (with Gallery Assist permissions) can choose a image as cover for each gallery.</strong></p>');
  db_drop_field($ret, 'gallery_assist', 'shadow');

  // Add the cover column..

  //db_query("ALTER TABLE {gallery_assist_item} ADD cover INT UNSIGNED NOT NULL DEFAULT %d AFTER comments", 0);

  // Set a cover for each existing gallery.
  db_add_field($ret, 'gallery_assist_item', 'cover', $spec['cover']);

  // Set a image as cover in each existing gallery.
  $q = "SELECT pid from {gallery_assist_item} GROUP BY gref";
  $result2 = db_query($q);
  while ($r2 = db_fetch_object($result2)) {
    update_sql("UPDATE {gallery_assist_item} set cover = 1 WHERE pid = " . $r2->pid);
  }

  // Build or update settings variables.
  $new_key = array(
    'file_size' => '',
    'user_size' => '',
    'resolution' => 0,
    'extensions' => 'jpg jpeg gif png',
  );
  $types = node_get_types();
  $check['default'] = variable_get('gallery_assist_default_data', FALSE);
  $check['default']['hide_in_teaser'] = FALSE;
  $check['default']['show_download_link'] = FALSE;
  $check['default']['item_effect'] = FALSE;
  $check['default']['max_items'] = FALSE;
  $check['default']['max_form_items'] = 6;
  $check['default']['ga_public_status'] = 2;
  $check['default']['admin_public_status'] = FALSE;
  $check['default']['validate_upload'] = $new_key;
  $check['default']['pager_t_height'] = 20;
  $check['default']['pager_t_active_height'] = 25;

  // User permissions.
  $check['default']['extra_layout_settings_allowed'] = 0;
  $check['default']['common_settings_allowed'] = 0;
  $check['default']['hide_teaser_container_allowed'] = 0;
  $check['default']['display_download_link_allowed'] = 0;
  $check['default']['container_format_allowed'] = 0;
  $check['default']['gallery_container_weight_allowed'] = 0;
  $check['default']['show_in_homepage_block_allowed'] = 0;
  $check['default']['gallery_public_status_allowed'] = 0;
  $check['default']['show_titles_allowed'] = 0;
  $check['default']['show_in_userprofile_allowed'] = 0;
  $check['default']['gallery_items_shadow_allowed'] = 0;
  variable_set('gallery_assist_' . $v->type, $check['default']);
  foreach ($types as $v) {
    if (variable_get('gallery_assist_' . $v->type, 0) == 1) {
      $check[$v->type] = variable_get('gallery_assist_' . $v->type . '_data', FALSE);
      $check[$v->type]['hide_in_teaser'] = $check['default']['hide_in_teaser'];
      $check[$v->type]['show_download_link'] = $check['default']['show_download_link'];
      $check[$v->type]['item_effect'] = $check['default']['item_effect'];
      $check[$v->type]['max_items'] = $check['default']['max_items'];
      $check[$v->type]['max_form_items'] = $check['default']['max_form_items'];
      $check[$v->type]['ga_public_status'] = $check['default']['ga_public_status'];
      $check[$v->type]['admin_public_status'] = $check['default']['admin_public_status'];
      $check[$v->type]['validate_upload'] = $new_key;
      $check[$v->type]['pager_t_height'] = $check['default']['pager_t_height'];
      $check[$v->type]['pager_t_active_height'] = $check['default']['pager_t_active_height'];

      // User permissions.
      $check[$v->type]['extra_layout_settings_allowed'] = 0;
      $check[$v->type]['common_settings_allowed'] = 0;
      $check[$v->type]['hide_teaser_container_allowed'] = 0;
      $check[$v->type]['display_download_link_allowed'] = 0;
      $check[$v->type]['container_format_allowed'] = 0;
      $check[$v->type]['gallery_container_weight_allowed'] = 0;
      $check[$v->type]['show_in_homepage_block_allowed'] = 0;
      $check[$v->type]['gallery_public_status_allowed'] = 0;
      $check[$v->type]['show_titles_allowed'] = 0;
      $check[$v->type]['show_in_userprofile_allowed'] = 0;
      $check[$v->type]['gallery_items_shadow_allowed'] = 0;
      variable_set('gallery_assist_' . $v->type . '_data', $check[$v->type]);
    }
  }
  $block_update = variable_get('gallery_assist_block_data', FALSE);
  $block_update[2]['cover'] = 'DESC';
  variable_set('gallery_assist_block_data', $block_update);
  gallery_assist_clearthecache();
  return $ret;
}