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/IMAP
diff options
context:
space:
mode:
authorAnna Larch <anna@nextcloud.com>2021-05-06 23:36:20 +0300
committerAnna Larch <anna@nextcloud.com>2021-05-26 16:38:18 +0300
commit540ca4b1ef164f1a05e8c4f457ed8aca7ccebabd (patch)
tree20a536d98ca52f81010478c620208a2cbe5e6b90 /lib/IMAP
parent4f5692a41c64d7878c9e6a167c72665cf70b8a33 (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.php26
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
*