From aa6235c3c3fd08123d9d1d9eecb07a3e9b72b69f Mon Sep 17 00:00:00 2001 From: David Rothstein Date: Mon, 30 Dec 2013 17:57:55 -0500 Subject: [PATCH] Issue #805236 by merrillholt, ekl1773, marcingy, sun, catch: Cache the query in menu_local_tasks(). --- includes/menu.inc | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/includes/menu.inc b/includes/menu.inc index a93ddad606d..aef557a2478 100644 --- a/includes/menu.inc +++ b/includes/menu.inc @@ -1926,13 +1926,21 @@ function menu_local_tasks($level = 0) { } // Get all tabs (also known as local tasks) and the root page. - $result = db_select('menu_router', NULL, array('fetch' => PDO::FETCH_ASSOC)) - ->fields('menu_router') - ->condition('tab_root', $router_item['tab_root']) - ->condition('context', MENU_CONTEXT_INLINE, '<>') - ->orderBy('weight') - ->orderBy('title') - ->execute(); + $cid = 'local_tasks:' . $router_item['tab_root']; + if ($cache = cache_get($cid, 'cache_menu')) { + $result = $cache->data; + } + else { + $result = db_select('menu_router', NULL, array('fetch' => PDO::FETCH_ASSOC)) + ->fields('menu_router') + ->condition('tab_root', $router_item['tab_root']) + ->condition('context', MENU_CONTEXT_INLINE, '<>') + ->orderBy('weight') + ->orderBy('title') + ->execute() + ->fetchAll(); + cache_set($cid, $result, 'cache_menu'); + } $map = $router_item['original_map']; $children = array(); $tasks = array();