You are here

function domain_menu_access_translated_menu_link_alter in Domain Menu Access 7

Same name and namespace in other branches
  1. 6 domain_menu_access.module \domain_menu_access_translated_menu_link_alter()

Implements hook_translated_menu_link_alter().

File

./domain_menu_access.module, line 44
Extension for Domain module, which allows showing/hiding menu items per domain.

Code

function domain_menu_access_translated_menu_link_alter(&$item, $map) {
  global $_domain;

  // Do not hide menu item when we are editing either a specific menu item,
  // or a menu it belongs to, to avoid setting it to hidden it by accident.
  // The challenge here is that we want to keep original $item['hidden']
  // value only in the menu item edit form, while still use value altered
  // by this hook when menu item is displayed outside of edit form.
  // @TODO: Rethink?
  // I still don't quite like this check, although it's already better
  // (again) compared to its previous versions.
  if ($_GET['q'] == 'admin/structure/menu/manage/' . $item['menu_name'] || $_GET['q'] == "admin/structure/menu/item/{$item['mlid']}/edit") {
    foreach (debug_backtrace() as $trace) {
      if (in_array($trace['function'], array(
        'menu_overview_form',
        'menu_get_item',
      ))) {
        return;
      }
    }
  }

  // Process menu items to be shown per domain.
  if (isset($item['options']['domain_menu_access']['show']) && count($item['options']['domain_menu_access']['show']) && $item['hidden'] == 0) {
    $item['hidden'] = isset($item['options']['domain_menu_access']['show']['d' . $_domain['domain_id']]) && $item['options']['domain_menu_access']['show']['d' . $_domain['domain_id']] ? 0 : 1;
  }

  // Process menu items to be hidden per domain.
  if (isset($item['options']['domain_menu_access']['hide']['d' . $_domain['domain_id']]) && $item['hidden'] == 0) {
    $item['hidden'] = $item['options']['domain_menu_access']['hide']['d' . $_domain['domain_id']] ? 1 : 0;
  }
}