summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2010-10-27 06:53:11 +0000
committeralecpl <alec@alec.pl>2010-10-27 06:53:11 +0000
commit36ed9d7ec69a0e774c13ed4c583b8674eee4fb98 (patch)
treefa7856fa07332d83a9693bef011dbf39963da9d6
parentd21a05b48117ce7dbef4ad7997ed15c26bccf481 (diff)
- Improve performance of rcube_imap_generic::countMessages() using STATUS instead of SELECT
-rw-r--r--program/include/rcube_imap_generic.php7
-rw-r--r--program/steps/settings/manage_folders.inc2
2 files changed, 7 insertions, 2 deletions
diff --git a/program/include/rcube_imap_generic.php b/program/include/rcube_imap_generic.php
index 41240a2d1..2171e5d5d 100644
--- a/program/include/rcube_imap_generic.php
+++ b/program/include/rcube_imap_generic.php
@@ -944,11 +944,16 @@ class rcube_imap_generic
$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 1dd459aef..adcb5eecf 100644
--- a/program/steps/settings/manage_folders.inc
+++ b/program/steps/settings/manage_folders.inc
@@ -299,7 +299,7 @@ function rcube_subscription_form($attrib)
$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) {