231 lines
6.8 KiB
Plaintext
231 lines
6.8 KiB
Plaintext
<?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.");
|
|
}
|
|
} |