advanced_menu_core.module in Advanced Menu 7
Same filename and directory in other branches
Provides advanced menu permissioning.
File
core/advanced_menu_core.moduleView source
<?php
// $Id: advanced_menu_core.module $
/**
 * @file
 * Provides advanced menu permissioning.
 */
/**
 * Implementation of hook_permission().
 */
function advanced_menu_core_permission() {
  return array(
    'administer advanced menu permissions' => array(
      'title' => t('Administer Advanced Menu Permissions'),
      'description' => t('Set permissions for the Advanced Menu module.'),
    ),
  );
}
/**
 * Implements hook_menu().
 */
function advanced_menu_core_menu() {
  $items['admin/structure/menu/advanced'] = array(
    'title' => 'Advanced Menus',
    'description' => 'Description of Advanced Menus and a small reminder that Advanced Menus is active.',
    'page callback' => 'advanced_menu_core_about_page',
    'access callback' => 'advanced_menu_core_access',
    'access arguments' => array(
      'administer menu',
      'admin',
    ),
    'file' => 'advanced_menu_core.admin.inc',
    'type' => MENU_LOCAL_TASK,
    'weight' => 10,
  );
  return $items;
}
/**
 * Implementation of hook_menu_alter().
 */
function advanced_menu_core_menu_alter(&$callbacks) {
  $callbacks['admin']['access callback'] = 'advanced_menu_core_access';
  $callbacks['admin']['access arguments'] = array(
    'administer menu',
    'basic',
  );
  $callbacks['admin/structure']['access callback'] = 'advanced_menu_core_access';
  $callbacks['admin/structure']['access arguments'] = array(
    'administer menu',
    'basic',
  );
  $callbacks['admin/structure/menu']['page callback'] = 'advanced_menu_core_overview_page';
  $callbacks['admin/structure/menu']['file'] = 'advanced_menu_core.admin.inc';
  $callbacks['admin/structure/menu']['file path'] = drupal_get_path('module', 'advanced_menu_core');
  $callbacks['admin/structure/menu']['access callback'] = 'advanced_menu_core_access';
  $callbacks['admin/structure/menu']['access arguments'] = array(
    'administer menu',
    'basic',
  );
  $callbacks['admin/structure/menu/list']['page callback'] = 'advanced_menu_core_overview_page';
  $callbacks['admin/structure/menu/list']['file'] = 'advanced_menu_core.admin.inc';
  $callbacks['admin/structure/menu/list']['file path'] = drupal_get_path('module', 'advanced_menu_core');
  $callbacks['admin/structure/menu/list']['access callback'] = 'advanced_menu_core_access';
  $callbacks['admin/structure/menu/list']['access arguments'] = array(
    'administer menu',
    'basic',
  );
  $callbacks['admin/structure/menu/add']['access callback'] = 'advanced_menu_core_access';
  $callbacks['admin/structure/menu/add']['access arguments'] = array(
    'administer menu',
    'admin',
  );
  $callbacks['admin/structure/menu/settings']['access callback'] = 'advanced_menu_core_access';
  $callbacks['admin/structure/menu/settings']['access arguments'] = array(
    'administer menu',
    'admin',
  );
  $callbacks['admin/structure/menu/item/%menu_link/delete']['access callback'] = 'advanced_menu_core_access';
  $callbacks['admin/structure/menu/item/%menu_link/delete']['access arguments'] = array(
    'administer menu',
    'edit item',
    4,
  );
  $callbacks['admin/structure/menu/item/%menu_link/edit']['access callback'] = 'advanced_menu_core_access';
  $callbacks['admin/structure/menu/item/%menu_link/edit']['access arguments'] = array(
    'administer menu',
    'edit item',
    4,
  );
  $callbacks['admin/structure/menu/item/%menu_link/reset']['access callback'] = 'advanced_menu_core_access';
  $callbacks['admin/structure/menu/item/%menu_link/reset']['access arguments'] = array(
    'administer menu',
    'edit item',
    4,
  );
  $callbacks['admin/structure/menu/manage/%menu']['access callback'] = 'advanced_menu_core_access';
  $callbacks['admin/structure/menu/manage/%menu']['access arguments'] = array(
    'administer menu',
    'edit menu',
    4,
  );
  $callbacks['admin/structure/menu/manage/%menu/add']['access callback'] = 'advanced_menu_core_access';
  $callbacks['admin/structure/menu/manage/%menu/add']['access arguments'] = array(
    'administer menu',
    'edit menu',
    4,
  );
  $callbacks['admin/structure/menu/manage/%menu/delete']['access callback'] = 'advanced_menu_core_access';
  $callbacks['admin/structure/menu/manage/%menu/delete']['access arguments'] = array(
    'administer menu',
    'edit menu',
    4,
  );
  $callbacks['admin/structure/menu/manage/%menu/edit']['access callback'] = 'advanced_menu_core_access';
  $callbacks['admin/structure/menu/manage/%menu/edit']['access arguments'] = array(
    'administer menu',
    'edit menu',
    4,
  );
}
/**
 * Implementation of hook_access().
 */
function advanced_menu_core_access() {
  global $user;
  $roleMenus = array();
  $args = func_get_args();
  $retVal = user_access($args[0]);
  if (module_exists('advanced_menu_menu_admin')) {
    $roleMenus = _advanced_menu_menu_admin_menus();
  }
  if (count($args) > 1) {
    switch ($args[1]) {
      case 'anonymous':
        $retVal = TRUE;
        break;
      case 'edit node':
      case 'basic':
        if (count($roleMenus) > 0 || user_access($args[0])) {
          $retVal = TRUE;
        }
        break;
      case 'admin':
        $retVal = user_access($args[0]);
        break;
      case 'edit menu':
      case 'edit item':
        if (isset($roleMenus)) {
          $retval = FALSE;
          if (isset($roleMenus[$args[2]['menu_name']])) {
            $retVal = TRUE;
          }
        }
        break;
    }
  }
  return $retVal;
}Functions
| 
            Name | 
                  Description | 
|---|---|
| advanced_menu_core_access | Implementation of hook_access(). | 
| advanced_menu_core_menu | Implements hook_menu(). | 
| advanced_menu_core_menu_alter | Implementation of hook_menu_alter(). | 
| advanced_menu_core_permission | Implementation of hook_permission(). |