summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/menu.inc22
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();