You are here

function _megamenu_get_menu_tree in Megamenu 6.2

Same name and namespace in other branches
  1. 6 megamenu.utilities.inc \_megamenu_get_menu_tree()
  2. 7 megamenu.utilities.inc \_megamenu_get_menu_tree()

Retrieve a menu and pre-style before theming

This function currently removes all "hidden" items, which could be handled in the single iteration of the theme function. But, I forsee a need for other prep work that might be simmplfied with this second function

Will be used in the future to add/alter attributes prior to theming

Parameters

$menuname: The name of the menu to extract

Return value

The pre-styled menu tree

1 call to _megamenu_get_menu_tree()
theme_megamenu_menu_tree in ./megamenu.module
Theme a menu tree

File

./megamenu.utilities.inc, line 49
Helper/utility functions

Code

function _megamenu_get_menu_tree($menuname) {
  $menutree = menu_tree_all_data($menuname);
  $menutree_page = menu_tree_page_data($menuname);

  // Contains active trail
  foreach ($menutree as $tier_1_key => $tier_1_item) {
    if ($menutree_page[$tier_1_key]['link']['in_active_trail']) {
      $menutree[$tier_1_key]['link']['in_active_trail'] = TRUE;
    }
    if ($tier_1_item['link']['hidden'] == 1 || empty($tier_1_item['link']['link_title'])) {
      unset($menutree[$tier_1_key]);
    }
    else {
      if ($tier_1_item['below']) {
        foreach ($tier_1_item['below'] as $tier_2_key => $tier_2_item) {
          if ($menutree_page[$tier_1_key]['below'][$tier_2_key]['link']['in_active_trail']) {
            $menutree[$tier_1_key]['below'][$tier_2_key]['link']['in_active_trail'] = TRUE;
          }
          if ($tier_2_item['link']['hidden'] == 1 || empty($tier_2_item['link']['link_title'])) {
            unset($menutree[$tier_1_key]['below'][$tier_2_key]);
          }
          else {
            if ($tier_2_item['below']) {
              foreach ($tier_2_item['below'] as $tier_3_key => $tier_3_item) {
                if ($menutree_page[$tier_1_key]['below'][$tier_2_key]['below'][$tier_3_key]['link']['in_active_trail']) {
                  $menutree[$tier_1_key]['below'][$tier_2_key]['below'][$tier_3_key]['link']['in_active_trail'] = TRUE;
                }
                if ($tier_3_item['link']['hidden'] == 1 || empty($tier_3_item['link']['link_title'])) {
                  unset($menutree[$tier_1_key]['below'][$tier_2_key]['below'][$tier_3_key]);
                }
                else {
                  if ($tier_3_item['below']) {
                    unset($menutree[$tier_1_key]['below'][$tier_2_key]['below'][$tier_3_key]['below']);
                  }
                }
              }

              // end level 3 loop
            }
          }
        }

        // end level 2 loop
      }
    }
  }

  // end level 1 loop
  return $menutree;
}