abstract class WebformSubmissionsDeleteFormBase in Webform 6.x
Same name and namespace in other branches
- 8.5 src/Form/WebformSubmissionsDeleteFormBase.php \Drupal\webform\Form\WebformSubmissionsDeleteFormBase
Base webform for deleting webform submission.
Hierarchy
- class \Drupal\Core\Form\FormBase implements ContainerInjectionInterface, FormInterface uses DependencySerializationTrait, LoggerChannelTrait, MessengerTrait, RedirectDestinationTrait, StringTranslationTrait- class \Drupal\Core\Form\ConfirmFormBase implements ConfirmFormInterface- class \Drupal\webform\Form\WebformDeleteFormBase implements WebformDeleteFormInterface uses WebformDialogFormTrait- class \Drupal\webform\Form\WebformSubmissionsDeleteFormBase uses WebformEntityStorageTrait
 
 
- class \Drupal\webform\Form\WebformDeleteFormBase implements WebformDeleteFormInterface uses WebformDialogFormTrait
 
- class \Drupal\Core\Form\ConfirmFormBase implements ConfirmFormInterface
Expanded class hierarchy of WebformSubmissionsDeleteFormBase
File
- src/Form/ WebformSubmissionsDeleteFormBase.php, line 14 
Namespace
Drupal\webform\FormView source
abstract class WebformSubmissionsDeleteFormBase extends WebformDeleteFormBase {
  use WebformEntityStorageTrait;
  /**
   * Total number of submissions.
   *
   * @var int
   */
  protected $submissionTotal;
  /**
   * Default number of submission to be deleted during batch processing.
   *
   * @var int
   */
  protected $batchLimit = 1000;
  /**
   * The webform entity.
   *
   * @var \Drupal\webform\WebformInterface
   */
  protected $webform;
  /**
   * The webform source entity.
   *
   * @var \Drupal\Core\Entity\EntityInterface
   */
  protected $sourceEntity;
  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;
  /**
   * The webform request handler.
   *
   * @var \Drupal\webform\WebformRequestInterface
   */
  protected $requestHandler;
  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    $instance = parent::create($container);
    $instance->entityTypeManager = $container
      ->get('entity_type.manager');
    $instance->requestHandler = $container
      ->get('webform.request');
    list($instance->webform, $instance->sourceEntity) = $instance->requestHandler
      ->getWebformEntities();
    return $instance;
  }
  /**
   * {@inheritdoc}
   */
  public function getConfirmText() {
    return $this
      ->t('Clear');
  }
  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    $form_state
      ->setRedirectUrl($this
      ->getCancelUrl());
    if ($this
      ->getSubmissionStorage()
      ->getTotal($this->webform, $this->sourceEntity) < $this
      ->getBatchLimit()) {
      $this
        ->getSubmissionStorage()
        ->deleteAll($this->webform, $this->sourceEntity);
      $this
        ->messenger()
        ->addStatus($this
        ->getFinishedMessage());
    }
    else {
      $this
        ->batchSet($this->webform, $this->sourceEntity);
    }
  }
  /**
   * Get webform or source entity label.
   *
   * @return null|string
   *   Webform or source entity label.
   */
  public function getLabel() {
    if ($this->sourceEntity) {
      return $this->sourceEntity
        ->label();
    }
    elseif ($this->webform
      ->label()) {
      return $this->webform
        ->label();
    }
    else {
      return '';
    }
  }
  /**
   * Message to displayed after submissions are deleted.
   *
   * @return \Drupal\Core\StringTranslation\TranslatableMarkup
   *   Message to be displayed after delete has finished.
   */
  public function getFinishedMessage() {
    return $this
      ->t('Webform submissions cleared.');
  }
  /****************************************************************************/
  // Batch API.
  /****************************************************************************/
  /**
   * Batch API; Initialize batch operations.
   *
   * @param \Drupal\webform\WebformInterface|null $webform
   *   The webform.
   * @param \Drupal\Core\Entity\EntityInterface|null $entity
   *   The webform's source entity.
   */
  public function batchSet(WebformInterface $webform = NULL, EntityInterface $entity = NULL) {
    $parameters = [
      $webform,
      $entity,
      $this
        ->getSubmissionStorage()
        ->getMaxSubmissionId($webform, $entity),
    ];
    $batch = [
      'title' => $this
        ->t('Clear submissions'),
      'init_message' => $this
        ->t('Clearing submission data'),
      'error_message' => $this
        ->t('The submissions could not be cleared because an error occurred.'),
      'operations' => [
        [
          [
            $this,
            'batchProcess',
          ],
          $parameters,
        ],
      ],
      'finished' => [
        $this,
        'batchFinish',
      ],
    ];
    batch_set($batch);
  }
  /**
   * Get the number of submissions to be deleted with each batch.
   *
   * @return int
   *   Number of submissions to be deleted with each batch.
   */
  public function getBatchLimit() {
    return $this
      ->config('webform.settings')
      ->get('batch.default_batch_delete_size') ?: $this->batchLimit;
  }
  /**
   * Batch API callback; Delete submissions.
   *
   * @param \Drupal\webform\WebformInterface|null $webform
   *   The webform.
   * @param \Drupal\Core\Entity\EntityInterface|null $entity
   *   The webform's source entity.
   * @param int $max_sid
   *   The max submission ID to be delete.
   * @param mixed|array $context
   *   The batch current context.
   */
  public function batchProcess(WebformInterface $webform = NULL, EntityInterface $entity = NULL, $max_sid, &$context) {
    if (empty($context['sandbox'])) {
      $context['sandbox']['progress'] = 0;
      $context['sandbox']['max'] = $this
        ->getSubmissionStorage()
        ->getTotal($webform, $entity, NULL, [
        'in_draft' => NULL,
      ]);
      $context['results']['webform'] = $webform;
      $context['results']['entity'] = $entity;
    }
    // Track progress.
    $context['sandbox']['progress'] += $this
      ->getSubmissionStorage()
      ->deleteAll($webform, $entity, $this
      ->getBatchLimit(), $max_sid);
    $context['message'] = $this
      ->t('Deleting @count of @total submissions…', [
      '@count' => $context['sandbox']['progress'],
      '@total' => $context['sandbox']['max'],
    ]);
    // Track finished.
    if ($context['sandbox']['progress'] !== $context['sandbox']['max']) {
      $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
    }
  }
  /**
   * Batch API callback; Completed deletion.
   *
   * @param bool $success
   *   TRUE if batch successfully completed.
   * @param array $results
   *   Batch results.
   * @param array $operations
   *   An array of function calls (not used in this function).
   */
  public function batchFinish($success = FALSE, array $results = [], array $operations = []) {
    if (!$success) {
      $this
        ->messenger()
        ->addStatus($this
        ->t('Finished with an error.'));
    }
    else {
      $this
        ->messenger()
        ->addStatus($this
        ->getFinishedMessage());
    }
  }
  /**
   * Get total number of submissions.
   *
   * @return int
   *   Total number of submissions.
   */
  protected function getSubmissionTotal() {
    if (!isset($this->submissionTotal)) {
      $this->submissionTotal = $this
        ->getSubmissionStorage()
        ->getTotal($this->webform, $this->sourceEntity, NULL, [
        'in_draft' => NULL,
      ]);
    }
    return $this->submissionTotal;
  }
}Members
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| ConfirmFormBase:: | public | function | Returns a caption for the link which cancels the action. Overrides ConfirmFormInterface:: | 2 | 
| ConfirmFormInterface:: | public | function | Returns the route to go to if the user cancels the action. | 38 | 
| ConfirmFormInterface:: | public | function | Returns the question to ask the user. | 39 | 
| DependencySerializationTrait:: | protected | property | ||
| DependencySerializationTrait:: | protected | property | ||
| DependencySerializationTrait:: | public | function | 2 | |
| DependencySerializationTrait:: | public | function | 2 | |
| FormBase:: | protected | property | The config factory. | 3 | 
| FormBase:: | protected | property | The request stack. | 1 | 
| FormBase:: | protected | property | The route match. | |
| FormBase:: | protected | function | Retrieves a configuration object. | |
| FormBase:: | protected | function | Gets the config factory for this form. | 3 | 
| FormBase:: | private | function | Returns the service container. | |
| FormBase:: | protected | function | Gets the current user. | |
| FormBase:: | protected | function | Gets the request object. | |
| FormBase:: | protected | function | Gets the route match. | |
| FormBase:: | protected | function | Gets the logger for a specific channel. | |
| FormBase:: | protected | function | Returns a redirect response object for the specified route. | |
| FormBase:: | public | function | Resets the configuration factory. | |
| FormBase:: | public | function | Sets the config factory for this form. | |
| FormBase:: | public | function | Sets the request stack object to use. | |
| FormBase:: | public | function | Form validation handler. Overrides FormInterface:: | 72 | 
| FormInterface:: | public | function | Returns a unique string identifying the form. | 264 | 
| LoggerChannelTrait:: | protected | property | The logger channel factory service. | |
| LoggerChannelTrait:: | protected | function | Gets the logger for a specific channel. | |
| LoggerChannelTrait:: | public | function | Injects the logger channel factory. | |
| MessengerTrait:: | protected | property | The messenger. | 27 | 
| MessengerTrait:: | public | function | Gets the messenger. | 27 | 
| MessengerTrait:: | public | function | Sets the messenger. | |
| RedirectDestinationTrait:: | protected | property | The redirect destination service. | 1 | 
| RedirectDestinationTrait:: | protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
| RedirectDestinationTrait:: | protected | function | Returns the redirect destination service. | |
| RedirectDestinationTrait:: | public | function | Sets the redirect destination service. | |
| StringTranslationTrait:: | protected | property | The string translation service. | 4 | 
| StringTranslationTrait:: | protected | function | Formats a string containing a count of items. | |
| StringTranslationTrait:: | protected | function | Returns the number of plurals supported by a given language. | |
| StringTranslationTrait:: | protected | function | Gets the string translation service. | |
| StringTranslationTrait:: | public | function | Sets the string translation service to use. | 2 | 
| StringTranslationTrait:: | protected | function | Translates a string to the current language or to a given language. | |
| WebformAjaxFormTrait:: | protected | function | Queue announcement with Ajax response. | |
| WebformAjaxFormTrait:: | protected | function | Add Ajax support to a form. | |
| WebformAjaxFormTrait:: | protected | function | Create an AjaxResponse or WebformAjaxResponse object. | |
| WebformAjaxFormTrait:: | protected | function | Get announcements. | |
| WebformAjaxFormTrait:: | protected | function | Get default ajax callback settings. | 1 | 
| WebformAjaxFormTrait:: | protected | function | Get redirect URL from the form's state. | |
| WebformAjaxFormTrait:: | protected | function | Get the form's Ajax wrapper id. | 1 | 
| WebformAjaxFormTrait:: | protected | function | Determine if Ajax callback is callable. | |
| WebformAjaxFormTrait:: | protected | function | Is the current request for an Ajax modal/dialog. | |
| WebformAjaxFormTrait:: | protected | function | Is the current request for an off canvas dialog. | |
| WebformAjaxFormTrait:: | protected | function | Handle missing Ajax callback. | |
| WebformAjaxFormTrait:: | protected | function | Replace form via an Ajax response. | 1 | 
| WebformAjaxFormTrait:: | protected | function | Reset announcements. | |
| WebformAjaxFormTrait:: | protected | function | Set announcements. | |
| WebformAjaxFormTrait:: | public | function | Submit form #ajax callback. | 1 | 
| WebformAjaxFormTrait:: | public | function | Validate form #ajax callback. | 1 | 
| WebformDeleteFormBase:: | public | function | Form constructor. Overrides ConfirmFormBase:: | 6 | 
| WebformDeleteFormBase:: | public | function | Returns confirm input to display. Overrides WebformDeleteFormInterface:: | 3 | 
| WebformDeleteFormBase:: | public | function | Returns additional text to display as a description. Overrides ConfirmFormBase:: | 6 | 
| WebformDeleteFormBase:: | public | function | Returns details to display. Overrides WebformDeleteFormInterface:: | 1 | 
| WebformDeleteFormBase:: | public | function | Returns the internal name used to refer to the confirmation item. Overrides ConfirmFormBase:: | |
| WebformDeleteFormBase:: | public | function | Returns warning message to display. Overrides WebformDeleteFormInterface:: | 6 | 
| WebformDialogFormTrait:: | protected | function | Add modal dialog support to a confirm form. | |
| WebformDialogFormTrait:: | protected | function | Build webform dialog delete link. | |
| WebformDialogFormTrait:: | protected | function | Add modal dialog support to a form. | |
| WebformDialogFormTrait:: | public | function | Cancel form #ajax callback. Overrides WebformAjaxFormTrait:: | 1 | 
| WebformDialogFormTrait:: | public | function | Close dialog. | |
| WebformDialogFormTrait:: | protected | function | Returns if webform is using Ajax. Overrides WebformAjaxFormTrait:: | 1 | 
| WebformDialogFormTrait:: | public | function | Empty submit callback used to only have the submit button to use an #ajax submit callback. Overrides WebformAjaxFormTrait:: | |
| WebformDialogFormTrait:: | public | function | Validate callback to clear validation errors. | 2 | 
| WebformEntityStorageTrait:: | protected | property | An associate array of entity type storage aliases. | |
| WebformEntityStorageTrait:: | protected | function | Retrieves the entity storage. | |
| WebformEntityStorageTrait:: | protected | function | Retrieves the webform submission storage. | |
| WebformEntityStorageTrait:: | protected | function | Retrieves the webform storage. | |
| WebformEntityStorageTrait:: | public | function | Implements the magic __get() method. | |
| WebformSubmissionsDeleteFormBase:: | protected | property | Default number of submission to be deleted during batch processing. | |
| WebformSubmissionsDeleteFormBase:: | protected | property | The entity type manager. Overrides WebformEntityStorageTrait:: | |
| WebformSubmissionsDeleteFormBase:: | protected | property | The webform request handler. | |
| WebformSubmissionsDeleteFormBase:: | protected | property | The webform source entity. | |
| WebformSubmissionsDeleteFormBase:: | protected | property | Total number of submissions. | |
| WebformSubmissionsDeleteFormBase:: | protected | property | The webform entity. | |
| WebformSubmissionsDeleteFormBase:: | public | function | Batch API callback; Completed deletion. | |
| WebformSubmissionsDeleteFormBase:: | public | function | Batch API callback; Delete submissions. | |
| WebformSubmissionsDeleteFormBase:: | public | function | Batch API; Initialize batch operations. | |
| WebformSubmissionsDeleteFormBase:: | public static | function | Instantiates a new instance of this class. Overrides FormBase:: | |
| WebformSubmissionsDeleteFormBase:: | public | function | Get the number of submissions to be deleted with each batch. | |
| WebformSubmissionsDeleteFormBase:: | public | function | Returns a caption for the button that confirms the action. Overrides WebformDeleteFormBase:: | 1 | 
| WebformSubmissionsDeleteFormBase:: | public | function | Message to displayed after submissions are deleted. | 1 | 
| WebformSubmissionsDeleteFormBase:: | public | function | Get webform or source entity label. | |
| WebformSubmissionsDeleteFormBase:: | protected | function | Get total number of submissions. | 1 | 
| WebformSubmissionsDeleteFormBase:: | public | function | Form submission handler. Overrides FormInterface:: | 
