You are here

function allowed_languages_form_user_form_alter in Allowed Languages 8

Same name and namespace in other branches
  1. 2.x allowed_languages.module \allowed_languages_form_user_form_alter()

Add the allowed languages checkboxes to the user form.

Parameters

array $form: The user form.

\Drupal\Core\Form\FormStateInterface $form_state: The user form state.

File

./allowed_languages.module, line 123
Contains allowed_languages.module.

Code

function allowed_languages_form_user_form_alter(array &$form, FormStateInterface $form_state) {

  // If user is not allowed to administer settings, return at once.
  if (!\Drupal::currentUser()
    ->hasPermission('administer allowed languages')) {
    return;
  }

  /** @var \Drupal\user\UserInterface $user */
  $user = $form_state
    ->getFormObject()
    ->getEntity();
  $languages = allowed_languages_get_language_options();
  $users_allowed_languages = allowed_languages_get_allowed_languages_for_user($user);

  // Merge the array of languages with the all languages option.
  $language_options = [
    'all' => t('Allow all languages'),
  ] + $languages;

  // Diff the keys from the languages against the users allowed languages to
  // determine if the all languages checkbox should be checked.
  $not_allowed_languages = array_diff(array_keys($languages), $users_allowed_languages);
  if (!$not_allowed_languages) {
    $users_allowed_languages[] = 'all';
  }
  $form['allowed_languages'] = [
    '#tree' => TRUE,
    '#type' => 'details',
    '#title' => t('Allowed languages'),
    '#open' => TRUE,
  ];
  $form['allowed_languages']['languages'] = [
    '#type' => 'checkboxes',
    '#options' => $language_options,
    '#default_value' => $users_allowed_languages,
  ];
  $form['actions']['submit']['#submit'][] = 'allowed_languages_user_form_submit';
  $form['#attached']['library'][] = 'allowed_languages/user';
}