- 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
release-0.6
alecpl 14 years ago
parent e095094591
commit 16378fe3a2

@ -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;
}
}

@ -566,17 +566,14 @@ else
if ($store_target)
{
// check if mailbox exists
if (!in_array($store_target, $IMAP->list_mailboxes()))
{
// folder may be existing but not subscribed (#1485241)
if (!in_array($store_target, $IMAP->list_unsubscribed()))
$store_folder = $IMAP->create_mailbox($store_target, TRUE);
else if ($IMAP->subscribe($store_target))
$store_folder = TRUE;
}
else
$store_folder = TRUE;
// check if folder is subscribed
if ($IMAP->mailbox_exists($store_target, true))
$store_folder = true;
// folder may be existing but not subscribed (#1485241)
else if (!$IMAP->mailbox_exists($store_target))
$store_folder = $IMAP->create_mailbox($store_target, true);
else if ($IMAP->subscribe($store_target))
$store_folder = true;
// append message to sent box
if ($store_folder) {

Loading…
Cancel
Save