X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Ffolders.php;h=73aa9eced00f28c73d57b399fa7ba5cbe64275ff;hb=629923d397e65b228b106ac109ed3a238be07a3b;hp=6b436539ecc18cb209e36a7951f6930b9b83a8ca;hpb=45f836eb023db989c1f0ed8900550d4ccc9d8ed9;p=squirrelmail.git
diff --git a/src/folders.php b/src/folders.php
index 6b436539..73aa9ece 100644
--- a/src/folders.php
+++ b/src/folders.php
@@ -120,9 +120,9 @@ if ( $default_sub_of_inbox == false ) {
// Call sqimap_mailbox_option_list, using existing connection to IMAP server,
// the arrays of folders to include or skip (assembled above),
-// and indicate that folders listed should be parents (we're creating folders,
-// so we want to list the folders that can contain other folders), also force long form
-echo sqimap_mailbox_option_list($imapConnection, $show_selected, $skip_folders, $boxes, true, true);
+// use 'noinferiors' as a mailbox filter to leave out folders that can not contain other folders.
+// use the long format to show subfolders in an intelligible way if parent is missing (special folder)
+echo sqimap_mailbox_option_list($imapConnection, $show_selected, $skip_folders, $boxes, 'noinferiors', true);
echo "\n";
if ($show_contain_subfolders_option) {
@@ -138,6 +138,8 @@ echo html_tag( 'tr',
) ."\n";
/** count special folders **/
+
+// FIX ME, why not check if the folders are defined IMHO move_to_sent, move_to_trash has nothing todo with it
$count_special_folders = 0;
$num_max = 1;
if (strtolower($imap_server_type) == "courier" || $move_to_trash) {
@@ -149,25 +151,36 @@ if ($move_to_sent) {
if ($save_as_draft) {
$num_max++;
}
+
+// What if move_to_sent = false and $sent_folder is set? Should it still be skipped?
+
for ($p = 0, $cnt = count($boxes); $p < $cnt && $count_special_folders < $num_max; $p++) {
- if (strtolower($boxes[$p]['unformatted']) == 'inbox')
- $count_special_folders++;
- else if (strtolower($imap_server_type) == 'courier' &&
- strtolower($boxes[$p]['unformatted']) == 'inbox.trash') {
- $count_special_folders++;
- }
- else if ($boxes[$p]['unformatted'] == $trash_folder && $trash_folder) {
- $count_special_folders++;
- array_push($skip_folders, strtolower($trash_folder));
- }
- else if ($boxes[$p]['unformatted'] == $sent_folder && $sent_folder) {
- $count_special_folders++;
- array_push($skip_folders, strtolower($sent_folder));
- }
- else if ($boxes[$p]['unformatted'] == $draft_folder && $draft_folder) {
- $count_special_folders++;
- array_push($skip_folders, strtolower($draft_folder));
- }
+ switch ($boxes[$p]['unformatted'])
+ {
+ case (strtoupper($boxes[$p]['unformatted']) == 'INBOX'):
+ ++$count_special_folders;
+ $skip_folders[] = $boxes[$p]['unformatted'];
+ break;
+ // FIX ME inbox.trash should be set in conf.pl
+ case 'inbox.trash':
+ if (strtolower($imap_server_type) == 'courier') {
+ ++$count_special_folders;
+ }
+ break;
+ case $trash_folder:
+ ++$count_special_folders;
+ $skip_folders[] = $trash_folder;
+ break;
+ case $sent_folder:
+ ++$count_special_folders;
+ $skip_folders[] = $sent_folder;
+ break;
+ case $draft_folder:
+ ++$count_special_folders;
+ $skip_folders[] = $draft_folder;
+ break;
+ default: break;
+ }
}
@@ -183,7 +196,11 @@ if ($count_special_folders < count($boxes)) {
. "\n".
"\n"
. '$box2\n";
}
}
@@ -278,8 +297,8 @@ if(!$no_list_for_subscribe) {
}
}
if ($use_folder == true) {
- $box[$q] = $boxes_all[$i]['unformatted-dm'];
- $box2[$q] = imap_utf7_decode_local($boxes_all[$i]['unformatted-disp']);
+ $box[$q] = htmlspecialchars($boxes_all[$i]['unformatted-dm']);
+ $box2[$q] = htmlspecialchars(imap_utf7_decode_local($boxes_all[$i]['unformatted-disp']));
$q++;
}
}