function entity_access_by_field_node_presave in Open Social 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_presave()
- 8.2 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_presave()
- 8.3 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_presave()
- 8.4 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_presave()
- 8.5 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_presave()
- 8.6 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_presave()
- 8.7 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_presave()
- 8.8 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_presave()
- 10.3.x modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_presave()
- 10.0.x modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_presave()
- 10.1.x modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_presave()
- 10.2.x modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_node_presave()
Implements hook_ENTITY_TYPE_presave().
File
- modules/
custom/ entity_access_by_field/ entity_access_by_field.module, line 141 - Entity Access By Field module file.
Code
function entity_access_by_field_node_presave(NodeInterface $node) {
$original = $node->original;
// 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') {
if (isset($node->status) && isset($original->status) && $node->status->value != $original->status->value) {
// Invalidate cache tags.
Cache::invalidateTags([
'activity_list',
]);
}
if ($node
->get($field_name)
->isEmpty()) {
$default_visibility = _entity_access_by_field_get_default_visibility($node);
$node
->get($field_name)
->setValue($default_visibility);
}
}
}
}