Skip to content
Snippets Groups Projects
Unverified Commit 805d835d authored by Richard Steinmetz's avatar Richard Steinmetz Committed by GitHub
Browse files

Merge pull request #4697 from nextcloud/backport/4663/stable1.9

[stable1.9] Delete recipient records when deleting email
parents 8c7bd56c 9db865e3
No related branches found
No related tags found
No related merge requests found
......@@ -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())
......
<?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="4.4.1@9fd7a7d885b3a216cff8dec9d8c21a132f275224">
<files psalm-version="4.6.1@e93e532e4eaad6d68c4d7b606853800eaceccc72">
<file src="lib/Attachment.php">
<MissingDocblockType occurrences="1">
<code>$fetch</code>
......@@ -30,9 +30,31 @@
</ImplicitToStringCast>
</file>
<file src="lib/Db/MessageMapper.php">
<ImplicitToStringCast occurrences="23">
<ImplicitToStringCast occurrences="26">
<code>$deleteRecipientsQuery-&gt;createFunction($messageIdQuery-&gt;getSQL())</code>
<code>$deleteRecipientsQuery-&gt;createNamedParameter($uids, IQueryBuilder::PARAM_INT_ARRAY)</code>
<code>$messageIdQuery-&gt;createFunction($messageIdQuery-&gt;getSQL())</code>
<code>$messagesQuery-&gt;createFunction($mailboxesQuery-&gt;getSQL())</code>
<code>$qb-&gt;createFunction($mailboxIdsQuery-&gt;getSQL())</code>
<code>$qb-&gt;createFunction($mailboxIdsQuery-&gt;getSQL())</code>
<code>$qb-&gt;createFunction($selectMailboxIds-&gt;getSQL())</code>
<code>$qb-&gt;createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)</code>
<code>$qb-&gt;createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)</code>
<code>$qb-&gt;createNamedParameter($mailboxIds, IQueryBuilder::PARAM_INT_ARRAY)</code>
<code>$qb-&gt;createNamedParameter($query-&gt;getBcc(), IQueryBuilder::PARAM_STR_ARRAY)</code>
<code>$qb-&gt;createNamedParameter($query-&gt;getBcc(), IQueryBuilder::PARAM_STR_ARRAY)</code>
<code>$qb-&gt;createNamedParameter($query-&gt;getCc(), IQueryBuilder::PARAM_STR_ARRAY)</code>
<code>$qb-&gt;createNamedParameter($query-&gt;getCc(), IQueryBuilder::PARAM_STR_ARRAY)</code>
<code>$qb-&gt;createNamedParameter($query-&gt;getFrom(), IQueryBuilder::PARAM_STR_ARRAY)</code>
<code>$qb-&gt;createNamedParameter($query-&gt;getFrom(), IQueryBuilder::PARAM_STR_ARRAY)</code>
<code>$qb-&gt;createNamedParameter($query-&gt;getTo(), IQueryBuilder::PARAM_STR_ARRAY)</code>
<code>$qb-&gt;createNamedParameter($query-&gt;getTo(), IQueryBuilder::PARAM_STR_ARRAY)</code>
<code>$qb-&gt;createNamedParameter($uids, IQueryBuilder::PARAM_INT_ARRAY)</code>
<code>$qb-&gt;createNamedParameter($uids, IQueryBuilder::PARAM_INT_ARRAY)</code>
<code>$qb-&gt;createNamedParameter($uids, IQueryBuilder::PARAM_INT_ARRAY)</code>
<code>$qb2-&gt;createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)</code>
<code>$qb2-&gt;createNamedParameter(array_keys($indexedMessages), IQueryBuilder::PARAM_INT_ARRAY)</code>
<code>$qb4-&gt;createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)</code>
<code>$query-&gt;createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)</code>
<code>$query-&gt;createNamedParameter($uids, IQueryBuilder::PARAM_INT_ARRAY)</code>
</ImplicitToStringCast>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment