You are here

delta.install in Delta 7.3

Same filename and directory in other branches
  1. 6 delta.install
  2. 7 delta.install
  3. 7.2 delta.install

Contains install, update, and uninstall functions for Skinr.

File

delta.install
View source
<?php

/**
 * @file
 * Contains install, update, and uninstall functions for Skinr.
 */

/**
 * Implementats hook_schema().
 */
function delta_schema() {
  $schema['delta'] = array(
    'description' => t('Stores theme-settings templates that allow overriding the theme settings used based on various contexts.'),
    'export' => array(
      'key' => 'machine_name',
      'key name' => 'name',
      'primary key' => 'machine_name',
      'identifier' => 'delta',
      'default hook' => 'delta_default_templates',
      'status' => 'delta_status',
      'api' => array(
        'owner' => 'delta',
        'api' => 'delta',
        'minimum_version' => 3,
        'current_version' => 3,
      ),
      'export callback' => 'delta_export',
    ),
    'fields' => array(
      'machine_name' => array(
        'description' => 'The system name of this theme settings template.',
        'type' => 'varchar',
        'length' => 32,
        'not null' => TRUE,
      ),
      'name' => array(
        'description' => 'The friendly name of this theme settings template.',
        'type' => 'varchar',
        'length' => 128,
        'not null' => TRUE,
      ),
      'description' => array(
        'description' => 'A brief description of this theme settings template.',
        'type' => 'text',
        'size' => 'medium',
        'not null' => TRUE,
      ),
      'theme' => array(
        'description' => 'The theme for which this theme settings template is relevant.',
        'type' => 'varchar',
        'length' => 128,
        'not null' => TRUE,
      ),
      'mode' => array(
        'description' => 'The mode that this template operrates in.',
        'type' => 'varchar',
        'length' => 32,
        'not null' => TRUE,
      ),
      'parent' => array(
        'description' => 'The system name of the parent of this theme settings template.',
        'type' => 'varchar',
        'length' => 32,
        'not null' => TRUE,
      ),
      'settings' => array(
        'description' => 'Serialized data which is a copy of the theme settings array stored in the system table based on these overrides',
        'type' => 'blob',
        'size' => 'big',
        'not null' => FALSE,
        'serialize' => TRUE,
      ),
    ),
    'primary key' => array(
      'machine_name',
    ),
  );
  return $schema;
}

/**
 * Rename the delta_theme_settings table to delta only and adjust it to be compatible with Delta 3.x.
 */
function delta_update_7301(&$sandbox) {
  if (!isset($sandbox['progress'])) {
    $sandbox['#finished'] = 0;
    $sandbox['progress'] = 0;
    $sandbox['max'] = db_select('delta_theme_settings', 'dt')
      ->countQuery()
      ->execute()
      ->fetchField();
    foreach (array(
      'tid',
      'theme',
      'system_name',
    ) as $item) {
      db_drop_index('delta_theme_settings', $item);
    }
    db_drop_field('delta_theme_settings', 'tid');
    db_change_field('delta_theme_settings', 'data', 'settings', array(
      'description' => 'Serialized data which is a copy of the theme settings array stored in the system table based on these overrides',
      'type' => 'blob',
      'size' => 'big',
      'not null' => FALSE,
      'serialize' => TRUE,
    ));
    db_change_field('delta_theme_settings', 'system_name', 'machine_name', array(
      'description' => 'The system name of this theme settings template.',
      'type' => 'varchar',
      'length' => 32,
      'not null' => TRUE,
    ), array(
      'primary key' => array(
        'machine_name',
      ),
    ));
    db_change_field('delta_theme_settings', 'theme', 'theme', array(
      'description' => 'The theme for which this theme settings template is relevant.',
      'type' => 'varchar',
      'length' => 128,
      'not null' => TRUE,
    ));
    db_change_field('delta_theme_settings', 'name', 'name', array(
      'description' => 'The friendly name of this theme settings template.',
      'type' => 'varchar',
      'length' => 128,
      'not null' => TRUE,
    ));
    db_add_field('delta_theme_settings', 'mode', array(
      'description' => 'The mode that this template operrates in.',
      'type' => 'varchar',
      'length' => 32,
      'not null' => TRUE,
      'initial' => 'override',
    ));
    db_rename_table('delta_theme_settings', 'delta');
  }
  $templates = db_select('delta', 'd')
    ->fields('d', array(
    'machine_name',
  ))
    ->orderBy('machine_name')
    ->range($sandbox['progress'], 10)
    ->execute()
    ->fetchCol();
  foreach ($templates as $name) {
    $key = 'theme_delta_' . $name . '_settings';
    $settings = variable_get($key, array());
    variable_del($key);
    unset($settings['delta_template']);
    db_update('delta')
      ->fields(array(
      'settings' => serialize($settings),
    ))
      ->condition('machine_name', $name)
      ->execute();
    $sandbox['progress']++;
  }
  $sandbox['#finished'] = empty($sandbox['max']) ? 1 : $sandbox['progress'] / $sandbox['max'];
  if ($sandbox['#finished'] >= 1) {
    return t("The Delta module's database table has been updated successfully and can now be used with Delta 3.x.");
  }
}

/**
 * Add a description field to the Delta database table.
 */
function delta_update_7302(&$sandbox) {
  db_add_field('delta', 'description', array(
    'description' => 'A brief description of this theme settings template.',
    'type' => 'text',
    'size' => 'medium',
    'not null' => TRUE,
    'initial' => '',
  ));
  return t("Successfully added a description field to the Delta database table.");
}

/**
 * Add a parent field to the Delta database table.
 */
function delta_update_7303(&$sandbox) {
  db_add_field('delta', 'parent', array(
    'description' => 'The system name of the parent of this theme settings template.',
    'type' => 'varchar',
    'length' => 32,
    'not null' => TRUE,
    'initial' => '',
  ));
  return t("Successfully added a parent field to the Delta database table.");
}

/**
 * Add keys to the settings arrays.
 */
function delta_update_7304(&$sandbox) {
  if (!isset($sandbox['progress'])) {
    $sandbox['#finished'] = 0;
    $sandbox['progress'] = 0;
    $sandbox['max'] = db_select('delta', 'dt')
      ->countQuery()
      ->execute()
      ->fetchField();
  }
  $templates = db_select('delta', 'd')
    ->fields('d', array(
    'machine_name',
    'settings',
    'theme',
  ))
    ->orderBy('machine_name')
    ->range($sandbox['progress'], 10)
    ->execute();
  foreach ($templates as $item) {
    $settings = array(
      'theme_' . $item->theme . '_settings' => unserialize($item->settings),
    );
    db_update('delta')
      ->fields(array(
      'settings' => serialize($settings),
    ))
      ->condition('machine_name', $item->machine_name)
      ->execute();
    $sandbox['progress']++;
  }
  $sandbox['#finished'] = empty($sandbox['max']) ? 1 : $sandbox['progress'] / $sandbox['max'];
  if ($sandbox['#finished'] >= 1) {
    cache_clear_all();
    return t("The Delta template settings have been successfully updated.");
  }
}

Functions

Namesort descending Description
delta_schema Implementats hook_schema().
delta_update_7301 Rename the delta_theme_settings table to delta only and adjust it to be compatible with Delta 3.x.
delta_update_7302 Add a description field to the Delta database table.
delta_update_7303 Add a parent field to the Delta database table.
delta_update_7304 Add keys to the settings arrays.