You are here

RulesSettingsForm.php in Rules 8.3

Namespace

Drupal\rules\Form

File

src/Form/RulesSettingsForm.php
View source
<?php

namespace Drupal\rules\Form;

use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Link;
use Psr\Log\LogLevel;

/**
 * Provides rules settings form.
 */
class RulesSettingsForm extends ConfigFormBase {

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

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

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    $config = $this
      ->config('rules.settings');
    $form['#tree'] = TRUE;
    $form['system_log'] = [
      '#type' => 'fieldset',
      '#title' => $this
        ->t('System logging'),
    ];
    $form['system_log']['log_level'] = [
      '#type' => 'radios',
      '#title' => $this
        ->t('Evaluation errors log level'),
      '#options' => [
        LogLevel::WARNING => $this
          ->t('Log all warnings and errors'),
        LogLevel::ERROR => $this
          ->t('Log errors only'),
      ],
      '#default_value' => $config
        ->get('system_log.log_level'),
      '#description' => $this
        ->t('Evaluation errors are logged to the system database logger and all other registered loggers.'),
    ];
    $form['debug_log'] = [
      '#type' => 'fieldset',
      '#title' => $this
        ->t('Debug logging'),
    ];
    $form['debug_log']['enabled'] = [
      '#type' => 'checkbox',
      '#title' => $this
        ->t('Enable debug logging'),
      '#description' => $this
        ->t('Show debug information on screen (in the HTML response). Debug information is only shown when rules are evaluated, and is visible for users having the permission %permission.', [
        '%permission' => Link::createFromRoute('View Rules debug log', 'user.admin_permissions', [], [
          'fragment' => 'module-rules',
        ])
          ->toString(),
      ]),
      '#default_value' => $config
        ->get('debug_log.enabled'),
    ];
    $form['debug_log']['settings'] = [
      '#type' => 'fieldset',
      '#title' => $this
        ->t('Settings'),
      '#states' => [
        // Hide the logging destination fields when the debug log is disabled.
        'invisible' => [
          'input[name="debug_log[enabled]"]' => [
            'checked' => FALSE,
          ],
        ],
      ],
    ];
    $form['debug_log']['settings']['system_debug'] = [
      '#type' => 'checkbox',
      '#title' => $this
        ->t('Also log debug information to the system log'),
      '#description' => $this
        ->t('Write a copy of the debug information to the system database log. This will be visible for users having the permission %permission.', [
        '%permission' => Link::createFromRoute('View site reports', 'user.admin_permissions', [], [
          'fragment' => 'module-system',
        ])
          ->toString(),
      ]),
      '#default_value' => $config
        ->get('debug_log.system_debug'),
    ];
    $form['debug_log']['settings']['log_level'] = [
      '#type' => 'radios',
      '#title' => $this
        ->t('Debug log level'),
      '#options' => [
        LogLevel::DEBUG => $this
          ->t('Log everything'),
        LogLevel::WARNING => $this
          ->t('Log warnings and errors only'),
        LogLevel::ERROR => $this
          ->t('Log errors only'),
      ],
      '#default_value' => $config
        ->get('debug_log.log_level'),
      '#description' => $this
        ->t('Level of debug log messages shown on screen'),
    ];
    return parent::buildForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    $this
      ->config('rules.settings')
      ->set('system_log.log_level', $form_state
      ->getValue([
      'system_log',
      'log_level',
    ]))
      ->set('debug_log.enabled', $form_state
      ->getValue([
      'debug_log',
      'enabled',
    ]))
      ->set('debug_log.system_debug', $form_state
      ->getValue([
      'debug_log',
      'settings',
      'system_debug',
    ]))
      ->set('debug_log.log_level', $form_state
      ->getValue([
      'debug_log',
      'settings',
      'log_level',
    ]))
      ->save();
    parent::submitForm($form, $form_state);
  }

}

Classes

Namesort descending Description
RulesSettingsForm Provides rules settings form.