From efe93ad11610fcfd42c76a1cdddb07be00f8cf1b Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Mon, 19 Oct 2009 03:47:10 -0400
Subject: [PATCH] - fix message cache clearing when folder is empty + small max() warning fix

---
 program/include/rcube_imap.php |   21 +++++++++------------
 1 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index a358186..31156e4 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -603,21 +603,23 @@
       {
         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 @@
       $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);

--
Gitblit v1.9.1