return $return;
}
-function elgg_cache_init() {
+/**
+ * @see elgg_reset_system_cache()
+ * @access private
+ */
+function _elgg_load_cache() {
+ global $CONFIG;
+
+ $result = true;
+ $cache_types = array(
+ 'view_paths' => 'views',
+ 'view_types' => 'view_types',
+ );
+ $data = array();
+ foreach ($cache_types as $type => $var_name) {
+ $data[$var_name] = elgg_load_system_cache($type);
+ $result = $result && is_string($data[$var_name]);
+ }
+
+ if ($result) {
+ $CONFIG->system_cache_loaded = true;
+ foreach ($data as $name => $value) {
+ $CONFIG->$name = unserialize($value);
+ }
+ } else {
+ $CONFIG->system_cache_loaded = false;
+ }
+}
+
+/**
+ * @access private
+ */
+function _elgg_cache_init() {
+ global $CONFIG;
+
$viewtype = elgg_get_viewtype();
// Regenerate the simple cache if expired.
}
$CONFIG->lastcache = $lastcached;
}
+
+ // cache system data if enabled and not loaded
+ if ($CONFIG->system_cache_enabled && !$CONFIG->system_cache_loaded) {
+ $cache_types = array(
+ 'view_paths' => 'views',
+ 'view_types' => 'view_types',
+ );
+ $data = array();
+ foreach ($cache_types as $type => $var_name) {
+ elgg_save_system_cache($type, serialize($CONFIG->$var_name));
+ }
+ }
}
-elgg_register_event_handler('ready', 'system', 'elgg_cache_init');
\ No newline at end of file
+elgg_register_event_handler('ready', 'system', '_elgg_cache_init');
return false;
}
- // Load view caches if available
- $cached_view_paths = elgg_load_system_cache('view_paths');
- $cached_view_types = elgg_load_system_cache('view_types');
- $cached_view_info = is_string($cached_view_paths) && is_string($cached_view_types);
-
- if ($cached_view_info) {
- $CONFIG->views = unserialize($cached_view_paths);
- $CONFIG->view_types = unserialize($cached_view_types);
-
- // don't need to register views
+ if (elgg_get_config('system_cache_loaded')) {
$start_flags = $start_flags & ~ELGG_PLUGIN_REGISTER_VIEWS;
}
}
}
- // Cache results
- if (!$cached_view_info) {
- elgg_save_system_cache('view_paths', serialize($CONFIG->views));
- elgg_save_system_cache('view_types', serialize($CONFIG->view_types));
- }
-
return $return;
}