You are here

CommentDeleteSettingsForm.php in Comment Delete 8

File

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

namespace Drupal\comment_delete\Form;

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

/**
 * Form to configure comment delete settings.
 */
class CommentDeleteSettingsForm extends ConfigFormBase {

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

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

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    $config = $this
      ->config('comment_delete.config');
    $form['default'] = [
      '#type' => 'radios',
      '#title' => $this
        ->t('Default selection'),
      '#description' => $this
        ->t('Default operation selected on the delete confirmation form.'),
      '#options' => [
        CommentDeleteManager::DELETE_REPLIES => $this
          ->t('Delete comment and its replies (full hard delete)'),
        CommentDeleteManager::MOVE_REPLIES => $this
          ->t('Delete comment and move its replies up one level (partial hard delete)'),
        CommentDeleteManager::KEEP_REPLIES => $this
          ->t('Delete comment and keep its replies (soft delete)'),
      ],
      '#required' => TRUE,
      '#default_value' => $config
        ->get('default_selection'),
    ];
    $form['soft'] = [
      '#type' => 'checkbox',
      '#title' => $this
        ->t('Force soft delete'),
      '#description' => $this
        ->t('If enabled comments will never be fully deleted regardless of the chosen operation. See "Soft delete mode" setting.'),
      '#default_value' => $config
        ->get('soft'),
    ];
    $form['soft_mode'] = [
      '#type' => 'select',
      '#title' => $this
        ->t('Soft delete mode'),
      '#description' => $this
        ->t('WARNING: Set to unpublished (hide) does not re-thread comments. For instance, replies to a hidden comment still appear indented.'),
      '#options' => [
        'unset_values' => $this
          ->t('Unset values (recommended)'),
        'unpublished' => $this
          ->t('Set to unpublished (hide)'),
      ],
      '#default_value' => $config
        ->get('soft_mode'),
      '#required' => TRUE,
    ];
    $form['soft_user'] = [
      '#type' => 'checkbox',
      '#title' => $this
        ->t('Remove author on soft delete (set as anonymous)'),
      '#description' => $this
        ->t('By default a soft deleted comment keeps its original author.'),
      '#default_value' => $config
        ->get('soft_user'),
    ];
    $form['threshold'] = [
      '#type' => 'number',
      '#title' => $this
        ->t('Threshold limit'),
      '#description' => $this
        ->t('Maximum time in seconds after creation that a comment can be deleted. Use zero (0) to disable.'),
      '#min' => 0,
      '#default_value' => $config
        ->get('threshold'),
      '#required' => TRUE,
    ];
    $form['message'] = [
      '#type' => 'textarea',
      '#title' => $this
        ->t('Confirmation message'),
      '#description' => $this
        ->t('A message shown after a comment has been deleted.'),
      '#default_value' => $config
        ->get('message'),
      '#required' => TRUE,
    ];
    return parent::buildForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    $this
      ->config('comment_delete.config')
      ->set('default_selection', $form_state
      ->getValue('default'))
      ->set('soft', $form_state
      ->getValue('soft'))
      ->set('soft_mode', $form_state
      ->getValue('soft_mode'))
      ->set('soft_user', $form_state
      ->getValue('soft_user'))
      ->set('threshold', $form_state
      ->getValue('threshold'))
      ->set('message', $form_state
      ->getValue('message'))
      ->save();
    parent::submitForm($form, $form_state);
  }

}

Classes

Namesort descending Description
CommentDeleteSettingsForm Form to configure comment delete settings.