Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/mail.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAnna Larch <anna@nextcloud.com>2021-03-04 17:46:02 +0300
committerAnna Larch <anna@nextcloud.com>2021-03-08 11:03:51 +0300
commit79d915eab554ec113dab6293b8909164f2cadace (patch)
tree3f8d0a843c1b9e67305b301264f57ad8a8e5f17c /lib
parent93193f848091322178262b133dd458d00997fa5b (diff)
Delete recipient records when deleting email
Signed-off-by: Anna Larch <anna@nextcloud.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/Db/MessageMapper.php25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/Db/MessageMapper.php b/lib/Db/MessageMapper.php
index 81f1967a7..2dfeeb9f3 100644
--- a/lib/Db/MessageMapper.php
+++ b/lib/Db/MessageMapper.php
@@ -406,6 +406,17 @@ class MessageMapper extends QBMapper {
}
public function deleteAll(Mailbox $mailbox): void {
+ $messageIdQuery = $this->db->getQueryBuilder();
+ $deleteRecipientsQuery = $this->db->getQueryBuilder();
+ $messageIdQuery->select('id')
+ ->from($this->getTableName())
+ ->where($messageIdQuery->expr()->eq('mailbox_id', $deleteRecipientsQuery->createNamedParameter($mailbox->getId())));
+
+ // delete all related recipient entries
+ $deleteRecipientsQuery->delete('mail_recipients')
+ ->where($deleteRecipientsQuery->expr()->in('message_id', $deleteRecipientsQuery->createFunction($messageIdQuery->getSQL()), IQueryBuilder::PARAM_INT_ARRAY));
+ $deleteRecipientsQuery->execute();
+
$query = $this->db->getQueryBuilder();
$query->delete($this->getTableName())
@@ -415,6 +426,20 @@ class MessageMapper extends QBMapper {
}
public function deleteByUid(Mailbox $mailbox, int ...$uids): void {
+ $messageIdQuery = $this->db->getQueryBuilder();
+ $deleteRecipientsQuery = $this->db->getQueryBuilder();
+
+ $messageIdQuery->select('id')
+ ->from($this->getTableName())
+ ->where(
+ $messageIdQuery->expr()->eq('mailbox_id', $deleteRecipientsQuery->createNamedParameter($mailbox->getId())),
+ $messageIdQuery->expr()->in('uid', $deleteRecipientsQuery->createNamedParameter($uids, IQueryBuilder::PARAM_INT_ARRAY))
+ );
+ // delete all related recipient entries
+ $deleteRecipientsQuery->delete('mail_recipients')
+ ->where($deleteRecipientsQuery->expr()->in('message_id', $messageIdQuery->createFunction($messageIdQuery->getSQL()), IQueryBuilder::PARAM_INT_ARRAY));
+ $deleteRecipientsQuery->execute();
+
$query = $this->db->getQueryBuilder();
$query->delete($this->getTableName())