summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/bootstrap.inc3
-rw-r--r--includes/theme.inc9
2 files changed, 10 insertions, 2 deletions
diff --git a/includes/bootstrap.inc b/includes/bootstrap.inc
index a5a7d5d8b..cda1bb8b8 100644
--- a/includes/bootstrap.inc
+++ b/includes/bootstrap.inc
@@ -1388,6 +1388,9 @@ function drupal_anonymous_user($session = '') {
* @param $new_phase
* A boolean, set to FALSE if calling drupal_bootstrap from inside a
* function called from drupal_bootstrap (recursion).
+ * @return
+ * The most recently completed phase.
+ *
*/
function drupal_bootstrap($phase = NULL, $new_phase = TRUE) {
$final_phase = &drupal_static(__FUNCTION__ . '_final_phase');
diff --git a/includes/theme.inc b/includes/theme.inc
index ca0e533aa..736662db6 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -251,13 +251,18 @@ function _theme_load_registry($theme, $base_theme = NULL, $theme_engine = NULL)
$cache = cache_get("theme_registry:$theme->name", 'cache');
if (isset($cache->data)) {
$registry = $cache->data;
+ _theme_set_registry($registry);
}
else {
// If not, build one and cache it.
$registry = _theme_build_registry($theme, $base_theme, $theme_engine);
- _theme_save_registry($theme, $registry);
+ // Only persist this registry if all modules are loaded. This assures a
+ // complete set of theme hooks.
+ if (drupal_get_bootstrap_phase() == DRUPAL_BOOTSTRAP_FULL) {
+ _theme_save_registry($theme, $registry);
+ _theme_set_registry($registry);
+ }
}
- _theme_set_registry($registry);
}
/**