You are here

function _megamenu_get_menu_tree in Megamenu 7

Same name and namespace in other branches
  1. 6.2 megamenu.utilities.inc \_megamenu_get_menu_tree()
  2. 6 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()
megamenu_theme_menu_tree in ./megamenu.module
Theme a menu tree.

File

./megamenu.utilities.inc, line 50
Helper/utility functions for Megamenu.

Code

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

  // Contains active trail.
  $menutree_page = menu_tree_page_data($menuname);
  foreach ($menutree as $tier_1_key => $tier_1_item) {
    if ($menutree_page && $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]);
    }
    elseif ($tier_1_item['below']) {
      foreach ($tier_1_item['below'] as $tier_2_key => $tier_2_item) {
        if ($menutree[$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[$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]);
              }
              elseif ($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;
}