function menu_item_visibility_node_access in Menu Item Visibility 8
Implements hook_node_access().
File
- ./
menu_item_visibility.module, line 111 - Allows restricting access to menu items and menu path per role.
Code
function menu_item_visibility_node_access(NodeInterface $node, $op, AccountInterface $account) {
$config = \Drupal::config('menu_item_visibility.settings');
$mlid_list = $config
->get('mlid');
if (!empty($mlid_list)) {
$mlid_list = array_keys(array_filter($mlid_list, function ($value) {
return !empty($value['access_check']);
}));
}
if (!empty($mlid_list)) {
foreach ($mlid_list as $value) {
$check_result = \Drupal::database()
->select('menu_tree', 'mtr')
->fields('mtr', array(
'route_param_key',
))
->condition('id', $value, '=')
->execute()
->fetchAssoc();
$visiblity = menu_item_visibility_check($value);
if (!empty($check_result)) {
$param_key = $check_result['route_param_key'];
$params = explode("=", $param_key);
}
if (isset($params[1]) && $node
->id() == $params[1] && !$visiblity) {
return AccessResult::forbidden();
}
}
}
return AccessResult::neutral()
->setCacheMaxAge(0);
}