diff options
author | Anna Larch <anna@nextcloud.com> | 2021-05-06 23:36:20 +0300 |
---|---|---|
committer | Anna Larch <anna@nextcloud.com> | 2021-05-26 16:38:18 +0300 |
commit | 540ca4b1ef164f1a05e8c4f457ed8aca7ccebabd (patch) | |
tree | 20a536d98ca52f81010478c620208a2cbe5e6b90 /lib/IMAP | |
parent | 4f5692a41c64d7878c9e6a167c72665cf70b8a33 (diff) |
Add bg job for label sync
Signed-off-by: Anna Larch <anna@nextcloud.com>
Diffstat (limited to 'lib/IMAP')
-rw-r--r-- | lib/IMAP/MessageMapper.php | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/lib/IMAP/MessageMapper.php b/lib/IMAP/MessageMapper.php index 95161fd8a..112d93c6c 100644 --- a/lib/IMAP/MessageMapper.php +++ b/lib/IMAP/MessageMapper.php @@ -28,6 +28,7 @@ use Horde_Imap_Client_Base; use Horde_Imap_Client_Data_Fetch; use Horde_Imap_Client_Exception; use Horde_Imap_Client_Fetch_Query; +use Horde_Imap_Client_Search_Query; use Horde_Imap_Client_Ids; use Horde_Imap_Client_Socket; use Horde_Mime_Mail; @@ -327,12 +328,12 @@ class MessageMapper { */ public function addFlag(Horde_Imap_Client_Socket $client, Mailbox $mailbox, - int $uid, + array $uids, string $flag): void { $client->store( $mailbox->getName(), [ - 'ids' => new Horde_Imap_Client_Ids($uid), + 'ids' => new Horde_Imap_Client_Ids($uids), 'add' => [$flag], ] ); @@ -343,12 +344,12 @@ class MessageMapper { */ public function removeFlag(Horde_Imap_Client_Socket $client, Mailbox $mailbox, - int $uid, + array $uids, string $flag): void { $client->store( $mailbox->getName(), [ - 'ids' => new Horde_Imap_Client_Ids($uid), + 'ids' => new Horde_Imap_Client_Ids($uids), 'remove' => [$flag], ] ); @@ -356,6 +357,23 @@ class MessageMapper { /** * @param Horde_Imap_Client_Socket $client + * @param Mailbox $mailbox + * @param string $flag + * @return int[] + * + * @throws Horde_Imap_Client_Exception + */ + public function getFlagged(Horde_Imap_Client_Socket $client, + Mailbox $mailbox, + string $flag): array { + $query = new Horde_Imap_Client_Search_Query(); + $query->flag($flag, true); + $messages = $client->search($mailbox->getName(), $query); + return $messages['match']->ids ?? []; + } + + /** + * @param Horde_Imap_Client_Socket $client * @param string $mailbox * @param int $uid * |