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."); } }