summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2012-04-23 09:22:15 +0000
committeralecpl <alec@alec.pl>2012-04-23 09:22:15 +0000
commit91cb9dfe789871f9f0e9080752e21b7d4aaef94d (patch)
tree479e1984570ed79bb1565e09e23c9caa2bce34b9
parente327ca25efcb9ace2f43a38ac81d44856221f0a0 (diff)
- Fix parsing ESEARCH (ALL) result and enabling ESEARCH for ordinary searches
-rw-r--r--program/include/rcube_imap_generic.php2
-rw-r--r--program/include/rcube_result_index.php4
2 files changed, 4 insertions, 2 deletions
diff --git a/program/include/rcube_imap_generic.php b/program/include/rcube_imap_generic.php
index 9fce20a23..77b0cc464 100644
--- a/program/include/rcube_imap_generic.php
+++ b/program/include/rcube_imap_generic.php
@@ -1611,7 +1611,7 @@ class rcube_imap_generic
// If ESEARCH is supported always use ALL
// but not when items are specified or using simple id2uid search
- if (empty($items) && ((int) $criteria != $criteria)) {
+ if (empty($items) && preg_match('/[^0-9]/', $criteria)) {
$items = array('ALL');
}
diff --git a/program/include/rcube_result_index.php b/program/include/rcube_result_index.php
index 2572aea77..cd900677e 100644
--- a/program/include/rcube_result_index.php
+++ b/program/include/rcube_result_index.php
@@ -100,7 +100,7 @@ class rcube_result_index
// @TODO: Implement compression using compressMessageSet() in __sleep() and __wakeup() ?
// @TODO: work with compressed result?!
if (isset($this->params['ALL'])) {
- $data[$idx] = implode(self::SEPARATOR_ELEMENT,
+ $data_item = implode(self::SEPARATOR_ELEMENT,
rcube_imap_generic::uncompressMessageSet($this->params['ALL']));
}
}
@@ -111,6 +111,8 @@ class rcube_result_index
unset($data[$i]);
}
+ $data = array_filter($data);
+
if (empty($data)) {
return;
}