You are here

public function PrivateMessageThread::delete in Private Message 8.2

Same name and namespace in other branches
  1. 8 src/Entity/PrivateMessageThread.php \Drupal\private_message\Entity\PrivateMessageThread::delete()

Deletes an entity permanently.

Throws

\Drupal\Core\Entity\EntityStorageException In case of failures an exception is thrown.

Overrides EntityBase::delete

File

src/Entity/PrivateMessageThread.php, line 216

Class

PrivateMessageThread
Defines the Private Message Thread entity.

Namespace

Drupal\private_message\Entity

Code

public function delete(AccountInterface $account = NULL) {
  if ($account) {
    $this
      ->updateLastDeleteTime($account);
    $last_creation_timestamp = $this
      ->getNewestMessageCreationTimestamp();
    $query = \Drupal::database()
      ->select('pm_thread_history', 'pm_thread_history')
      ->condition('thread_id', $this
      ->id());
    $query
      ->addExpression('MIN(delete_timestamp)', 'min_deleted');
    $min_deleted = $query
      ->execute()
      ->fetchField();
    if ($min_deleted >= $last_creation_timestamp) {
      $this
        ->deleteReferencedEntities();
      parent::delete();
    }
  }
  else {
    $this
      ->deleteReferencedEntities();
    parent::delete();
  }
  $this
    ->clearCacheTags();
}