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