function webform_group_form_webform_settings_access_form_alter in Webform 8.5
Same name and namespace in other branches
- 6.x modules/webform_group/webform_group.module \webform_group_form_webform_settings_access_form_alter()
Implements hook_form_FORM_ID_alter() for webform settings access form.
File
- modules/
webform_group/ webform_group.module, line 150 - Provides a Webform integration with the Group module.
Code
function webform_group_form_webform_settings_access_form_alter(&$form, FormStateInterface $form_state) {
/** @var \Drupal\webform_group\WebformGroupManagerInterface $webform_group_manager */
$webform_group_manager = \Drupal::service('webform_group.manager');
/** @var Drupal\webform\EntitySettings\WebformEntitySettingsAccessForm $entity_form */
$entity_form = $form_state
->getFormObject();
/** @var \Drupal\webform\WebformInterface $webform */
$webform = $entity_form
->getEntity();
$weight = 0;
$access_rules = $webform_group_manager
->getAccessRules($webform);
foreach ($access_rules as $permission => $access_rule) {
if ($permission === 'administer') {
// Create dedicated 'Administer submission' details.
$form['access']['administer_submissions'] = [
'#type' => 'details',
'#title' => t('Administer submissions (Groups only)'),
'#open' => FALSE,
'#weight' => $weight++,
];
$form['access']['administer_submissions']['group_roles'] = [
'#type' => 'webform_group_roles',
'#title' => t('Group (node) roles'),
'#default_value' => $access_rules[$permission]['group_roles'],
];
}
else {
$form['access'][$permission]['group_roles'] = [
'#type' => 'webform_group_roles',
'#title' => t('Group (node) roles'),
'#default_value' => $access_rules[$permission]['group_roles'],
];
$form['access'][$permission]['group_roles_message'] = [
'#type' => 'webform_message',
'#message_message' => t('Anonymous and authenticated users are able to access this webform, which will result in group roles being ignored.'),
'#message_type' => 'warning',
'#message_close' => TRUE,
'#message_storage' => WebformMessage::STORAGE_SESSION,
'#states' => [
'visible' => [
[
':input[name="access[' . $permission . '][roles][anonymous]"]' => [
'checked' => TRUE,
],
],
'or',
[
':input[name="access[' . $permission . '][roles][authenticated]"]' => [
'checked' => TRUE,
],
],
],
],
];
}
$form['access'][$permission]['#weight'] = $weight++;
}
}