diff options
-rw-r--r-- | includes/menu.inc | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/includes/menu.inc b/includes/menu.inc index a93ddad60..aef557a24 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(); |