You are here

function admin_landing_page_access in Admin 7.2

Same name and namespace in other branches
  1. 6.2 admin.module \admin_landing_page_access()
  2. 6 admin.module \admin_landing_page_access()

Menu access callback for admin landing pages.

For a given landing page, grant access if the current user has access to any of its child menu items.

1 string reference to 'admin_landing_page_access'
admin_menu_alter in ./admin.module
Implements hook_menu_alter().

File

./admin.module, line 156

Code

function admin_landing_page_access($path) {
  static $paths;
  if (!isset($paths[$path])) {
    $paths[$path] = FALSE;

    // Retrieve menu item but without menu_get_item()
    $item = db_select('menu_links')
      ->fields('menu_links')
      ->condition('module', 'system')
      ->condition('router_path', $path)
      ->execute()
      ->fetchAssoc();
    if ($item) {
      $query = db_select('menu_links', 'ml');
      $query
        ->leftJoin('menu_router', 'm', 'm.path = ml.router_path');
      $query
        ->fields('ml');
      $query
        ->fields('m', array_diff(drupal_schema_fields_sql('menu_router'), array(
        'weight',
      )));
      $query
        ->condition('ml.plid', $item['mlid']);
      $result = $query
        ->execute();
      while ($item = $result
        ->fetchAssoc()) {
        _menu_link_translate($item);
        if ($item['access']) {
          $paths[$path] = TRUE;
          break;
        }
      }
    }
  }
  return $paths[$path];
}