You are here

function webform_access_form_user_form_alter in Webform 6.x

Same name and namespace in other branches
  1. 8.5 modules/webform_access/webform_access.module \webform_access_form_user_form_alter()

Implements hook_form_FORM_ID_alter() for user form.

Add the webform access group to an individual user's account page.

File

modules/webform_access/webform_access.module, line 405
Provides webform access controls for webform nodes.

Code

function webform_access_form_user_form_alter(&$form, FormStateInterface $form_state) {

  // Make sure some webform access groups exist before displaying
  // the webform access details widget.
  if (!WebformAccessGroup::loadMultiple()) {
    return;
  }

  // Only display the webform access detail widget if the current user can
  // administer webform and users.
  if (!\Drupal::currentUser()
    ->hasPermission('administer webform') || !\Drupal::currentUser()
    ->hasPermission('administer users')) {
    return;
  }
  $account = $form_state
    ->getFormObject()
    ->getEntity();
  $default_value = \Drupal::database()
    ->select('webform_access_group_user', 'gu')
    ->fields('gu', [
    'group_id',
  ])
    ->condition('uid', $account
    ->id())
    ->execute()
    ->fetchCol();
  $form['webform_access'] = [
    '#type' => 'details',
    '#title' => t('Webform access'),
    '#open' => TRUE,
    '#weight' => 5,
  ];
  $form['webform_access']['webform_access_group'] = _webform_access_group_build_element($default_value, $form, $form_state);
  $form['actions']['submit']['#submit'][] = '_webform_access_user_profile_form_submit';
}