From 38502757b9a1c398d4a25b8cd559474ed1426456 Mon Sep 17 00:00:00 2001 From: Angie Byron Date: Fri, 11 Sep 2009 01:28:34 +0000 Subject: #566094 by Arancaytar and smk-ka: Fixed hierarchy generation in menu_tree_data(). --- includes/menu.inc | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'includes') diff --git a/includes/menu.inc b/includes/menu.inc index 3a3ef9306..1e6f13445 100644 --- a/includes/menu.inc +++ b/includes/menu.inc @@ -1225,28 +1225,29 @@ function menu_tree_data(array $links, array $parents = array(), $depth = 1) { * the next menu link. */ function _menu_tree_data(&$links, $parents, $depth) { - $done = FALSE; $tree = array(); - while (!$done && $item = array_pop($links)) { + while ($item = array_pop($links)) { // We need to determine if we're on the path to root so we can later build // the correct active trail and breadcrumb. $item['in_active_trail'] = in_array($item['mlid'], $parents); - // Look ahead to the next link, but leave it on the array so it's available - // to other recursive function calls if we return or build a sub-tree. - $next = end($links); // Add the current link to the tree. $tree[$item['mlid']] = array( 'link' => $item, 'below' => array(), ); + // Look ahead to the next link, but leave it on the array so it's available + // to other recursive function calls if we return or build a sub-tree. + $next = end($links); // Check whether the next link is the first in a new sub-tree. if ($next && $next['depth'] > $depth) { // Recursively call _menu_tree_data to build the sub-tree. $tree[$item['mlid']]['below'] = _menu_tree_data($links, $parents, $next['depth']); + // Fetch next link after filling the sub-tree. + $next = end($links); } - else { - // Determine if we should exit the loop and return. - $done = (!$next || $next['depth'] < $depth); + // Determine if we should exit the loop and return. + if (!$next || $next['depth'] < $depth) { + break; } } return $tree; -- cgit v1.2.3