function permissions_by_term_node_access_records in Permissions by Term 8
Same name and namespace in other branches
- 8.2 permissions_by_term.module \permissions_by_term_node_access_records()
Implements hook_node_access_records().
Permissions can be rebuild at /admin/reports/status/rebuild.
File
- ./
permissions_by_term.module, line 296 - Allows access to terms in a vocabulary to be limited by user or role.
Code
function permissions_by_term_node_access_records(\Drupal\node\NodeInterface $node) {
// Do not return any grants for nodes that this module doesn't manage.
if (!$node
->isPublished()) {
return;
}
$has_term_access_restrictions = FALSE;
/* @var \Drupal\permissions_by_term\Service\AccessStorage $access_storage */
$access_storage = \Drupal::service('permissions_by_term.access_storage');
foreach ($access_storage
->getTidsByNid($node
->id()) as $tid) {
/* @var \Drupal\permissions_by_term\Service\AccessCheck $access_check_service */
$access_check_service = \Drupal::service('permissions_by_term.access_check');
if ($node
->language()
->getId() == 'und') {
// Current system default language
$language = \Drupal::languageManager()
->getCurrentLanguage()
->getId();
}
else {
$language = $node
->language()
->getId();
}
if ($access_check_service
->isAnyPermissionSetForTerm($tid, $language)) {
$has_term_access_restrictions = TRUE;
break;
}
}
if (!$has_term_access_restrictions) {
return;
}
/**
* @var \Drupal\permissions_by_term\Service\NodeAccess $nodeAccess
*/
$nodeAccess = \Drupal::service('permissions_by_term.node_access');
$grantObject = $nodeAccess
->createGrant($node
->id(), $node
->id());
$grants[] = [
'realm' => $grantObject->realm,
'gid' => $grantObject->gid,
'grant_view' => $grantObject->grant_view,
'grant_update' => $grantObject->grant_update,
'grant_delete' => $grantObject->grant_delete,
'nid' => $node
->id(),
];
return $grants;
}