You are here

public function FloodControlSettingsForm::buildForm in Flood control 1.0.x

Same name and namespace in other branches
  1. 2.0.x src/Form/FloodControlSettingsForm.php \Drupal\flood_control\Form\FloodControlSettingsForm::buildForm()

Form constructor.

Parameters

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

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

Return value

array The form structure.

Overrides ConfigFormBase::buildForm

File

src/Form/FloodControlSettingsForm.php, line 61
Contains \Drupal\flood_control\Form\FloodControlSettingsForm.

Class

FloodControlSettingsForm
Administration settings form.

Namespace

Drupal\flood_control\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $flood_config = \Drupal::config('user.flood');
  $flood_settings = $flood_config
    ->get();
  $options = $this
    ->getOptions();
  $counterOptions = $options['counter'];
  $timeOptions = $options['time'];

  // User module flood events.
  $form['login'] = [
    '#type' => 'fieldset',
    '#title' => t('Login'),
  ];
  $form['login']['ip_limit'] = [
    '#type' => 'select',
    '#title' => t('Failed login (IP) limit'),
    '#options' => array_combine($counterOptions, $counterOptions),
    '#default_value' => $flood_settings['ip_limit'],
  ];
  $form['login']['ip_window'] = [
    '#type' => 'select',
    '#title' => t('Failed login (IP) window'),
    '#options' => [
      0 => t('None (disabled)'),
    ] + array_map([
      $this->dateFormatter,
      'formatInterval',
    ], array_combine($timeOptions, $timeOptions)),
    '#default_value' => $flood_settings['ip_window'],
  ];
  $form['login']['user_limit'] = [
    '#type' => 'select',
    '#title' => t('Failed login (username) limit'),
    '#options' => array_combine($counterOptions, $counterOptions),
    '#default_value' => $flood_settings['user_limit'],
  ];
  $form['login']['user_window'] = [
    '#type' => 'select',
    '#title' => t('Failed login (username) window'),
    '#options' => [
      0 => t('None (disabled)'),
    ] + array_map([
      $this->dateFormatter,
      'formatInterval',
    ], array_combine($timeOptions, $timeOptions)),
    '#default_value' => $flood_settings['user_window'],
  ];

  // Contact module flood events.
  $contact_config = \Drupal::config('contact.settings');
  $contact_settings = $contact_config
    ->get();
  $form['contact'] = [
    '#type' => 'fieldset',
    '#title' => t('Contact forms'),
  ];
  $form['contact']['contact_threshold_limit'] = [
    '#type' => 'select',
    '#title' => t('Sending e-mails limit'),
    '#options' => array_combine($counterOptions, $counterOptions),
    '#default_value' => $contact_settings['flood']['limit'],
  ];
  $form['contact']['contact_threshold_window'] = [
    '#type' => 'select',
    '#title' => t('Sending e-mails window'),
    '#options' => [
      0 => t('None (disabled)'),
    ] + array_map([
      $this->dateFormatter,
      'formatInterval',
    ], array_combine($timeOptions, $timeOptions)),
    '#default_value' => $contact_settings['flood']['interval'],
  ];
  return parent::buildForm($form, $form_state);
}