diff options
Diffstat (limited to 'program/include')
-rw-r--r-- | program/include/rcmail.php | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/program/include/rcmail.php b/program/include/rcmail.php index 9c7ed98aa..c026eed67 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -1360,12 +1360,31 @@ class rcmail extends rcube $delimiter = $storage->get_hierarchy_delimiter(); - foreach ($list as $folder) { - if (empty($p['exceptions']) || !in_array($folder, $p['exceptions'])) { - $this->build_folder_tree($a_mailboxes, $folder, $delimiter); + if (!empty($p['exceptions'])) { + $list = array_diff($list, (array) $p['exceptions']); + } + + if (!empty($p['additional'])) { + foreach ($p['additional'] as $add_folder) { + $add_items = explode($delimiter, $add_folder); + $folder = ''; + while (count($add_items)) { + $folder .= array_shift($add_items); + + // @TODO: sorting + if (!in_array($folder, $list)) { + $list[] = $folder; + } + + $folder .= $delimiter; + } } } + foreach ($list as $folder) { + $this->build_folder_tree($a_mailboxes, $folder, $delimiter); + } + $select = new html_select($p); if ($p['noselection']) { |