and back in sync again
[squirrelmail.git] / src / folders.php
index 6b436539ecc18cb209e36a7951f6930b9b83a8ca..9a183392dcd0dd95cac52149c4677fbc62e70415 100644 (file)
@@ -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 "</SELECT></TT>\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)) {
        . "<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=\"".
@@ -211,7 +228,9 @@ if ($count_special_folders < count($boxes)) {
        . "<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="'