function entity_access_by_field_field_widget_form_alter in Open Social 8.7
Same name and namespace in other branches
- 8.9 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_field_widget_form_alter()
- 8 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_field_widget_form_alter()
- 8.2 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_field_widget_form_alter()
- 8.3 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_field_widget_form_alter()
- 8.4 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_field_widget_form_alter()
- 8.5 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_field_widget_form_alter()
- 8.6 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_field_widget_form_alter()
- 8.8 modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_field_widget_form_alter()
- 10.3.x modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_field_widget_form_alter()
- 10.0.x modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_field_widget_form_alter()
- 10.1.x modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_field_widget_form_alter()
- 10.2.x modules/custom/entity_access_by_field/entity_access_by_field.module \entity_access_by_field_field_widget_form_alter()
Implements hook_field_widget_form_alter().
File
- modules/
custom/ entity_access_by_field/ entity_access_by_field.module, line 180 - Entity Access By Field module file.
Code
function entity_access_by_field_field_widget_form_alter(&$element, FormStateInterface $form_state, $context) {
$field_definition = $context['items']
->getFieldDefinition();
if ($field_definition
->getType() != 'entity_access_field' && $field_definition
->getName() != 'field_visibility') {
return;
}
$form_object = $form_state
->getFormObject();
if (!$form_object instanceof EntityFormInterface) {
return;
}
$config = \Drupal::config('entity_access_by_field.settings');
// Load the current user.
$account = \Drupal::currentUser();
// Set public visibility by default.
$entity = $form_object
->getEntity();
$field_name = $field_definition
->getName();
if ($entity instanceof FieldConfig || !$entity
->hasField($field_name)) {
return;
}
// Do not check if visibility already set and user has access to override
// this option because SM can change the visibility.
if (!$entity
->get($field_name) || !$entity
->get($field_name)
->isEmpty() && $account
->hasPermission('override disabled public visibility')) {
return;
}
$element['#default_value'] = _entity_access_by_field_get_default_visibility($entity);
// Check if the option is enabled and the current user has no permission
// to override disabled public visibility.
if ($config
->get('disable_public_visibility') === 1 && !$account
->hasPermission('override disabled public visibility')) {
switch ($entity
->getEntityTypeId()) {
case 'node':
if ($entity
->get($field_name)
->getString() !== 'public') {
$element['public']['#disabled'] = TRUE;
$element['#description'] = t('The public visibility setting has been disabled. In order to change the visibility to public, please contact a site manager.')
->render();
}
break;
case 'post':
// Remove the public option.
unset($element['#options'][1]);
break;
}
}
}