summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2009-10-19 07:47:10 +0000
committeralecpl <alec@alec.pl>2009-10-19 07:47:10 +0000
commitefe93ad11610fcfd42c76a1cdddb07be00f8cf1b (patch)
treedb8b4554aacf780d2c80654b8d7cb36c17a0f86a
parent16dd372574ca0e03481b1ca65c65556eddb40be1 (diff)
- fix message cache clearing when folder is empty + small max() warning fix
-rw-r--r--program/include/rcube_imap.php21
1 files changed, 9 insertions, 12 deletions
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index a358186cf..31156e46c 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -603,21 +603,23 @@ class rcube_imap
{
if ($this->skip_deleted) {
// @TODO: this could be cached
- $msg_index = $this->_search_index($mailbox, 'ALL UNDELETED');
- $max = max($msg_index);
- list($begin, $end) = $this->_get_message_range(count($msg_index), $page);
- $msg_index = array_slice($msg_index, $begin, $end-$begin);
+ if ($msg_index = $this->_search_index($mailbox, 'ALL UNDELETED')) {
+ $max = max($msg_index);
+ list($begin, $end) = $this->_get_message_range(count($msg_index), $page);
+ $msg_index = array_slice($msg_index, $begin, $end-$begin);
+ }
} else if ($max = iil_C_CountMessages($this->conn, $mailbox)) {
list($begin, $end) = $this->_get_message_range($max, $page);
$msg_index = range($begin+1, $end);
} else
- return array();
+ $msg_index = array();
if ($slice)
$msg_index = array_slice($msg_index, ($this->sort_order == 'DESC' ? 0 : -$slice), $slice);
// fetch reqested headers from server
- $this->_fetch_headers($mailbox, join(",", $msg_index), $a_msg_headers, $cache_key);
+ if ($msg_index)
+ $this->_fetch_headers($mailbox, join(",", $msg_index), $a_msg_headers, $cache_key);
}
// use SORT command
else if ($this->get_capability('sort') && ($msg_index = iil_C_Sort($this->conn, $mailbox, $this->sort_field, $this->skip_deleted ? 'UNDELETED' : '')))
@@ -633,13 +635,8 @@ class rcube_imap
$this->_fetch_headers($mailbox, join(',', $msg_index), $a_msg_headers, $cache_key);
}
// fetch specified header for all messages and sort
- else
+ else if ($a_index = iil_C_FetchHeaderIndex($this->conn, $mailbox, "1:*", $this->sort_field, $this->skip_deleted))
{
- $a_index = iil_C_FetchHeaderIndex($this->conn, $mailbox, "1:*", $this->sort_field, $this->skip_deleted);
-
- if (empty($a_index))
- return array();
-
asort($a_index); // ASC
$msg_index = array_keys($a_index);
$max = max($msg_index);