You are here

public function SettingsForm::validateForm in Auto Purge Users 8.2

Same name and namespace in other branches
  1. 8.3 src/Form/SettingsForm.php \Drupal\purge_users\Form\SettingsForm::validateForm()
  2. 8 src/Form/SettingsForm.php \Drupal\purge_users\Form\SettingsForm::validateForm()

Form validation handler.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Overrides FormBase::validateForm

File

src/Form/SettingsForm.php, line 357

Class

SettingsForm
Class SettingsForm.

Namespace

Drupal\purge_users\Form

Code

public function validateForm(array &$form, FormStateInterface $form_state) {
  $login_never_value = $form_state
    ->getValue([
    'user_never_lastlogin_value',
  ]);
  $login_never_period = $form_state
    ->getValue([
    'user_never_lastlogin_period',
  ]);
  $login_value = $form_state
    ->getValue([
    'user_lastlogin_value',
  ]);
  $login_period = $form_state
    ->getValue([
    'user_lastlogin_period',
  ]);
  $inactive_value = $form_state
    ->getValue([
    'user_inactive_value',
  ]);
  $inactive_period = $form_state
    ->getValue([
    'user_inactive_period',
  ]);
  $block_value = $form_state
    ->getValue([
    'user_blocked_value',
  ]);
  $block_period = $form_state
    ->getValue([
    'user_blocked_period',
  ]);
  $user_before_notification_period = $form_state
    ->getValue([
    'user_before_notification_period',
  ]);
  $user_before_notification_value = $form_state
    ->getValue([
    'user_before_notification_value',
  ]);
  $enable_blocked = $form_state
    ->getValue([
    'enabled_blocked_users',
  ]);
  $enable_loggedin = $form_state
    ->getValue([
    'enabled_loggedin_users',
  ]);
  $enable_never_loggedin = $form_state
    ->getValue([
    'enabled_never_loggedin_users',
  ]);
  $enable_inactive = $form_state
    ->getValue([
    'enabled_inactive_users',
  ]);
  $disregard_blocked = $form_state
    ->getValue([
    'disregard_blocked_users',
  ]);

  // Validate text field to only contain numeric values.
  if ($login_never_value != '' && !is_numeric($login_never_value) || $login_value != '' && !is_numeric($login_value) || $inactive_value != '' && !is_numeric($inactive_value) || $block_value != '' && !is_numeric($block_value)) {
    $form_state
      ->setErrorByName('Value validator', $this
      ->t('Value must be a number.'));
  }

  // Validate to set purge period more than 10 days.
  if ($login_never_period == 'days' && !empty($login_never_value) && $login_never_value < 1 || $login_period == 'days' && !empty($login_value) && $login_value < 1 || $inactive_period == 'days' && !empty($inactive_value) && $inactive_value < 1 || $block_period == 'days' && !empty($block_value) && $block_value < 1 || $user_before_notification_period == 'days' && !empty($user_before_notification_value) && $user_before_notification_value < 1) {
    $form_state
      ->setErrorByName('Period limit', $this
      ->t('Purge period should be more than 10 days.'));
  }

  // Make sure one of the fieldset is checked.
  if ($enable_loggedin == 0 && $enable_inactive == 0 && $enable_blocked == 0 && $enable_never_loggedin == 0) {
    $form_state
      ->setErrorByName('Enable fieldset', $this
      ->t('Please enable one of the Conditions:  Never logged in users, Not logged in users, Inactive users or Blocked users.'));
  }

  // Check if value field is not empty.
  if ($enable_blocked == 1 && empty($block_value) || $enable_loggedin == 1 && empty($login_value) || $enable_never_loggedin == 1 && empty($login_never_value) || $enable_inactive == 1 && empty($inactive_value)) {
    $form_state
      ->setErrorByName('Empty value field', $this
      ->t('Value should not be empty.'));
  }

  // Check if we don't both enable blocked users and disregard them.
  if ($enable_blocked && $disregard_blocked) {
    $form_state
      ->setErrorByName('disregard_blocked_users', $this
      ->t('You can not both purge blocked users and disregard them.'));
  }

  // Check if the don't both check for inactive users and disregard them.
  if ($enable_inactive && $disregard_blocked) {
    $form_state
      ->setErrorByName('disregard_blocked_users', $this
      ->t('You can not both purge inactive users and disregard them.'));
  }
}