array( 'handler' => array( 'path' => drupal_get_path('module', 'delta') . '/plugins', 'file' => 'context_reaction_delta.inc', 'class' => 'context_reaction_delta', 'parent' => 'context_reaction', ), ), ); } /** * Implements hook_context_registry(). */ function delta_context_registry() { return array( 'reactions' => array( 'delta' => array( 'title' => t('Delta'), 'description' => t('Apply contextual theme settings via the Delta module.'), 'plugin' => 'context_reaction_delta', ), ), ); } /** * Implements hook_init(). */ function delta_init() { if ($plugin = context_get_plugin('reaction', 'delta')) { $plugin->execute(); } } /** * Implements hook_load(). */ function delta_load($delta) { $cache = &drupal_static(__FUNCTION__); if (!isset($cache[$delta])) { $query = db_select('delta', 'dt') ->fields('dt', array('machine_name', 'name', 'theme', 'mode', 'settings')) ->condition('machine_name', $delta) ->execute() ->fetchAll(); $cache[$delta] = reset($query); } return $cache[$delta]; } /** * @todo */ function delta_valid($delta, $key) { $delta = delta_load($delta); return $delta && $delta->theme == $key; } /** * @todo */ function delta_inject_settings($delta, $key) { global $conf; $cache = &drupal_static('theme_get_setting'); $cache[$key] = NULL; return $conf['theme_' . $key . '_settings'] = delta_settings($delta, $key); } /** * @todo */ function delta_layouts() { return db_select('delta', 'dt') ->fields('dt', array('machine_name', 'name', 'theme')) ->orderBy('dt.name') ->execute() ->fetchAllAssoc('machine_name'); } /** * @todo */ function delta_settings($delta, $key) { $delta = delta_load($delta); $settings = $delta ? unserialize($delta->settings) : array(); $settings = isset($GLOBALS['conf']['theme_' . $key . '_settings']) ? array_merge($GLOBALS['conf']['theme_' . $key . '_settings'], $settings) : $settings; return $settings; } /** * @todo */ function delta_layout_options() { $options = array(); foreach (delta_layouts() as $machine_name => $item) { $options[$machine_name] = $item->name; } return $options; } /** * @todo */ function delta_settings_prepare($settings, $original, $mode) { if ($mode == DELTA_PRESERVE) { foreach ($settings as $setting => $value) { if (isset($original[$setting]) && $value === $original[$setting]) { unset($settings[$setting]); } } } else { $settings = array_merge($original, $settings); } return $settings; } /** * @todo */ function delta_save_settings($delta, $settings, $original, $mode = DELTA_PRESERVE) { $settings = delta_settings_prepare($settings, $original, $mode); return db_update('delta') ->fields(array('settings' => serialize($settings))) ->condition('machine_name', $delta) ->execute(); } /** * @todo */ function delta_theme_options() { $themes = list_themes(); $options = array(); foreach ($themes as $theme => $info) { if ($info->status) { $options[$theme] = $info->info['name']; } } return $options; } /** * @todo */ function delta_save(&$item) { if (!empty($item['old'])) { drupal_write_record('delta', $item, 'machine_name'); } else { drupal_write_record('delta', $item); } return $item; } /** * @todo */ function delta_delete($delta) { return db_delete('delta') ->condition('machine_name', $delta) ->execute(); }