diff options
Diffstat (limited to 'includes')
-rw-r--r-- | includes/menu.inc | 17 |
1 files changed, 9 insertions, 8 deletions
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; |