summaryrefslogtreecommitdiff
path: root/roundcubemail/program/include/rcube_imap.php
diff options
context:
space:
mode:
authoralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2010-05-03 06:41:57 +0000
committeralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2010-05-03 06:41:57 +0000
commite5e1b88cd41ae9ff9979a659e9dc861232a0b155 (patch)
tree0b60240d4e4df1680317e2a82f27332d252d3095 /roundcubemail/program/include/rcube_imap.php
parent5545618783071011a6a8eb7afe1bb1f4e2902927 (diff)
- preformance fix: don't load full folders list when checking for folder
existance in sendmail.inc, use internal cache to make mailbox_exists() faster when called more than one time for the same folder git-svn-id: https://svn.roundcube.net/trunk@3586 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/include/rcube_imap.php')
-rw-r--r--roundcubemail/program/include/rcube_imap.php5
1 files changed, 5 insertions, 0 deletions
diff --git a/roundcubemail/program/include/rcube_imap.php b/roundcubemail/program/include/rcube_imap.php
index 9db6427b2..6e4d9890e 100644
--- a/roundcubemail/program/include/rcube_imap.php
+++ b/roundcubemail/program/include/rcube_imap.php
@@ -2774,6 +2774,10 @@ class rcube_imap
if ($mbox_name == 'INBOX')
return true;
+ $key = $subscription ? 'subscribed' : 'existing';
+ if (is_array($this->icache[$key]) && in_array($mbox_name, $this->icache[$key]))
+ return true;
+
if ($subscription) {
$a_folders = $this->conn->listSubscribed($this->mod_mailbox(''), $mbox_name);
}
@@ -2782,6 +2786,7 @@ class rcube_imap
}
if (is_array($a_folders) && in_array($this->mod_mailbox($mbox_name), $a_folders)) {
+ $this->icache[$key][] = $mbox_name;
return true;
}
}