You are here

function user_registrationpassword_admin_settings_submit in User registration password 8

Same name and namespace in other branches
  1. 6 user_registrationpassword.module \user_registrationpassword_admin_settings_submit()
  2. 7 user_registrationpassword.module \user_registrationpassword_admin_settings_submit()

Submit handler for the user admin form.

1 string reference to 'user_registrationpassword_admin_settings_submit'
user_registrationpassword_form_user_admin_settings_alter in ./user_registrationpassword.module
Implements hook_form_FORM_ID_alter().

File

./user_registrationpassword.module, line 150
Enables password creation on registration form.

Code

function user_registrationpassword_admin_settings_submit(&$form, FormStateInterface $form_state) {
  $config = \Drupal::configFactory()
    ->getEditable('user_registrationpassword.settings');
  $mail_config = \Drupal::configFactory()
    ->getEditable('user_registrationpassword.mail');
  $user_config = \Drupal::configFactory()
    ->getEditable('user.settings');

  // The option we implement.
  $user_registrationpassword_type = $form_state
    ->getValue('user_registrationpassword_registration');
  $config
    ->set('registration', $user_registrationpassword_type);

  // Core option.
  $user_register = $form_state
    ->getValue('user_register');

  // Test if we are enabled. For this, both options have to be set correctly
  // because then and only then we can function.
  // @see _user_mail_notify()
  if ($user_registrationpassword_type == UserRegistrationPassword::VERIFICATION_PASS && $user_register == UserInterface::REGISTER_VISITORS) {
    $user_config
      ->set('verify_mail', 0)
      ->set('notify.register_pending_approval', 0)
      ->set('notify.register_no_approval_required', 0);
  }
  else {

    // Our option.
    switch ($user_registrationpassword_type) {
      case UserRegistrationPassword::NO_VERIFICATION:
        $user_config
          ->set('verify_mail', 0);
        break;
      case UserRegistrationPassword::VERIFICATION_DEFAULT:
      case UserRegistrationPassword::VERIFICATION_PASS:
        $user_config
          ->set('verify_mail', 1);
        break;
    }

    // Core option.
    switch ($user_register) {
      case UserInterface::REGISTER_ADMINISTRATORS_ONLY:
        $user_config
          ->set('notify.register_pending_approval', 0)
          ->set('notify.register_no_approval_required', 0);
        break;
      case UserInterface::REGISTER_VISITORS:
      case UserInterface::REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL:
        $user_config
          ->set('notify.register_pending_approval', 1)
          ->set('notify.register_no_approval_required', 1);
        break;
    }
  }

  // Save mail data.
  $mail_config
    ->set('register_confirmation_with_pass.subject', $form_state
    ->getValue('user_registrationpassword_register_confirmation_with_pass_subject'))
    ->set('register_confirmation_with_pass.body', $form_state
    ->getValue('user_registrationpassword_register_confirmation_with_pass_body'));

  // Save or revert expiration limits variables.
  $config
    ->set('registration_ftll_expire', $form_state
    ->getValue('user_registrationpassword_registration_ftll_expire'))
    ->set('registration_ftll_timeout', $form_state
    ->getValue('user_registrationpassword_registration_ftll_timeout'));

  // Save configs.
  $config
    ->save();
  $mail_config
    ->save();
  $user_config
    ->save();
}