From 2c71bdcd6486eca2213964fc3896fc2595b35b32 Mon Sep 17 00:00:00 2001 From: Daniel Kesselberg Date: Wed, 29 Jul 2026 00:04:16 +0200 Subject: [PATCH] fix(mailbox): Flag shared mailboxes as shared RFC-2342 IMAP4 Namespace [^1] 1 Personal Namespace 2 Other Users' Namespace 3 Shared Namespace Before this change only mailboxes with type 2 (Other User's Namespace) were flagged as shared. Now also mailboxes with type 3 (Shared Namespace) are flagged. [^1]: https://datatracker.ietf.org/doc/html/rfc2342 Assisted-by: Claude:claude-opus-5 Signed-off-by: Daniel Kesselberg --- lib/IMAP/MailboxSync.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/IMAP/MailboxSync.php b/lib/IMAP/MailboxSync.php index cd419eea65..690c622a16 100644 --- a/lib/IMAP/MailboxSync.php +++ b/lib/IMAP/MailboxSync.php @@ -39,6 +39,11 @@ class MailboxSync { use TTransactional; + private const NON_PERSONAL_NAMESPACE_TYPES = [ + Horde_Imap_Client_Data_Namespace::NS_OTHER, + Horde_Imap_Client_Data_Namespace::NS_SHARED, + ]; + /** @var ITimeFactory */ private $timeFactory; @@ -239,7 +244,7 @@ private function createMailboxFromFolder(Account $account, Folder $folder, ?Hord private function isMailboxShared(?Horde_Imap_Client_Namespace_List $namespaces, Mailbox $mailbox): bool { foreach (($namespaces ?? []) as $namespace) { /** @var Horde_Imap_Client_Data_Namespace $namespace */ - if ($namespace->type === Horde_Imap_Client_Data_Namespace::NS_OTHER && str_starts_with($mailbox->getName(), $namespace->name)) { + if (in_array($namespace->type, self::NON_PERSONAL_NAMESPACE_TYPES, true) && str_starts_with($mailbox->getName(), $namespace->name)) { return true; } }