function entity_access_by_field_node_access_records in Open Social 8.8
Same name and namespace in other branches
- 8.9 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_access_records()
- 8 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_access_records()
- 8.2 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_access_records()
- 8.3 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_access_records()
- 8.4 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_access_records()
- 8.5 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_access_records()
- 8.6 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_access_records()
- 8.7 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_access_records()
- 10.3.x modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_access_records()
- 10.0.x modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_access_records()
- 10.1.x modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_access_records()
- 10.2.x modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_access_records()
Implements hook_node_access_records().
File
- modules/
custom/ entity_access_by_field/ entity_access_by_field.module, line 60 - Entity Access By Field module file.
Code
function entity_access_by_field_node_access_records(NodeInterface $node) {
$grants = [];
// Get the field definitions of the node.
$field_definitions = $node
->getFieldDefinitions();
/* @var \Drupal\Core\Field\FieldConfigInterface $field_definition */
foreach ($field_definitions as $field_name => $field_definition) {
// Lets add a node access realm if the field is implemented.
if ($field_definition
->getType() === 'entity_access_field') {
$field_values = $node
->get($field_name)
->getValue();
if (!empty($field_values)) {
foreach ($field_values as $field_value) {
if (isset($field_value['value'])) {
$entityAccessPermissions = \Drupal::getContainer()
->get('entity_access_by_field.permissions');
$realm = $entityAccessPermissions
->getRealmForFieldValue('view', 'node', $node
->getType(), $field_name, $field_value['value']);
if ($node
->isPublished()) {
$grants[] = [
'realm' => $realm,
'gid' => ENTITY_ACCESS_BY_FIELD_ALLOWED_REALM,
'grant_view' => 1,
'grant_update' => 0,
'grant_delete' => 0,
'priority' => 0,
];
}
$grants[] = [
'realm' => $realm . '_author',
'gid' => $node
->getOwnerId(),
'grant_view' => 1,
'grant_update' => 1,
'grant_delete' => 1,
'priority' => 0,
];
}
}
}
}
}
return $grants;
}