Index: includes/cache.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/views/includes/cache.inc,v retrieving revision 1.25.2.4 diff -u -p -r1.25.2.4 cache.inc --- includes/cache.inc 12 Mar 2010 01:51:47 -0000 1.25.2.4 +++ includes/cache.inc 10 Dec 2010 05:40:06 -0000 @@ -100,54 +100,42 @@ function _views_discover_default_views() static $cache = NULL; if (!isset($cache)) { - $index = views_cache_get('views_default_views_index', TRUE); + $list = views_cache_get('views_default_views_list', TRUE); - // Retrieve each cached default view - if (isset($index->data) && is_array($index->data)) { - $cache = array(); - foreach ($index->data as $view_name) { - $data = views_cache_get('views_default:' . $view_name, TRUE); - if (isset($data->data) && is_object($data->data)) { - $cache[$view_name] = $data->data; - } - } + // Check if the cached list exists + if (isset($list->data) && is_array($list->data)) { + $cache = $list->data; + return $cache; } - // If missing index, rebuild the cache - else { - views_include_default_views(); - $cache = array(); - - foreach(module_implements('views_default_views') as $module) { - $results = call_user_func($module . "_views_default_views"); - if (!empty($results) && is_array($results)) { - foreach($results as $name => $view) { - // Only views with a sufficiently high api version are eligible. - if (!empty($view->api_version) && $view->api_version >= 2) { - // Do not cache dead handlers. - $view->destroy(); - if (!isset($cache[$name])) { - $cache[$name] = $view; - } - else { - watchdog('view', "View name '@name' is already taken", array('@name' => $name), WATCHDOG_ERROR); - } + + // If missing data, rebuild the cache + views_include_default_views(); + $cache = array(); + + foreach(module_implements('views_default_views') as $module) { + $results = call_user_func($module . "_views_default_views"); + if (!empty($results) && is_array($results)) { + foreach($results as $name => $view) { + // Only views with a sufficiently high api version are eligible. + if (!empty($view->api_version) && $view->api_version >= 2) { + // Do not cache dead handlers. + $view->destroy(); + if (!isset($cache[$name])) { + $cache[$name] = $view; + } + else { + watchdog('view', "View name '@name' is already taken", array('@name' => $name), WATCHDOG_ERROR); } } } } + } - // Allow modules to modify default views before they are cached. - drupal_alter('views_default_views', $cache); + // Allow modules to modify default views before they are cached. + drupal_alter('views_default_views', $cache); - // Cache the index - $index = array_keys($cache); - views_cache_set('views_default_views_index', $index, TRUE); - - // Cache each view - foreach ($cache as $name => $view) { - views_cache_set('views_default:' . $name, $view, TRUE); - } - } + // Cache the entire set of views + views_cache_set('views_default_views_list', $cache, TRUE); } return $cache;