diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-09-11 01:28:34 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-09-11 01:28:34 +0000 |
commit | 38502757b9a1c398d4a25b8cd559474ed1426456 (patch) | |
tree | 20152a0889eb87fe3121a2c2000a873795aad953 /includes | |
parent | 0a5c95af4391595c94aa4f61b3eac6af602652f9 (diff) | |
download | brdo-38502757b9a1c398d4a25b8cd559474ed1426456.tar.gz brdo-38502757b9a1c398d4a25b8cd559474ed1426456.tar.bz2 |
#566094 by Arancaytar and smk-ka: Fixed hierarchy generation in menu_tree_data().
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; |