// 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 "</SELECT></TT>\n";
if ($show_contain_subfolders_option) {
) ."\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) {
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;
+ }
}
. "<TT><SELECT NAME=old>\n"
. ' <OPTION VALUE="">[ ' . _("Select a folder") . " ]</OPTION>\n";
- echo sqimap_mailbox_option_list($imapConnection, 0, $skip_folders, $boxes, false, true);
+ // use existing IMAP connection, we have no special values to show,
+ // but we do include values to skip. Use the pre-created $boxes to save an IMAP query.
+ // send NULL for the flag - ALL folders are eligible for rename!
+ // use long format to make sure folder names make sense when parents may be missing.
+ echo sqimap_mailbox_option_list($imapConnection, 0, $skip_folders, $boxes, NULL, true);
echo "</SELECT></TT>\n".
"<input type=SUBMIT VALUE=\"".
. "<TT><SELECT NAME=mailbox>\n"
. ' <OPTION VALUE="">[ ' . _("Select a folder") . " ]</OPTION>\n";
- echo sqimap_mailbox_option_list($imapConnection, 0, $skip_folders, $boxes, false, true);
+ // send NULL for the flag - ALL folders are eligible for delete (except what we've got in skiplist)
+ // use long format to make sure folder names make sense when parents may be missing.
+ echo sqimap_mailbox_option_list($imapConnection, 0, $skip_folders, $boxes, NULL, true);
echo "</SELECT></TT>\n"
. '<input type=SUBMIT VALUE="'