public static function WebformPermissions::processSelect in Webform 6.x
Same name and namespace in other branches
- 8.5 src/Element/WebformPermissions.php \Drupal\webform\Element\WebformPermissions::processSelect()
Processes a webform roles (select) element.
Overrides Select::processSelect
File
- src/
Element/ WebformPermissions.php, line 31
Class
- WebformPermissions
- Provides a webform roles (select) element.
Namespace
Drupal\webform\ElementCode
public static function processSelect(&$element, FormStateInterface $form_state, &$complete_form) {
/** @var \Drupal\user\PermissionHandlerInterface $permission_handler */
$permission_handler = \Drupal::service('user.permissions');
/** @var \Drupal\Core\Extension\ModuleHandlerInterface $module_handler */
$module_handler = \Drupal::service('module_handler');
// Get list of permissions as options.
$options = [];
$permissions = $permission_handler
->getPermissions();
foreach ($permissions as $perm => $perm_item) {
$provider = $perm_item['provider'];
$display_name = $module_handler
->getName($provider);
$options[$display_name][$perm] = strip_tags($perm_item['title']);
}
$element['#options'] = $options;
$element['#select2'] = TRUE;
// Must convert this element['#type'] to a 'select' to prevent
// "Illegal choice %choice in %name element" validation error.
// @see \Drupal\Core\Form\FormValidator::performRequiredValidation
$element['#type'] = 'select';
WebformElementHelper::process($element);
return parent::processSelect($element, $form_state, $complete_form);
}