&$value) {} foreach (array_keys($existing) AS $hook) { // Each theme has two possible preprocess functions that can act on a hook. // This function only applies to this hook. $functions[1] = $theme . '_preprocess_' . $hook; foreach ($functions AS $key => $function) { // Add any functions that are not already in the registry. if (function_exists($function) && !in_array($function, $existing[$hook]['preprocess functions'])) { // We add the preprocess function to the end of the existing list. $existing[$hook]['preprocess functions'][] = $function; } } } // Since we are rebuilding the theme registry and the theme settings' default // values may have changed, make sure they are saved in the database properly. zen_theme_get_default_settings($theme); // Since we modify the $existing cache directly, return nothing. return array(); } /** * Return the theme settings' default values from the .info and save them into the database. * * @param $theme * The name of theme. */ function zen_theme_get_default_settings($theme) { $themes = list_themes(); // Get the default values from the .info file. $defaults = !empty($themes[$theme]->info['settings']) ? $themes[$theme]->info['settings'] : array(); if (!empty($defaults)) { // Get the theme settings saved in the database. $settings = theme_get_settings($theme); // Don't save the toggle_node_info_ variables. if (module_exists('node')) { foreach (node_get_types() as $type => $name) { unset($settings['toggle_node_info_' . $type]); } } // Save default theme settings. variable_set( str_replace('/', '_', 'theme_' . $theme . '_settings'), array_merge($defaults, $settings) ); // If the active theme has been loaded, force refresh of Drupal internals. if (!empty($GLOBALS['theme_key'])) { theme_get_setting('', TRUE); } } // Return the default settings. return $defaults; }