You are here

function menu_admin_per_menu_filter_parent_options in Menu Admin per Menu 8

Removes menu items for menus a user does not have permission to access.

Parameters

\Drupal\Core\Session\AccountInterface $account: The user to check for access.

array $options: An array of menu item labels keyed by menu item ID.

Return value

array Filtered menu item labels keyed by menu item ID.

3 calls to menu_admin_per_menu_filter_parent_options()
menu_admin_per_menu_form_menu_link_content_form_alter in ./menu_admin_per_menu.module
Implements hook_form_ID_alter() for 'menu_link_content_form'.
menu_admin_per_menu_form_menu_link_edit_alter in ./menu_admin_per_menu.module
Implements hook_form_ID_alter() for 'menu_link_edit'.
menu_admin_per_menu_form_node_form_alter in ./menu_admin_per_menu.module
Implements hook_form_ID_alter() for 'node_form'.

File

./menu_admin_per_menu.module, line 94
Module file for menu_admin_per_menu.

Code

function menu_admin_per_menu_filter_parent_options(AccountInterface $account, array $options) {

  /** @var \Drupal\menu_admin_per_menu\MenuAdminPerMenuAccessInterface $allowedMenusService */
  $allowedMenusService = \Drupal::service('menu_admin_per_menu.allowed_menus');
  $allowed_menus = $allowedMenusService
    ->getPerMenuPermissions($account);
  foreach ($options as $key => $option) {
    list($menu) = explode(':', $key, 2);
    if (!in_array($menu, $allowed_menus)) {
      unset($options[$key]);
    }
  }
  return $options;
}