From ed1222e45300f61d1df0f2e7ec78b2213cca6205 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Mon, 14 Apr 2014 14:45:19 -0400 Subject: [PATCH] Merge branch 'master' of github.com:roundcube/roundcubemail --- program/lib/Roundcube/rcube_imap.php | 36 +++++++++++++++++++++++------------- 1 files changed, 23 insertions(+), 13 deletions(-) diff --git a/program/lib/Roundcube/rcube_imap.php b/program/lib/Roundcube/rcube_imap.php index 5c30327..baca052 100644 --- a/program/lib/Roundcube/rcube_imap.php +++ b/program/lib/Roundcube/rcube_imap.php @@ -1544,19 +1544,26 @@ */ public function search_once($folder = null, $str = 'ALL') { - if (!$str) { - $str = 'ALL'; - } - - if (!strlen($folder)) { - $folder = $this->folder; - } - if (!$this->check_connection()) { return new rcube_result_index(); } - $index = $this->conn->search($folder, $str, true); + if (!$str) { + $str = 'ALL'; + } + + // multi-folder search + if (is_array($folder) && count($folder) > 1) { + $searcher = new rcube_imap_search($this->options, $this->conn); + $index = $searcher->exec($folder, $str, $this->default_charset); + } + else { + $folder = is_array($folder) ? $folder[0] : $folder; + if (!strlen($folder)) { + $folder = $this->folder; + } + $index = $this->conn->search($folder, $str, true); + } return $index; } @@ -1707,13 +1714,13 @@ */ public function get_message_headers($uid, $folder = null, $force = false) { - if (!strlen($folder)) { - $folder = $this->folder; - } - // decode combined UID-folder identifier if (preg_match('/^\d+-.+/', $uid)) { list($uid, $folder) = explode('-', $uid, 2); + } + + if (!strlen($folder)) { + $folder = $this->folder; } // get cached headers @@ -1726,6 +1733,9 @@ else { $headers = $this->conn->fetchHeader( $folder, $uid, true, true, $this->get_fetch_headers()); + + if (is_object($headers)) + $headers->folder = $folder; } return $headers; -- Gitblit v1.9.1