You are here

public function RateSettingsForm::buildForm in Rate 8.2

Same name and namespace in other branches
  1. 8 src/Form/RateSettingsForm.php \Drupal\rate\Form\RateSettingsForm::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/RateSettingsForm.php, line 73

Class

RateSettingsForm
Configure rate settings for the site.

Namespace

Drupal\rate\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $config = $this
    ->config('rate.settings');
  $form['settings'] = [
    '#type' => 'fieldset',
    '#title' => $this
      ->t('Rate settings'),
    '#collapsbile' => FALSE,
    '#collapsed' => FALSE,
  ];
  $form['settings']['disable_log'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Disable log messages'),
    '#default_value' => $config
      ->get('disable_log'),
    '#description' => $this
      ->t('This will disable log messages when voting in rate module.'),
  ];
  $form['settings']['disable_fontawesome'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Disable fontawesome'),
    '#default_value' => $config
      ->get('disable_fontawesome'),
    '#description' => $this
      ->t('This will disable fontawesome library from loading with rate module.'),
  ];
  $form['bot'] = [
    '#type' => 'fieldset',
    '#title' => $this
      ->t('Bot detection'),
    '#description' => $this
      ->t('Bots can be automatically banned from voting if they rate more than a given amount of votes within one minute or hour. This threshold is configurable below. Votes from the same IP-address will be ignored forever after reaching this limit.'),
    '#collapsbile' => FALSE,
    '#collapsed' => FALSE,
  ];
  $threshold_options = array_combine([
    0,
    10,
    25,
    50,
    100,
    250,
    500,
    1000,
  ], [
    0,
    10,
    25,
    50,
    100,
    250,
    500,
    1000,
  ]);
  $threshold_options[0] = $this
    ->t('disable');
  $form['bot']['bot_minute_threshold'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('1 minute threshold'),
    '#options' => $threshold_options,
    '#default_value' => $config
      ->get('bot_minute_threshold'),
  ];
  $form['bot']['bot_hour_threshold'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('1 hour threshold'),
    '#options' => $threshold_options,
    '#default_value' => $config
      ->get('bot_hour_threshold'),
  ];
  $form['bot']['botscout_key'] = [
    '#type' => 'textfield',
    '#title' => $this
      ->t('BotScout.com API key'),
    '#default_value' => $config
      ->get('botscout_key'),
    '#description' => $this
      ->t('Rate will check the voters IP against the BotScout database if it has an API key. You can request a key at %url.', [
      '%url' => 'http://botscout.com/getkey.htm',
    ]),
  ];
  return parent::buildForm($form, $form_state);
}