You are here

public function SearchLogConfigurationForm::buildForm in Search Log 8

.

Overrides ConfigFormBase::buildForm

File

src/Form/SearchLogConfigurationForm.php, line 71

Class

SearchLogConfigurationForm

Namespace

Drupal\search_log\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $config = $this
    ->config('search_log.settings');
  $form['logging'] = [
    '#type' => 'fieldset',
    '#title' => $this
      ->t('Search log settings'),
  ];
  $terms_options = [
    'search_log_terms_lowercase' => $this
      ->t('lowercase (%1 stored as %2)', [
      '%1' => 'Apple iPod',
      '%2' => 'apple ipod',
    ]),
    'search_log_terms_uppercase_first' => $this
      ->t('uppercase first word (%1 stored as %2)', [
      '%1' => 'Apple iPod',
      '%2' => 'Apple ipod',
    ]),
    'search_log_terms_uppercase_words' => $this
      ->t('uppercase all words (%1 stored as %2)', [
      '%1' => 'Apple iPod',
      '%2' => 'Apple Ipod',
    ]),
  ];
  $form['logging']['search_log_terms'] = [
    '#type' => 'radios',
    '#title' => $this
      ->t('Search term normalization'),
    '#description' => $this
      ->t('Search terms are normalized before they are stored in Search log. Changing this value may result in duplicate terms for the current day.'),
    '#options' => $terms_options,
    '#default_value' => $config
      ->get('search_log_terms'),
  ];
  $form['logging']['search_log_preprocess'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Collect search result with preprocess_search_results()'),
    '#description' => $this
      ->t('Search does not have a hook to obtain the number of search results. This theme function will work in certain circumstances. If enabled, the function will add one extra DB write for failed search results.'),
    '#default_value' => $config
      ->get('search_log_preprocess'),
  ];
  $form['status'] = [
    '#type' => 'fieldset',
    '#title' => $this
      ->t('Search log status'),
  ];
  $query = $this->database
    ->select('search_log', 'sl')
    ->fields('sl', [
    'qid',
  ]);
  $results = $query
    ->execute()
    ->fetchAll();
  $num_of_results = count($results);
  $form['status']['search_log_count']['#markup'] = '<p>' . $this
    ->t('There are :count entries in the Search log table.', [
    ':count' => number_format($num_of_results),
  ]) . '</p>';
  $form['status']['search_log_cron'] = [
    '#type' => 'textfield',
    '#title' => $this
      ->t('Days to keep search log'),
    '#description' => $this
      ->t('Search log table can be automatically truncated by cron. Set to 0 to never truncate Search log table.'),
    '#size' => 4,
    '#default_value' => $config
      ->get('search_log_cron'),
  ];
  return parent::buildForm($form, $form_state);
}