Index: views.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/views/views.module,v retrieving revision 1.166.2.45 diff -u -p -r1.166.2.45 views.module --- views.module 12 Jan 2008 18:35:02 -0000 1.166.2.45 +++ views.module 21 Apr 2008 02:33:35 -0000 @@ -179,7 +179,10 @@ function views_menu_admin_items(&$items, * overly intensive. */ function views_get_all_urls() { - $cache = cache_get("views_urls", 'cache_views'); + static $cache; + if (!isset($cache)) { + $cache = cache_get("views_urls", 'cache_views'); + } if ($cache == 0) { $views = array(); $used = array(); @@ -565,11 +568,13 @@ function views_build_view($type, &$view, } $query = db_rewrite_sql($info['query'], 'node'); + $query = str_replace('[SUBQUERY]', $info['subquery'], $query); $items = array(); if ($query) { if ($view->use_pager) { $cquery = db_rewrite_sql($info['countquery'], 'node', 'nid', $info['rewrite_args']); + $cquery = str_replace('[SUBQUERY]', $info['subquery'], $cquery); $result = pager_query($query, $view->pager_limit, $view->use_pager - 1, $cquery, $info['args']); $view->total_rows = $GLOBALS['pager_total_items'][$view->use_pager - 1]; } @@ -704,6 +709,20 @@ function _views_get_timezone() { return $timezone; } +/* + * Determine whether or not the database supports sub-queries. + */ +function _views_is_subquery() { + switch ($GLOBALS['db_type']) { + case 'mysql': + case 'mysqli': + return version_compare(mysql_get_server_info(), '4.1', '>='); + + case 'pgsql': + return TRUE; + } +} + /** * Figure out what the URL of the view we're currently looking at is. */ @@ -910,15 +929,21 @@ function views_load_view($arg) { */ function _views_load_view($arg) { static $cache = array(); + static $cache_null = array(); + $which = is_numeric($arg) ? 'vid' : 'name'; if (isset($cache[$which][$arg])) { return $cache[$which][$arg]; } + if (isset($cache_null[$which][$arg])) { + return NULL; + } $where = (is_numeric($arg) ? "v.vid = %d" : "v.name = '%s'"); $view = db_fetch_object(db_query("SELECT v.* FROM {view_view} v WHERE $where", $arg)); if (!$view->name) { + $cache_null[$which][$arg] = TRUE; return NULL; } @@ -2144,4 +2169,4 @@ function views_form_alter($form_id, &$fo // An implementation of hook_devel_caches() from devel.module. Must be in views.module so it always is included. function views_devel_caches() { return array('cache_views'); -} \ No newline at end of file +}