bat-8.x-1.x-dev/modules/bat_event/src/Form/BatEventSettingsForm.php

modules/bat_event/src/Form/BatEventSettingsForm.php
<?php

namespace Drupal\bat_event\Form;

use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;

/**
 * {@inheritdoc}
 */
class BatEventSettingsForm extends ConfigFormBase {

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'bat__event_settings_form';
  }

  /**
   * {@inheritdoc}
   */
  protected function getEditableConfigNames() {
    return ['bat_event.settings'];
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {

    $config = $this->config('bat_event.settings');

    $form['settings'] = [
      '#type' => 'fieldset',
      '#title' => $this->t('BAT Event Settings'),
      '#collapsible' => FALSE,
    ];

    $form['settings']['old_events'] = [
      '#type' => 'fieldset',
      '#title' => $this->t('Remove old events'),
      '#description' => $this->t('With these values you build the following rule: "When <b>cron</b> runs, delete N. <b>YYY</b> events with end-date older than <b>XXX</b> days ago"'),
      '#collapsible' => FALSE,
    ];

    $form['settings']['old_events']['old_events_status'] = [
      '#default_value' => $config->get('bat_event')['delete_old']['status'],
      '#type' => 'checkbox',
      '#title' => $this->t('Enable'),
      '#description' => $this->t('<b>Important</b> This feature may break your data integrity. <b>Do not enable</b> this if unsure.'),
    ];

    $form['settings']['old_events']['old_events_days_back'] = [
      '#default_value' => $config->get('bat_event')['delete_old']['days_back'],
      '#min' => 1,
      '#required' => TRUE,
      '#step' => 1,
      '#title' => $this->t("How many past days"),
      '#description' => $this->t("Depending your business requirement, to improve performance, you only want to keep recent events. Choose here how many past days you want to keep in record. <b>XXX</b> in example."),
      '#type' => 'number',
    ];

    $form['settings']['old_events']['old_events_how_many_per_cron'] = [
      '#default_value' => $config->get('bat_event')['delete_old']['how_many_per_cron'],
      // '#default_value' => isset($config->get("bat_event")['delete_old']['how_many_per_cron']) ?: 0,
      '#min' => 0,
      '#required' => TRUE,
      '#step' => 1,
      '#title' => $this->t("How many event to delete per cron"),
      '#description' => $this->t("Old events are delete at cron time. Choose here how many event you want to delete everytime cron runs. Use this as part of performance settings. <b>YYY</b> in example."),
      '#type' => 'number',
    ];

    return parent::buildForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {

    $this->config('bat_event.settings')
      ->set('bat_event.delete_old.status', $form_state->getValue('old_events_status'))
      ->set('bat_event.delete_old.days_back', $form_state->getValue('old_events_days_back'))
      ->set('bat_event.delete_old.how_many_per_cron', $form_state->getValue('old_events_how_many_per_cron'))
      ->save();

    parent::submitForm($form, $form_state);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc