public function WebformSubmissionStorage::delete in Webform 6.x
Same name and namespace in other branches
- 8.5 src/WebformSubmissionStorage.php \Drupal\webform\WebformSubmissionStorage::delete()
Deletes permanently saved entities.
Parameters
array $entities: An array of entity objects to delete.
Throws
\Drupal\Core\Entity\EntityStorageException In case of failures, an exception is thrown.
Overrides SqlContentEntityStorage::delete
2 calls to WebformSubmissionStorage::delete()
- WebformSubmissionStorage::deleteAll in src/
WebformSubmissionStorage.php - Delete all webform submissions.
- WebformSubmissionStorage::purge in src/
WebformSubmissionStorage.php - Purge webform submissions.
File
- src/
WebformSubmissionStorage.php, line 1144
Class
- WebformSubmissionStorage
- Defines the webform submission storage.
Namespace
Drupal\webformCode
public function delete(array $entities) {
/** @var \Drupal\webform\WebformSubmissionInterface $entity */
if (!$entities) {
// If no entities were passed, do nothing.
return;
}
foreach ($entities as $entity) {
$this
->invokeWebformElements('preDelete', $entity);
$this
->invokeWebformHandlers('preDelete', $entity);
}
$return = parent::delete($entities);
$this
->deleteData($entities);
foreach ($entities as $entity) {
$this
->invokeWebformElements('postDelete', $entity);
$this
->invokeWebformHandlers('postDelete', $entity);
WebformManagedFileBase::deleteFiles($entity);
}
// Remove empty webform submission specific file directory
// for all stream wrappers.
// @see \Drupal\webform\Plugin\WebformElement\WebformManagedFileBase
// @see \Drupal\webform\Plugin\WebformElement\WebformSignature
foreach ($entities as $entity) {
$webform = $entity
->getWebform();
if ($webform) {
$stream_wrappers = array_keys($this->streamWrapperManager
->getNames(StreamWrapperInterface::WRITE_VISIBLE));
foreach ($stream_wrappers as $stream_wrapper) {
$file_directory = $stream_wrapper . '://webform/' . $webform
->id() . '/' . $entity
->id();
// Clear empty webform submission directory.
if (file_exists($file_directory) && empty($this->fileSystem
->scanDirectory($file_directory, '/.*/'))) {
$this->fileSystem
->deleteRecursive($file_directory);
}
}
}
}
// Log deleted.
foreach ($entities as $entity) {
$webform = $entity
->getWebform();
$this->loggerFactory
->get('webform')
->notice('Deleted @form: Submission #@id.', [
'@id' => $entity
->id(),
'@form' => $webform ? $webform
->label() : '[' . t('Webform') . ']',
]);
}
return $return;
}