From 0f48e6e660cb5aa0d7bfdf11967b648c78cb64f9 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Tue, 8 Apr 2014 09:14:05 +0200 Subject: Fix message UID extraction for _uid=*; update unread count for all affected mailboxes --- program/include/rcmail.php | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'program/include/rcmail.php') diff --git a/program/include/rcmail.php b/program/include/rcmail.php index 952e8a5f2..87cf99237 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -2029,13 +2029,24 @@ class rcmail extends rcube return $uid; } - // create a per-folder UIDs array $result = array(); - foreach (explode(',', $_uid) as $uid) { - list($uid, $mbox) = explode('-', $uid, 2); - if (empty($mbox)) - $mbox = $_mbox; - $result[$mbox][] = $uid; + + // special case: * + if ($_uid == '*' && is_object($_SESSION['search'][1]) && $_SESSION['search'][1]->multi) { + // extract the full list of UIDs per folder from the search set + foreach ($_SESSION['search'][1]->sets as $subset) { + $mbox = $subset->get_parameters('MAILBOX'); + $result[$mbox] = $subset->get(); + } + } + else { + // create a per-folder UIDs array + foreach (explode(',', $_uid) as $uid) { + list($uid, $mbox) = explode('-', $uid, 2); + if (empty($mbox)) + $mbox = $_mbox; + $result[$mbox][] = $uid; + } } return $result; -- cgit v1.2.3