From 36ed9d7ec69a0e774c13ed4c583b8674eee4fb98 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Wed, 27 Oct 2010 02:53:11 -0400
Subject: [PATCH] - Improve performance of rcube_imap_generic::countMessages() using STATUS instead of SELECT

---
 program/steps/settings/manage_folders.inc |    2 +-
 program/include/rcube_imap_generic.php    |    7 ++++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/program/include/rcube_imap_generic.php b/program/include/rcube_imap_generic.php
index 41240a2..2171e5d 100644
--- a/program/include/rcube_imap_generic.php
+++ b/program/include/rcube_imap_generic.php
@@ -944,11 +944,16 @@
 		    $this->selected = '';
 	    }
 
-	    $this->select($mailbox);
 	    if ($this->selected == $mailbox) {
 		    return $this->data['EXISTS'];
 	    }
 
+        // Try STATUS, should be faster
+        $counts = $this->status($mailbox, array('MESSAGES'));
+        if (is_array($counts)) {
+            return (int) $counts['MESSAGES'];
+        }
+
         return false;
     }
 
diff --git a/program/steps/settings/manage_folders.inc b/program/steps/settings/manage_folders.inc
index 1dd459a..adcb5ee 100644
--- a/program/steps/settings/manage_folders.inc
+++ b/program/steps/settings/manage_folders.inc
@@ -299,7 +299,7 @@
     $table->add_row(array('id' => 'rcmrow'.$idx, 'class' => join(' ', $classes)));
     
     $table->add('name', Q($display_folder));
-    $table->add('msgcount', ($folder['virtual'] ? '' : $IMAP->messagecount($folder['id'], 'ALL', false, false)));
+    $table->add('msgcount', (($folder['virtual'] || $noselect) ? '' : $IMAP->messagecount($folder['id'], 'ALL', false, false)));
     $table->add('subscribed', $checkbox_subscribe->show(($subscribed ? $folder_utf8 : ''),
       array('value' => $folder_utf8, 'disabled' => ($protected || $noselect) ? 'disabled' : '')));
     if ($threading_supported) {

--
Gitblit v1.9.1