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