Removed special folders, made them user preferences
authorlkehresman <lkehresman@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Fri, 21 Apr 2000 21:36:59 +0000 (21:36 +0000)
committerlkehresman <lkehresman@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Fri, 21 Apr 2000 21:36:59 +0000 (21:36 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@452 7612ce4b-ef26-0410-bec9-ea0150e637f0

BUG
TODO
config/conf.pl
config/config_default.php
functions/imap_mailbox.php
functions/smtp.php
src/folders.php
src/left_main.php
src/load_prefs.php
src/options.php
src/options_submit.php

diff --git a/BUG b/BUG
index 4179caa..b199bc2 100644 (file)
--- a/BUG
+++ b/BUG
@@ -4,7 +4,6 @@ Known BUGS to be fixed before 0.4pre1:
        list, the space is allocated, but it is blank.
 (lme)  I'm not convinced that the cache gets deleted all the time.  I'll 
        look into this one.  
-(lme)  In UW, removing folders with a / at the end is broke
   -    When reading through 7 unread messages, every time I would read
        a message and click on "Message List" to go back, they would stay
                 marked "unread".  The caching was doing too good of a job.  (:
@@ -24,4 +23,5 @@ Known BUGS to be fixed before 0.4pre1:
        "Luke Ehresman <lehresma@css.tayloru.edu>" (without quotes)
        translates to the SMTP server as:
        <lehresma@css.tayloru.edu>>
+(lme)  In UW, removing folders with a / at the end is broke
 
diff --git a/TODO b/TODO
index 2a55965..f252d0e 100644 (file)
--- a/TODO
+++ b/TODO
@@ -6,19 +6,16 @@ initials = taken by that person
 (pl?)   Importing of address books
 (nre)   Use PHP4 Session management, get rid of cookies
   -     Make it possible to save preferences in MySQL DB or on Filesystem
-  -     Navigation between messages without going to folder list (next, prev)
   -     Configurable headers shown on the message listing, like:  cc, to, etc
   -     Filters
   -     Better inline HTML support including graphics (content-disposition)
-  -     Maybe a rewrite of mime.php (see Gustav before any work is done)
+  -     Rewrite of mime.php (see Gustav before any work is done)
   -     Make Location redirects absolute rather than relative (index.php)
   -     Foreground themes
   -     When deleting or moving messages (empty trash too), go back to the 
             list for the mail box you were looking at without having to click
             a link
 (mcp)   Spell checking
-  -     Cache the sorted messages in mailbox and use that for navigation inside
-            of mailbox (next 25, prev 25, etc.)
   -     Search mailbox(es) for given criteria
 
 
@@ -33,4 +30,7 @@ Finished:
 (lme) (9.4.00)   Better email message body parsing
 (lme) (10.4.00)  Advanced statuses on messages (Seen, Answered, etc)
 (glp) (12.4.00)  Customize how many messages are shown at once while reading a mailbox
+(nre) (16.4.00)  Navigation between messages without going to folder list (next, prev)
+(nre) (16.4.00)  Cache the sorted messages in mailbox and use that for navigation inside
+                 of mailbox (next 25, prev 25, etc.)
 (lme) (21.4.00)  Configure script
index 3dd67f0..61a49a4 100755 (executable)
@@ -12,11 +12,16 @@ $NRM = "\x1B[0m";
 # First, lets read in the data already in there...
 ############################################################              
 if ( -e "config.php") {
-   print "The file \"config.php\" exists.  Using it for defaults.\n\n";
+       $config = 1;
    open (FILE, "config.php");
-} else {
-   print "No config file found.  Reading from config_defaults.php.\n\n";
+} elsif (-e "config_default.php") {
+       $config = 2;
    open (FILE, "config_default.php");
+} else {
+       print "No configuration file found.  Please get config_default.php or\n";
+       print "config.php before running this again.  This program needs a\n";
+       print "default config file to get default values.\n";
+       exit;
 }
 
 #  Reads and parses the current configuration file (either
@@ -34,15 +39,7 @@ while ($line = <FILE>) {
          $options[1] =~ s/;.*$//g;
          $options[1] =~ s/"$//g;
 
-         if ($options[0] =~ /^special_folders/) {
-            if ($options[0] =~ /\[.*\]$/) {
-               $sub = $options[0];
-               $sub =~ s/\]$//;
-               $sub = substr ($sub, @sub-1, 1);
-
-               $special_folders[$sub] = $options[1];
-            }   
-         } elsif ($options[0] =~ /^theme\[[0-9]+\]\["PATH"\]/) {
+         if ($options[0] =~ /^theme\[[0-9]+\]\["PATH"\]/) {
             $sub = $options[0];
             $sub =~ s/\]\["PATH"\]//;
             $sub = substr ($sub, @sub-1, 1);
@@ -52,6 +49,54 @@ while ($line = <FILE>) {
             $sub =~ s/\]\["NAME"\]//;
             $sub = substr ($sub, @sub-1, 1);
             $theme_name[$sub] = $options[1];
+                       } elsif ($options[0] =~ /^ldap_server\[[0-9]+\]/) {
+            $sub = $options[0];
+            $sub = substr ($sub, length($sub)-2, 1);
+                               $continue = 0;
+                               while (($tmp = <FILE>) && ($continue != 1)) {
+                                       if ($tmp =~ /\);\s*$/) {
+                                               $continue = 1;
+                                       }
+                                       
+                                       if ($tmp =~ /^\s*"host"/i) {
+                                               $tmp =~ s/^\s*"host"\s*=>\s*"//i;
+                                               $tmp =~ s/",\s*$//;
+                                               $tmp =~ s/"\);\s*$//;
+                                               $host = $tmp;
+                                       } elsif ($tmp =~ /^\s*"base"/i) {
+                                               $tmp =~ s/^\s*"base"\s*=>\s*"//i;
+                                               $tmp =~ s/",\s*$//;
+                                               $tmp =~ s/"\);\s*$//;
+                                               print $tmp."\n";
+                                               $base = $tmp;
+                                       } elsif ($tmp =~ /^\s*"charset"/i) {
+                                               $tmp =~ s/^\s*"charset"\s*=>\s*"//i;
+                                               $tmp =~ s/",\s*$//;
+                                               $tmp =~ s/"\);\s*$//;
+                                               $charset = $tmp;
+                                       } elsif ($tmp =~ /^\s*"port"/i) {
+                                               $tmp =~ s/^\s*"port"\s*=>\s*"//i;
+                                               $tmp =~ s/",\s*$//;
+                                               $tmp =~ s/"\);\s*$//;
+                                               $port = $tmp;
+                                       } elsif ($tmp =~ /^\s*"maxrows"/i) {
+                                               $tmp =~ s/^\s*"maxrows"\s*=>\s*"//i;
+                                               $tmp =~ s/",\s*$//;
+                                               $tmp =~ s/"\);\s*$//;
+                                               $maxrows = $tmp;
+                                       } elsif ($tmp =~ /^\s*"name"/i) {
+                                               $tmp =~ s/^\s*"name"\s*=>\s*"//i;
+                                               $tmp =~ s/",\s*$//;
+                                               $tmp =~ s/"\);\s*$//;
+                                               $name = $tmp;
+                                       }
+                               }
+            $ldap_host[$sub] = $host;
+                               $ldap_base[$sub] = $base;
+                               $ldap_name[$sub] = $name;
+                               $ldap_port[$sub] = $port;
+                               $ldap_maxrows[$sub] = $maxrows;
+                               $ldap_charset[$sub] = $charset;
          } else {
             ${$options[0]} = $options[1];
          }   
@@ -65,13 +110,16 @@ if (!$sendmail_path) {
    $sendmail_path = "/usr/sbin/sendmail";
 }
 
-
 #####################################################################################
 
 while (($command ne "q") && ($command ne "Q")) {
    system "clear";
    if ($menu == 0) {
-      print $WHT."SquirrelMail Configuration Utility\n".$NRM;
+      print $WHT."SquirrelMail Configuration : ".$NRM;
+               if ($config == 1) { print "Read: config.php"; }
+               elsif ($config == 2) { print "Read: config_default.php"; }
+               print "\n";
+
       print $WHT."Main Menu --\n".$NRM;
       print "1.  Organization Preferences\n";
       print "2.  Server Settings\n";
@@ -114,10 +162,6 @@ while (($command ne "q") && ($command ne "Q")) {
       print "8.  Auto Expunge               : $WHT$auto_expunge$NRM\n";
       print "9.  Default Sub. of INBOX      : $WHT$default_sub_of_inbox$NRM\n";
       print "10. Show 'Contain Sub.' Option : $WHT$show_contain_subfolders_option$NRM\n";
-      print "11. Special Folders            > $WHT$special_folders[0]$NRM\n";
-      for ($count = 1; $count <= $#special_folders; $count++) {
-         print "                               > $WHT$special_folders[$count]$NRM\n";
-      }
       print "\n";
       print "R   Return to Main Menu\n";
    } elsif ($menu == 4) {
@@ -139,6 +183,10 @@ while (($command ne "q") && ($command ne "Q")) {
       print "R   Return to Main Menu\n";
    } elsif ($menu == 6) {
       print $WHT."Address Books (LDAP)\n".$NRM;
+      print "1.  Change Servers\n";
+      for ($count = 0; $count <= $#ldap_host; $count++) {
+         print "    >  $ldap_host[$count]\n";
+      }
       print "\n";
       print "R   Return to Main Menu\n";
    } elsif ($menu == 7) {
@@ -203,7 +251,6 @@ while (($command ne "q") && ($command ne "Q")) {
          elsif ($command == 8) { $auto_expunge                   = command28 (); }
          elsif ($command == 9) { $default_sub_of_inbox           = command29 (); }
          elsif ($command == 10){ $show_contain_subfolders_option = command210(); }
-         elsif ($command == 11){ $special_folders                = command211(); }
       } elsif ($menu == 4) {
          if    ($command == 1) { $default_charset    = command31 (); }
          elsif ($command == 2) { $auto_forward       = command32 (); }
@@ -215,6 +262,7 @@ while (($command ne "q") && ($command ne "Q")) {
             command41 (); 
          }
       } elsif ($menu == 6) {
+                       if ($command == 1) { command61(); }
       } elsif ($menu == 7) {
          if    ($command == 1) { $motd = command71 (); $motd =~ s/"/\\"/g;}
       }
@@ -645,87 +693,6 @@ sub command210 {
    return $show_contain_subfolders_option;
 }
 
-# special folders
-sub command211 {
-   print "\nSpecial folders are folders that can't be manipulated like normal\n";
-   print "user-created folders.  A couple of examples of these would be the\n";
-   print "trash folder, the sent folder, etc.\n";
-   print "Special Folders:\n";
-   $count = 0;
-   print "\n";
-   while ($count < @special_folders) {
-      print "   $count) $WHT" . $special_folders[$count] . "$NRM\n";
-      $count++;
-   }
-   print "\n[folders] command (?=help) > ";
-   $input = <STDIN>;
-   $input =~ s/[\r|\n]//g;
-   while ($input !~ /^d$/i) {
-      ## ADD
-      if ($input =~ /^\s*\+\s*.*/) {
-         $input =~ s/^\s*\+\s*//;
-         $special_folders[$#special_folders+1] = $input;
-      }
-   
-      elsif ($input =~ /^\s*-\s*[0-9]?/i) {
-         if ($input =~ /[0-9]+\s*$/) {
-            $rem_num = $input;
-            $rem_num =~ s/^\s*-\s*//g;
-            $rem_num =~ s/\s*$//;
-         } else {
-            $rem_num = $#special_folders;
-         }
-   
-         if ($rem_num == 0) {
-            print "You cannot remove INBOX.  It is a very special folder.\n";
-         } else {
-            $count = 0;
-            @new_special_folders = ();
-            $removed = 0;
-            while ($count <= $#special_folders) {
-               if ($count != $rem_num) {
-                  @new_special_folders = (@new_special_folders, $special_folders[$count]);     
-               }
-               if ($count == $rem_num) {
-                  print "Removed: $special_folders[$rem_num]\n";
-                  $removed = 1;
-               }
-               $count++;
-            }
-            if ($removed != 1) {
-               print "Error: Can't delete an entry that's not there!\n";
-            }
-            @special_folders = @new_special_folders;
-         }
-      }
-   
-      elsif ($input =~ /^\s*l\s*/i) {
-         $count = 0;
-         print "\n";
-         while ($count < @special_folders) {
-            print "   $count) $WHT" . $special_folders[$count] . "$NRM\n";
-            $count++;
-         }
-      } elsif ($input =~ /^\s*\?\s*/) {
-         print ".-------------------------.\n";
-         print "| + Folder   (add folder) |\n";
-         print "| - N     (remove folder) |\n";
-         print "| l        (list folders) |\n";
-         print "| d                (done) |\n";
-         print "`-------------------------'\n";
-      }
-   
-      else {
-         print "Unrecognized command.\n";
-      }
-   
-      print "\n[folders] command (?=help) > ";
-      $input = <STDIN>;
-      $input =~ s/[\r|\n]//g;
-   }
-   return @special_folders;
-}
-
 ############# GENERAL OPTIONS #####################
 
 # Default Charset
@@ -938,6 +905,137 @@ sub command41 {
 }   
 
 
+sub command61 {
+       print "You can now define different LDAP servers.\n";
+   print "[ldap] command (?=help) > ";
+   $input = <STDIN>;
+   $input =~ s/[\r|\n]//g;
+   while ($input ne "d") {
+      if ($input =~ /^\s*l\s*/i) {
+         $count = 0;
+         while ($count <= $#ldap_host) {
+                               print "$count. $ldap_host[$count]\n";
+                               print "        base: $ldap_base[$count]\n";
+                               if ($ldap_charset[$count]) {
+                                       print "     charset: $ldap_charset[$count]\n";
+                               }
+                               if ($ldap_port[$count]) {
+                                       print "        port: $ldap_port[$count]\n";
+                               }
+                               if ($ldap_name[$count]) {
+                                       print "        name: $ldap_name[$count]\n";
+                               }
+                               if ($ldap_maxrows[$count]) {
+                                       print "     maxrows: $ldap_maxrows[$count]\n";
+                               }
+                               print "\n";
+            $count++;
+         }
+      } elsif ($input =~ /^\s*\+/) {
+                       $sub = $#ldap_host + 1;
+         
+                       print "First, we need to have the hostname or the IP address where\n";
+                       print "this LDAP server resides.  Example: ldap.bigfoot.com\n";
+                       print "hostname: ";
+         $name = <STDIN>;
+         $name =~ s/[\r|\n]//g;
+         $ldap_host[$sub] = $name;
+                       
+                       print "\n";
+
+                       print "Next, we need the server root (base dn).  For this, an empty\n";
+                       print "string is allowed.\n";
+                       print "Example: ou=member_directory,o=netcenter.com\n";
+                       print "base: ";
+         $name = <STDIN>;
+         $name =~ s/[\r|\n]//g;
+         $ldap_base[$sub] = $name;
+
+                       print "\n";
+
+                       print "This is the TCP/IP port number for the LDAP server.  Default\n";
+                       print "port is 389.  This is optional.  Press ENTER for default.\n";
+                       print "port: ";
+         $name = <STDIN>;
+         $name =~ s/[\r|\n]//g;
+         $ldap_port[$sub] = $name;
+
+                       print "\n";
+
+                       print "This is the charset for the server.  Default is utf-8.  This\n";
+                       print "is also optional.  Press ENTER for default.\n";
+                       print "charset: ";
+         $name = <STDIN>;
+         $name =~ s/[\r|\n]//g;
+         $ldap_charset[$sub] = $name;
+
+                       print "\n";
+
+                       print "This is the name for the server, used to tag the results of\n";
+                       print "the search.  Default it \"LDAP: hostname\".  Press ENTER for default\n";
+                       print "name: ";
+         $name = <STDIN>;
+         $name =~ s/[\r|\n]//g;
+         $ldap_name[$sub] = $name;
+
+                       print "\n";
+
+                       print "You can specify the maximum number of rows in the search result.\n";
+                       print "Default is unlimited.  Press ENTER for default.\n";
+                       print "maxrows: ";
+         $name = <STDIN>;
+         $name =~ s/[\r|\n]//g;
+         $ldap_maxrows[$sub] = $name;
+
+                       print "\n";
+
+      } elsif ($input =~ /^\s*-\s*[0-9]?/) {
+         if ($input =~ /[0-9]+\s*$/) {
+            $rem_num = $input;
+            $rem_num =~ s/^\s*-\s*//g;
+            $rem_num =~ s/\s*$//;
+         } else {
+            $rem_num = $#ldap_host;
+         }
+         $count = 0;
+         @new_ldap_host = ();
+         @new_ldap_base = ();
+         @new_ldap_port = ();
+         @new_ldap_name = ();
+         @new_ldap_charset = ();
+         @new_ldap_maxrows = ();
+         while ($count <= $#ldap_host) {
+            if ($count != $rem_num) {
+               @new_ldap_host = (@new_ldap_host, $ldap_host[$count]);
+               @new_ldap_base = (@new_ldap_base, $ldap_base[$count]);
+               @new_ldap_port = (@new_ldap_port, $ldap_port[$count]);
+               @new_ldap_name = (@new_ldap_name, $ldap_name[$count]);
+               @new_ldap_charset = (@new_ldap_charset, $ldap_charset[$count]);
+               @new_ldap_maxrows = (@new_ldap_maxrows, $ldap_maxrows[$count]);
+            }
+            $count++;
+         }
+         @ldap_host = @new_ldap_host;
+         @ldap_base = @new_ldap_base;
+         @ldap_port = @new_ldap_port;
+         @ldap_name = @new_ldap_name;
+         @ldap_charset = @new_ldap_charset;
+         @ldap_maxrows = @new_ldap_maxrows;
+      } elsif ($input =~ /^\s*\?\s*/) {
+         print ".-------------------------.\n";
+         print "| +            (add host) |\n";
+         print "| - N       (remove host) |\n";
+         print "| l          (list hosts) |\n";
+         print "| d                (done) |\n";
+         print "`-------------------------'\n";
+      }
+      print "[ldap] command (?=help) > ";
+      $input = <STDIN>;
+      $input =~ s/[\r|\n]//g;
+   }
+}   
+
+
 
 sub save_data {
    open (FILE, ">config.php");
@@ -971,9 +1069,6 @@ sub save_data {
    print FILE "\t\$auto_expunge                     =  $auto_expunge;\n";
    print FILE "\t\$default_sub_of_inbox             =  $default_sub_of_inbox;\n";
    print FILE "\t\$show_contain_subfolders_option   =  $show_contain_subfolders_option;\n";
-   for ($count=0; $count <= $#special_folders; $count++) {
-      print FILE "\t\$special_folders[$count]               = \"$special_folders[$count]\";\n";
-   }
    print FILE "\n";
 
    print FILE "\t\$default_charset   = \"$default_charset\";\n";
@@ -991,6 +1086,25 @@ sub save_data {
    
    print FILE "\n";
 
+   for ($count=0; $count <= $#ldap_host; $count++) {
+               print FILE "\t\$ldap_server[$count] = Array(\n";
+               print FILE "\t\t\t\"host\" => \"$ldap_host[$count]\",\n";
+               print FILE "\t\t\t\"base\" => \"$ldap_base[$count]\"";
+               if ($ldap_name[$count]) {
+                       print FILE ",\n\t\t\t\"name\" => \"$ldap_name[$count]\"";
+               }
+               if ($ldap_port[$count]) {
+                       print FILE ",\n\t\t\t\"port\" => \"$ldap_port[$count]\"";
+               }
+               if ($ldap_charset[$count]) {
+                       print FILE ",\n\t\t\t\"charset\" => \"$ldap_charset[$count]\"";
+               }
+               if ($ldap_maxrows[$count]) {
+                       print FILE ",\n\t\t\t\"maxrows\" => \"$ldap_maxrows[$count]\"";
+               }
+       print FILE ");\n\n";
+   }
+
    print FILE "\t\$motd = \"$motd\";\n";
 
    print FILE "?>\n";
index a05f69e..1fbdcad 100644 (file)
 //    functions/abook_ldap_server.php for a list of possible
 //    parameters
 
-    $ldap_server[0] = Array("host" => "memberdir.netscape.com",
-                           "name" => "Netcenter Member Directory",
-                           "base" => "ou=member_directory,o=netcenter.com");
-
-    $ldap_server[1] = Array("host" => "ldap.bigfoot.com",
-                           "name" => "Bigfoot Directory",
-                           "base" => "",
-                           "charset" => "iso8859-1");
+    $ldap_server[0] = Array(
+                       "host" => "memberdir.netscape.com",
+                       "name" => "Netcenter Member Directory",
+                       "base" => "ou=member_directory,o=netcenter.com");
+
+    $ldap_server[1] = Array(
+                       "host" => "ldap.bigfoot.com",
+                       "name" => "Bigfoot Directory",
+                       "base" => "",
+                       "charset" => "iso8859-1");
 
 ?>
index ecb5dd2..c4dc474 100755 (executable)
     ******************************************************************************/
    function sqimap_mailbox_list ($imap_stream) {
       global $load_prefs_php, $prefs_php, $config_php, $data_dir, $username, $list_special_folders_first;
-               global $special_folders;
+               global $trash_folder, $sent_folder;
+               global $move_to_trash, $move_to_sent;
 
       $inbox_in_list = false;
       $inbox_subscribed = false;
                
                /** Now, lets sort for special folders **/
       for ($i = 0; $i < count($boxes); $i++) {
-         if ($boxes[$i]["unformatted"] == $special_folders[0]) {
+         if (strtolower($boxes[$i]["unformatted"]) == "inbox") {
             $boxesnew[0] = $boxes[$i];
             $boxes[$i]["used"] = true;
          }
 
       if ($list_special_folders_first == true) {
          for ($i = 0; $i < count($boxes); $i++) {
-            for ($j = 1; $j < count($special_folders); $j++) {
-               if (substr($boxes[$i]["unformatted"], strlen($folder_prefix), strlen($special_folders[$j])) == $special_folders[$j]) {
-                  $pos = count($boxesnew);
-                  $boxesnew[$pos] = $boxes[$i];
-                  $boxes[$i]["used"] = true;
-               }
+                               if (($boxes[$i]["unformatted"] == $trash_folder) && ($move_to_trash)) { 
+               $pos = count($boxesnew);
+               $boxesnew[$pos] = $boxes[$i];
+               $boxes[$i]["used"] = true;
+            }
+                               else if (($boxes[$i]["unformatted"] == $sent_folder) && ($move_to_sent)) {      
+               $pos = count($boxesnew);
+               $boxesnew[$pos] = $boxes[$i];
+               $boxes[$i]["used"] = true;
             }
          }
       }
                
       for ($i = 0; $i < count($boxes); $i++) {
-         if (($boxes[$i]["unformatted"] != $special_folders[0]) &&
+         if ((strtolower($boxes[$i]["unformatted"]) != "inbox") &&
              ($boxes[$i]["used"] == false))  {
             $pos = count($boxesnew);
             $boxesnew[$pos] = $boxes[$i];
     **  Returns a list of all folders, subscribed or not
     ******************************************************************************/
    function sqimap_mailbox_list_all ($imap_stream) {
-      global $special_folders, $list_special_folders_first, $folder_prefix;
+      global $list_special_folders_first, $folder_prefix;
       
       if (!function_exists ("ary_sort"))
          include ("../functions/array.php");
index 049b8da..dda8f84 100644 (file)
       $imap_stream = sqimap_login($username, $key, $imapServerAddress, $imapPort, 1);
       if (sqimap_mailbox_exists ($imap_stream, $sent_folder)) {
          sqimap_append ($imap_stream, $sent_folder, $length);
+         echo "sqimap_append ($imap_stream, $sent_folder, $length)";
          write822Header ($imap_stream, $t, $c, $b, $subject);
          writeBody ($imap_stream, $body); 
          sqimap_append_done ($imap_stream);
 
       // Delete the files uploaded for attaching (if any).
       deleteAttachments();
+               exit;
    }
 ?>
index ac03efe..2a8889f 100644 (file)
    echo _("Delete Folder");
    echo "</B></TD></TR>";
    echo "<TR><TD BGCOLOR=\"$color[4]\" ALIGN=CENTER>";
+
    $count_special_folders = 0;
-   for ($i = 0; $i < count($special_folders); $i++) {
-      for ($p = 0; $p < count($special_folders); $p++) {
-         if ($boxes[$i]["unformatted"] == $special_folders[$p]) {
-            $count_special_folders++;
-         }
-      }   
-   }
+   for ($p = 0; $p < count($boxes); $p++) {
+      if (strtolower($boxes[$i]["unformatted"]) == "inbox")
+         $count_special_folders++;
+      else if ($boxes[$i]["unformatted"] == $trash_folder)
+         $count_special_folders++;
+      else if ($boxes[$i]["unformatted"] == $sent_folder)
+         $count_special_folders++;
+   }   
 
    if ($count_special_folders < count($boxes)) {
       echo "<FORM ACTION=\"folders_delete.php\" METHOD=\"POST\">\n";
       echo "<TT><SELECT NAME=mailbox>\n";
       for ($i = 0; $i < count($boxes); $i++) {
          $use_folder = true;
-         for ($p = 0; $p < count($special_folders); $p++) {
-            if ($boxes[$i]["unformatted"] == $special_folders[$p]) {
-               $use_folder = false;
-            } else if (($trash_folder) && (substr($boxes[$i]["unformatted"], 0, strlen($trash_folder)) == $trash_folder)) {
-               $use_folder = false;
-            }
-         }
-         if ($use_folder == true) {
+                       if ((strtolower($boxes[$i]["unformatted"]) != "inbox") && 
+                           ($boxes[$i]["unformatted"] != $trash_folder) && 
+                           ($boxes[$i]["unformatted"] != $sent_folder)) 
+                       {       
             $box = $boxes[$i]["unformatted-dm"];
             $box2 = replace_spaces($boxes[$i]["formatted"]);
             echo "         <OPTION VALUE=\"$box\">$box2\n";
       if (count($boxes[$i]["flags"]) > 0) {
          for ($j = 0; $j < count($boxes[$i]["flags"]); $j++) {
             if ($boxes[$i]["flags"][$j] != "noinferiors") {
-               if (($boxes[$i]["unformatted"] == $special_folders[0]) && ($default_sub_of_inbox == true)) {
+               if ((strtolower($boxes[$i]["unformatted"]) == "inbox") && ($default_sub_of_inbox == true)) {
                   $box = $boxes[$i]["unformatted"];
                   $box2 = replace_spaces($boxes[$i]["formatted"]);
                   echo "<OPTION SELECTED VALUE=\"$box\">$box2\n";
             }   
          }    
       } else {
-         if (($boxes[$i]["unformatted"] == $special_folders[0]) && ($default_sub_of_inbox == true)) {
+         if ((strtolower($boxes[$i]["unformatted"]) == "inbox") && ($default_sub_of_inbox == true)) {
             $box = $boxes[$i]["unformatted"];
             $box2 = replace_spaces($boxes[$i]["formatted"]);
             echo "<OPTION SELECTED VALUE=\"$box\">$box2\n";
       echo "<TT><SELECT NAME=old>\n";
       for ($i = 0; $i < count($boxes); $i++) {
          $use_folder = true;
-         for ($p = 0; $p < count($special_folders); $p++) {
-            if ($boxes[$i]["unformatted"] == $special_folders[$p]) {
-               $use_folder = false;
-            } else if (($trash_folder) && (substr($boxes[$i]["unformatted"], 0, strlen($trash_folder)) == $trash_folder)) {
-               $use_folder = false;
-            }
-         }
-         if ($use_folder == true) {
+
+                       if ((strtolower($boxes[$i]["unformatted"]) != "inbox") && 
+                           ($boxes[$i]["unformatted"] != $trash_folder)  &&
+                           ($boxes[$i]["unformatted"] != $sent_folder)) 
+                       {       
             $box = $boxes[$i]["unformatted-dm"];
             $box2 = replace_spaces($boxes[$i]["formatted"]);
             echo "         <OPTION VALUE=\"$box\">$box2\n";
       echo "<TT><SELECT NAME=mailbox>\n";
       for ($i = 0; $i < count($boxes); $i++) {
          $use_folder = true;
-         for ($p = 0; $p < count($special_folders); $p++) {
-            if ($boxes[$i]["unformatted"] == $special_folders[$p]) {
-               $use_folder = false;
-            } else if (($trash_folder) && (substr($boxes[$i]["unformatted"], 0, strlen($trash_folder)) == $trash_folder)) {
-               $use_folder = false;
-            }
-         }
-         if ($use_folder == true) {
+                       if ((strtolower($boxes[$i]["unformatted"]) != "inbox") &&
+                           ($boxes[$i]["unformatted"] != $trash_folder) &&
+                           ($boxes[$i]["unformatted"] != $sent_folder)) 
+                       {       
             $box = $boxes[$i]["unformatted-dm"];
             $box2 = replace_spaces($boxes[$i]["formatted"]);
             echo "         <OPTION VALUE=\"$box\">$box2\n";
       echo "<tt><select name=mailbox>";
       for ($i = 0; $i < count($boxes_all); $i++) {
          $use_folder = true;
-         for ($p = 0; $p < count ($boxes); $p++) {
-            if ($boxes_all[$i]["unformatted"] == $boxes[$p]["unformatted"]) {
-               $use_folder = false;
-               continue;
-            }
-         }
-         if ($use_folder == true) {
+                       for ($p = 0; $p < count ($boxes); $p++) {
+                               if ($boxes_all[$i]["unformatted"] == $boxes[$p]["unformatted"]) {
+                                       $use_folder = false;
+                                       continue;
+                               } else if ($boxes_all[$i]["unformatted-dm"] == $folder_prefix) {
+                                       $use_folder = false;
+                               }
+                       }
+                       if ($use_folder == true) {      
             $box = $boxes_all[$i]["unformatted-dm"];
             $box2 = replace_spaces($boxes_all[$i]["formatted"]);
             echo "         <OPTION VALUE=\"$box\">$box2\n";
index c896fd7..8ec84d5 100644 (file)
@@ -30,9 +30,9 @@
 
    echo "<HTML>";
 
-   function formatMailboxName($imapConnection, $mailbox, $real_box, $delimeter, $color, $move_to_trash) {
-               global $folder_prefix;
-      require ("../config/config.php");
+   function formatMailboxName($imapConnection, $mailbox, $real_box, $delimeter, $color) {
+               global $folder_prefix, $trash_folder, $sent_folder;
+               global $color, $move_to_sent, $move_to_trash;
 
       $mailboxURL = urlencode($real_box);
       sqimap_mailbox_select ($imapConnection, $real_box);
          $line .= "<B>";
 
       $special_color = false;
-      for ($i = 0; $i < count($special_folders); $i++) {
-         if (((substr($real_box, strlen($folder_prefix), strlen($special_folders[$i])) == $special_folders[$i]) || ($real_box == $special_folders[0])) && ($use_special_folder_color == true))
-            $special_color = true;
-      }
+               if ((strtolower($real_box) == "inbox") ||
+                   (($real_box == $trash_folder) && ($move_to_trash)) ||
+                        (($real_box == $sent_folder) && ($move_to_sent)))
+                       $special_color = true;
 
       if ($special_color == true) {
          $line .= "<a href=\"right_main.php?sort=0&startMessage=1&mailbox=$mailboxURL\" target=\"right\" style=\"text-decoration:none\"><FONT COLOR=\"$color[11]\">";
@@ -65,7 +65,7 @@
          $line .= "&nbsp;<small>($numUnseen)</small>";
       }
 
-      if (($move_to_trash == true) && (substr($real_box, strlen($folder_prefix), strlen($trash_folder)) == $trash_folder)) {
+      if (($move_to_trash == true) && ($real_box == $trash_folder)) {
          $urlMailbox = urlencode($real_box);
          $line .= "<small>";
          $line .= "&nbsp;&nbsp;&nbsp;&nbsp;(<B><A HREF=\"empty_trash.php?numMessages=$numMessages&mailbox=$urlMailbox\" TARGET=right style=\"text-decoration:none\">"._("purge")."</A></B>)";
             $line .= replace_spaces(readShortMailboxName($mailbox, $delimeter));
             $line .= "</FONT>";
          } else {
-            $line .= formatMailboxName($imapConnection, $mailbox, $boxes[$i]["unformatted"], $delimeter, $color, $move_to_trash);
+            $line .= formatMailboxName($imapConnection, $mailbox, $boxes[$i]["unformatted"], $delimeter, $color);
          }
       } else {
-         $line .= formatMailboxName($imapConnection, $mailbox, $boxes[$i]["unformatted"], $delimeter, $color, $move_to_trash);
+         $line .= formatMailboxName($imapConnection, $mailbox, $boxes[$i]["unformatted"], $delimeter, $color);
       }
       echo "$line<BR>";
    }
index 964a6e8..6d8dcfb 100644 (file)
       }
    }
 
+   $folder_prefix = getPref($data_dir, $username, "folder_prefix");
+   if ($folder_prefix == "")
+      $folder_prefix = $default_folder_prefix;
+
+       /** Load special folders **/
+       $new_trash_folder = getPref($data_dir, $username, "trash_folder");
+       if (($new_trash_folder == "") && ($move_to_trash == true))
+               $trash_folder = $folder_prefix . $trash_folder;
+       else
+               $trash_folder = $new_trash_folder;
+
+       /** Load special folders **/
+       $new_sent_folder = getPref($data_dir, $username, "sent_folder");
+       if (($new_sent_folder == "") && ($move_to_sent == true))
+               $sent_folder = $folder_prefix . $sent_folder;
+       else
+               $sent_folder = $new_sent_folder;
+       
+   /** Load the user's sent folder preferences **/
+   $move_to_sent = getPref($data_dir, $username, "move_to_sent");
+   if ($move_to_sent == "")
+      $move_to_sent = $default_move_to_sent;
 
    /** Load the user's trash folder preferences **/
    $move_to_trash = getPref($data_dir, $username, "move_to_trash");
          $left_size = 200;
    }      
 
-   $folder_prefix = getPref($data_dir, $username, "folder_prefix");
-   if ($folder_prefix == "")
-      $folder_prefix = $default_folder_prefix;
-
    $editor_size = getPref($data_dir, $username, "editor_size");
    if ($editor_size == "")
       $editor_size = 76;
index 1a290b6..a641265 100644 (file)
 
    echo "      </TD>";
    echo "   </TR>";
-   echo "</TABLE>";
 
 
+       // TRASH FOLDER
 
-   echo "<TABLE WIDTH=100% COLS=2 ALIGN=CENTER>\n";
-   // MOVE_TO_TRASH
-   echo "   <TR>";
-   echo "      <TD WIDTH=60% ALIGN=RIGHT>";
-   echo           _("Move deleted messages to ");
-   echo "\"$trash_folder\"?";
-   echo "      </TD>";
-   echo "      <TD WIDTH=40% ALIGN=LEFT>";
-   if ($move_to_trash == true)
-      echo "         <INPUT TYPE=RADIO NAME=movetotrash VALUE=1 CHECKED>&nbsp;True<BR>";
-   else
-      echo "         <INPUT TYPE=RADIO NAME=movetotrash VALUE=1>&nbsp;True<BR>";
+       echo "<tr><td align=right>";
+       echo _("Trash Folder:");
+       echo "</td><td>";
+      echo "<TT><SELECT NAME=trash>\n";
+               if ($move_to_trash == true)
+                       echo "<option value=none>" . _("Don't use Trash");
+               else
+                       echo "<option value=none selected>" . _("Do not use Trash");
 
-   if ($move_to_trash == false)
-      echo "         <INPUT TYPE=RADIO NAME=movetotrash VALUE=0 CHECKED>&nbsp;False";
-   else
-      echo "         <INPUT TYPE=RADIO NAME=movetotrash VALUE=0>&nbsp;False";
+      for ($i = 0; $i < count($boxes); $i++) {
+         $use_folder = true;
+                       if (strtolower($boxes[$i]["unformatted"]) == "inbox") {
+            $use_folder = false;
+         }
+         if ($use_folder == true) {
+            $box = $boxes[$i]["unformatted-dm"];
+            $box2 = replace_spaces($boxes[$i]["formatted"]);
+                               if (($boxes[$i]["unformatted"] == $trash_folder) && ($move_to_trash == true))
+               echo "         <OPTION SELECTED VALUE=\"$box\">$box2\n";
+                               else
+               echo "         <OPTION VALUE=\"$box\">$box2\n";
+         }
+      }
+      echo "</SELECT></TT>\n";
+       echo "</td></tr>";      
 
-   echo "      </TD>";
-   echo "   </TR>";
+       // SENT FOLDER
+
+       echo "<tr><td align=right>";
+       echo _("Sent Folder:");
+       echo "</td><td>";
+      echo "<TT><SELECT NAME=sent>\n";
+               if ($move_to_sent == true)
+                       echo "<option value=none>" . _("Don't use Sent");
+               else
+                       echo "<option value=none selected>" . _("Do not use Sent");
+
+      for ($i = 0; $i < count($boxes); $i++) {
+         $use_folder = true;
+                       if (strtolower($boxes[$i]["unformatted"]) == "inbox") {
+            $use_folder = false;
+         }
+         if ($use_folder == true) {
+            $box = $boxes[$i]["unformatted-dm"];
+            $box2 = replace_spaces($boxes[$i]["formatted"]);
+                               if (($boxes[$i]["unformatted"] == $sent_folder) && ($move_to_sent == true))
+               echo "         <OPTION SELECTED VALUE=\"$box\">$box2\n";
+                               else
+               echo "         <OPTION VALUE=\"$box\">$box2\n";
+         }
+      }
+      echo "</SELECT></TT>\n";
+       echo "</td></tr>";      
+
+
+   echo "</TABLE>";
+
+   echo "<TABLE WIDTH=100% COLS=2 ALIGN=CENTER>\n";
 
    // SHOW_NUM
    echo "   <TR>";
index 39e2a61..b96d031 100644 (file)
@@ -21,7 +21,6 @@
    setPref($data_dir, $username, "email_address", stripslashes($email_address));
    setPref($data_dir, $username, "reply_to", stripslashes($reply_to));
    setPref($data_dir, $username, "chosen_theme", $chosentheme);
-   setPref($data_dir, $username, "move_to_trash", $movetotrash);
    setPref($data_dir, $username, "show_num", $shownum);
    setPref($data_dir, $username, "wrap_at", $wrapat);
    setPref($data_dir, $username, "editor_size", $editorsize);
    setPref($data_dir, $username, "language", $language);
    setPref($data_dir, $username, "left_size", $leftsize);
    setPref($data_dir, $username, "folder_prefix", $folderprefix);
+
+       if ($trash != "none") {
+       setPref($data_dir, $username, "move_to_trash", true);
+               setPref($data_dir, $username, "trash_folder", $trash);
+       } else {
+       setPref($data_dir, $username, "move_to_trash", false);
+               setPref($data_dir, $username, "trash_folder", "");
+       }
+   
+       if ($sent != "none") {
+       setPref($data_dir, $username, "move_to_sent", true);
+               setPref($data_dir, $username, "sent_folder", $sent);
+       } else {
+       setPref($data_dir, $username, "move_to_sent", false);
+               setPref($data_dir, $username, "sent_folder", "");
+       }
    
    setSig($data_dir, $username, stripslashes($signature_edit));