summaryrefslogtreecommitdiff
path: root/roundcubemail/program/include/rcube_imap.php
diff options
context:
space:
mode:
authoralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2010-04-28 12:24:48 +0000
committeralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2010-04-28 12:24:48 +0000
commit41f807e9be48b543181b213c26a5342de5c71572 (patch)
treead27502162d9c56cbfa1dcaaff30f2ca17eb5155 /roundcubemail/program/include/rcube_imap.php
parent08b40793b3371090877abd730a53afda701e9c88 (diff)
- Fix folder subscription checking (#1486684)
- Fix INBOX appears (sometimes) twice in mailbox list (#1486672) git-svn-id: https://svn.roundcube.net/trunk@3573 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/include/rcube_imap.php')
-rw-r--r--roundcubemail/program/include/rcube_imap.php23
1 files changed, 14 insertions, 9 deletions
diff --git a/roundcubemail/program/include/rcube_imap.php b/roundcubemail/program/include/rcube_imap.php
index 7a1ce4787..f5b17285e 100644
--- a/roundcubemail/program/include/rcube_imap.php
+++ b/roundcubemail/program/include/rcube_imap.php
@@ -2482,10 +2482,10 @@ class rcube_imap
$a_out = array();
$a_mboxes = $this->_list_mailboxes($root, $filter);
- foreach ($a_mboxes as $mbox_row) {
- $name = $this->mod_mailbox($mbox_row, 'out');
- if (strlen($name))
+ foreach ($a_mboxes as $idx => $mbox_row) {
+ if ($name = $this->mod_mailbox($mbox_row, 'out'))
$a_out[] = $name;
+ unset($a_mboxes[$idx]);
}
// INBOX should always be available
@@ -2554,11 +2554,16 @@ class rcube_imap
$a_mboxes = $this->conn->listMailboxes($this->mod_mailbox($root), '*');
// modify names with root dir
- foreach ($a_mboxes as $mbox_name) {
+ foreach ($a_mboxes as $idx => $mbox_name) {
if ($name = $this->mod_mailbox($mbox_name, 'out'))
$a_folders[] = $name;
+ unset($a_mboxes[$idx]);
}
+ // INBOX should always be available
+ if (!in_array('INBOX', $a_folders))
+ array_unshift($a_folders, 'INBOX');
+
// filter folders and sort them
$a_folders = $this->_sort_mailbox_list($a_folders);
return $a_folders;
@@ -2708,7 +2713,7 @@ class rcube_imap
foreach ($a_mboxes as $mbox_name) {
$mailbox = $this->mod_mailbox($mbox_name);
$sub_mboxes = $this->conn->listMailboxes($this->mod_mailbox(''),
- $mbox_name . $this->delimiter . '*');
+ $mbox_name . $this->delimiter . '*');
// unsubscribe mailbox before deleting
$this->conn->unsubscribe($mailbox);
@@ -2770,13 +2775,13 @@ class rcube_imap
return true;
if ($subscription) {
- if ($a_folders = $this->conn->listSubscribed($this->mod_mailbox(''), $mbox_name))
- return true;
+ $a_folders = $this->conn->listSubscribed($this->mod_mailbox(''), $mbox_name);
}
else {
$a_folders = $this->conn->listMailboxes($this->mod_mailbox(''), $mbox_name);
-
- if (is_array($a_folders) && in_array($this->mod_mailbox($mbox_name), $a_folders))
+ }
+
+ if (is_array($a_folders) && in_array($this->mod_mailbox($mbox_name), $a_folders)) {
return true;
}
}