瀏覽代碼

Lots of changes to get closer to having save as draft working. Please, keep working hard on this!!!

thomppj 24 年之前
父節點
當前提交
0e0192b790
共有 12 個文件被更改,包括 659 次插入586 次删除
  1. 111 50
      config/conf.pl
  2. 17 15
      functions/imap_general.php
  3. 30 17
      functions/imap_mailbox.php
  4. 9 8
      functions/imap_messages.php
  5. 121 127
      functions/mailbox_display.php
  6. 22 19
      src/compose.php
  7. 12 13
      src/draft_actions.php
  8. 23 7
      src/left_main.php
  9. 198 209
      src/load_prefs.php
  10. 9 8
      src/options_folder.php
  11. 9 10
      src/read_body.php
  12. 98 103
      src/validate.php

+ 111 - 50
config/conf.pl

@@ -315,20 +315,22 @@ while (($command ne "q") && ($command ne "Q")) {
       print "R   Return to Main Menu\n";
    } elsif ($menu == 3) {
       print $WHT."Folder Defaults\n".$NRM;
-      print "1.  Default Folder Prefix      : $WHT$default_folder_prefix$NRM\n";
-      print "2.  Show Folder Prefix Option  : $WHT$show_prefix_option$NRM\n";
-      print "3.  Trash Folder               : $WHT$trash_folder$NRM\n";
-      print "4.  Sent Folder                : $WHT$sent_folder$NRM\n";
-      print "5.  By default, move to trash  : $WHT$default_move_to_trash$NRM\n";
-      print "6.  By default, move to sent   : $WHT$default_move_to_sent$NRM\n";
-      print "7.  List Special Folders First : $WHT$list_special_folders_first$NRM\n";
-      print "8.  Show Special Folders Color : $WHT$use_special_folder_color$NRM\n";
-      print "9.  Auto Expunge               : $WHT$auto_expunge$NRM\n";
-      print "10. Default Sub. of INBOX      : $WHT$default_sub_of_inbox$NRM\n";
-      print "11. Show 'Contain Sub.' Option : $WHT$show_contain_subfolders_option$NRM\n";
-      print "12. Default Unseen Notify      : $WHT$default_unseen_notify$NRM\n";
-      print "13. Default Unseen Type        : $WHT$default_unseen_type$NRM\n";
-	  print "14. Auto create Sent and Trash : $WHT$auto_create_special$NRM\n";
+      print "1.  Default Folder Prefix       : $WHT$default_folder_prefix$NRM\n";
+      print "2.  Show Folder Prefix Option   : $WHT$show_prefix_option$NRM\n";
+      print "3.  Trash Folder                : $WHT$trash_folder$NRM\n";
+      print "4.  Sent Folder                 : $WHT$sent_folder$NRM\n";
+      print "5.  Drafts Folder               : $WHT$draft_folder$NRM\n";
+      print "6.  By default, move to trash   : $WHT$default_move_to_trash$NRM\n";
+      print "7.  By default, move to sent    : $WHT$default_move_to_sent$NRM\n";
+      print "8.  By default, save as draft   : $WHT$default_save_as_draft$NRM\n";
+      print "9.  List Special Folders First  : $WHT$list_special_folders_first$NRM\n";
+      print "10. Show Special Folders Color  : $WHT$use_special_folder_color$NRM\n";
+      print "11. Auto Expunge                : $WHT$auto_expunge$NRM\n";
+      print "12. Default Sub. of INBOX       : $WHT$default_sub_of_inbox$NRM\n";
+      print "13. Show 'Contain Sub.' Option  : $WHT$show_contain_subfolders_option$NRM\n";
+      print "14. Default Unseen Notify       : $WHT$default_unseen_notify$NRM\n";
+      print "15. Default Unseen Type         : $WHT$default_unseen_type$NRM\n";
+      print "16. Auto Create Special Folders : $WHT$auto_create_special$NRM\n";
       print "\n";
       print "R   Return to Main Menu\n";
    } elsif ($menu == 4) {
@@ -459,32 +461,34 @@ while (($command ne "q") && ($command ne "Q")) {
          elsif ($command == 4) { $signout_page  = command4 (); }
 	 elsif ($command == 5) { $squirrelmail_default_language = command5(); }
       } elsif ($menu == 2) {
-         if    ($command == 1)  { $domain             = command11 (); }
-         elsif ($command == 2)  { $imapServerAddress  = command12 (); }
-         elsif ($command == 3)  { $imapPort           = command13 (); }
-         elsif ($command == 4)  { $useSendmail        = command14 (); }
-         elsif ($command == 5)  { $sendmail_path      = command15 (); }
-         elsif ($command == 6)  { $smtpServerAddress  = command16 (); }
-         elsif ($command == 7)  { $smtpPort           = command17 (); }
-         elsif ($command == 8)  { $use_authenticated_smtp   = command18 (); }
-         elsif ($command == 9)  { $imap_server_type   = command19 (); }
-         elsif ($command == 10) { $invert_time        = command110 (); }
-         elsif ($command == 11) { $optional_delimiter = command111 (); }
+         if    ($command == 1)  { $domain                 = command11 (); }
+         elsif ($command == 2)  { $imapServerAddress      = command12 (); }
+         elsif ($command == 3)  { $imapPort               = command13 (); }
+         elsif ($command == 4)  { $useSendmail            = command14 (); }
+         elsif ($command == 5)  { $sendmail_path          = command15 (); }
+         elsif ($command == 6)  { $smtpServerAddress      = command16 (); }
+         elsif ($command == 7)  { $smtpPort               = command17 (); }
+         elsif ($command == 8)  { $use_authenticated_smtp = command18 (); }
+         elsif ($command == 9)  { $imap_server_type       = command19 (); }
+         elsif ($command == 10) { $invert_time            = command110 (); }
+         elsif ($command == 11) { $optional_delimiter     = command111 (); }
       } elsif ($menu == 3) {
-         if    ($command == 1) { $default_folder_prefix          = command21 (); }
-         elsif ($command == 2) { $show_prefix_option             = command22 (); }
-         elsif ($command == 3) { $trash_folder                   = command23 (); }
-         elsif ($command == 4) { $sent_folder                    = command24 (); }
-         elsif ($command == 5) { $default_move_to_trash          = command25 (); }
-         elsif ($command == 6) { $default_move_to_sent           = command26 (); }
-         elsif ($command == 7) { $list_special_folders_first     = command27 (); }
-         elsif ($command == 8) { $use_special_folder_color       = command28 (); }
-         elsif ($command == 9) { $auto_expunge                   = command29 (); }
-         elsif ($command == 10){ $default_sub_of_inbox           = command210(); }
-         elsif ($command == 11){ $show_contain_subfolders_option = command211(); }
-         elsif ($command == 12){ $default_unseen_notify          = command212(); }
-         elsif ($command == 13){ $default_unseen_type            = command213(); }
-         elsif ($command == 14){ $auto_create_special            = command214(); }
+         if    ($command == 1)  { $default_folder_prefix          = command21 (); }
+         elsif ($command == 2)  { $show_prefix_option             = command22 (); }
+         elsif ($command == 3)  { $trash_folder                   = command23a (); }
+         elsif ($command == 4)  { $sent_folder                    = command23b (); }
+         elsif ($command == 5)  { $draft_folder                   = command23c (); }
+         elsif ($command == 6)  { $default_move_to_trash          = command24a (); }
+         elsif ($command == 7)  { $default_move_to_sent           = command24b (); }
+         elsif ($command == 8)  { $default_save_as_draft          = command24c (); }
+         elsif ($command == 9)  { $list_special_folders_first     = command27 (); }
+         elsif ($command == 10) { $use_special_folder_color       = command28 (); }
+         elsif ($command == 11) { $auto_expunge                   = command29 (); }
+         elsif ($command == 12) { $default_sub_of_inbox           = command210(); }
+         elsif ($command == 13) { $show_contain_subfolders_option = command211(); }
+         elsif ($command == 14) { $default_unseen_notify          = command212(); }
+         elsif ($command == 15) { $default_unseen_type            = command213(); }
+         elsif ($command == 16) { $auto_create_special            = command214(); }
       } elsif ($menu == 4) {
          if    ($command == 1) { $default_charset          = command31 (); }
          elsif ($command == 2) { $data_dir                 = command33 (); }
@@ -897,7 +901,7 @@ sub command22 {
 }
 
 # Trash Folder 
-sub command23 {
+sub command23a {
    print "You can now specify where the default trash folder is located.\n";
    print "On servers where you do not want this, you can set it to anything\n";
    print "and set option 7 to false.\n";
@@ -919,7 +923,7 @@ sub command23 {
 }
 
 # Sent Folder 
-sub command24 {
+sub command23b {
    print "This is where messages that are sent will be stored.  SquirrelMail\n";
    print "by default puts a copy of all outgoing messages in this folder.\n";
    print "\n";
@@ -939,8 +943,30 @@ sub command24 {
    return $new_sent_folder;
 }
 
+# Draft Folder 
+sub command23c {
+   print "You can now specify where the default draft folder is located.\n";
+   print "On servers where you do not want this, you can set it to anything\n";
+   print "and set option 9 to false.\n";
+   print "\n";
+   print "This is relative to where the rest of your email is kept.  You do\n";
+   print "not need to worry about their mail directory.  If this folder\n";
+   print "would be ~/mail/drafts on the filesystem, you only need to specify\n";
+   print "that this is 'drafts', and be sure to put 'mail/' in option 1.\n";
+   print "\n";
+
+   print "[$WHT$draft_folder$NRM]: $WHT";
+   $new_draft_folder = <STDIN>;
+   if ($new_draft_folder eq "\n") {
+      $new_draft_folder = $draft_folder;
+   } else {
+      $new_draft_folder =~ s/[\r|\n]//g;
+   }
+   return $new_draft_folder;
+}
+
 # default move to trash 
-sub command25 {
+sub command24a {
    print "By default, should messages get moved to the trash folder?  You\n";
    print "can specify the default trash folder in option 3.  If this is set\n";
    print "to false, messages will get deleted immediately without moving\n";
@@ -965,7 +991,7 @@ sub command25 {
 }
 
 # default move to sent 
-sub command26 {
+sub command24b {
    print "By default, should messages get moved to the sent folder?  You\n";
    print "can specify the default sent folder in option 4.  If this is set\n";
    print "to false, messages will get sent an no copy will be made.\n";
@@ -988,6 +1014,30 @@ sub command26 {
    return $default_move_to_sent;
 }
 
+# default save as draft
+sub command24c {
+   print "By default, should the save to draft option be shown? You can\n";
+   print "specify the default drafts folder in option 5. If this is set\n";
+   print "to false, users will not be shown the save to draft option.\n";
+   print "\n";
+   print "Drafts folder is currently: $draft_folder\n";
+   print "\n";
+   
+   if ($default_move_to_draft eq "true") {
+      $default_value = "y";
+   } else {
+      $default_value = "n";
+   }
+   print "By default, save as draft (y/n) [$WHT$default_value$NRM]: $WHT";
+   $new_show = <STDIN>;
+   if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) {
+      $default_save_as_draft = "true";
+   } else {
+      $default_save_as_draft = "false";
+   }
+   return $default_save_as_draft;
+}
+
 # List special folders first 
 sub command27 {
    print "SquirrelMail has what we call 'special folders' that are not\n";
@@ -1148,9 +1198,10 @@ sub command213 {
 
 # Auto create special folders
 sub command214 {
-   print "Would you like the Sent and Trash folders to be created automatically for\n";
-   print "you when a user loggs in?  If the user accidentally deletes their special\n";
-   print "folders, this option will automatically create it again for them.\n";
+   print "Would you like the Sent, Trash, and Drafts folders to be created\n";
+   print "automatically print for you when a user logs in?  If the user\n";
+   print "accidentally deletes their special folders, this option will\n";
+   print "automatically create it again for them.\n";
    print "\n";
    
    if ($auto_create_special eq "true") {
@@ -1652,8 +1703,10 @@ sub save_data {
    
    print FILE "\n";
 
-   print FILE "\tglobal \$default_folder_prefix, \$trash_folder, \$sent_folder;\n";
-   print FILE "\tglobal \$default_move_to_trash, \$default_move_to_sent;\n";
+   print FILE "\tglobal \$default_folder_prefix;\n";
+   print FILE "\tglobal \$trash_folder, \$default_move_to_trash;\n";
+   print FILE "\tglobal \$sent_folder, \$default_move_to_sent;\n";
+   print FILE "\tglobal \$draft_folder, \$default_save_to_draft;\n";
    print FILE "\tglobal \$show_prefix_option, \$list_special_folders_first;\n";
    print FILE "\tglobal \$use_special_folder_color, \$auto_expunge, \$default_sub_of_inbox;\n";
    print FILE "\tglobal \$show_contain_subfolders_option, \$default_unseen_notify;\n";
@@ -1661,8 +1714,10 @@ sub save_data {
    print FILE "\t\$default_folder_prefix            = \"$default_folder_prefix\";\n";
    print FILE "\t\$trash_folder                     = \"$trash_folder\";\n";
    print FILE "\t\$sent_folder                      = \"$sent_folder\";\n";
+   print FILE "\t\$draft_folder                     = \"$draft_folder\";\n";
    print FILE "\t\$default_move_to_trash            =  $default_move_to_trash;\n";
    print FILE "\t\$default_move_to_sent             =  $default_move_to_sent;\n";
+   print FILE "\t\$default_save_as_draft            =  $default_save_as_draft;\n";
    print FILE "\t\$show_prefix_option               =  $show_prefix_option;\n";
    print FILE "\t\$list_special_folders_first       =  $list_special_folders_first;\n";
    print FILE "\t\$use_special_folder_color         =  $use_special_folder_color;\n";
@@ -1765,17 +1820,19 @@ sub set_defaults {
 
       print "\n";
       if ($server eq "cyrus") { 
-			$default_folder_prefix = "INBOX";
+			$default_folder_prefix = "";
 			$trash_folder = "INBOX.Trash";
 			$sent_folder = "INBOX.Sent";
+			$draft_folder = "INBOX.Drafts";
 			$show_prefix_option = false;
 			$default_sub_of_inbox = true;
 			$show_contain_subfolders_option = false;
 			$imap_server_type = "cyrus";
 
-         print "         default_folder_prefix = INBOX\n";
+         print "         default_folder_prefix = none\n";
          print "                  trash_folder = INBOX.Trash\n";
          print "                   sent_folder = INBOX.Sent\n";
+         print "                  draft_folder = INBOX.Drafts\n";
          print "            show_prefix_option = false\n";
          print "          default_sub_of_inbox = true\n";
          print "show_contain_subfolders_option = false\n";
@@ -1786,6 +1843,7 @@ sub set_defaults {
 			$default_folder_prefix = "mail/";
 			$trash_folder = "Trash";
 			$sent_folder = "Sent";
+			$draft_folder = "Drafts";
 			$show_prefix_option = true;
 			$default_sub_of_inbox = false;
 			$show_contain_subfolders_option = true;
@@ -1794,6 +1852,7 @@ sub set_defaults {
          print "         default_folder_prefix = mail/\n";
          print "                  trash_folder = Trash\n";
          print "                   sent_folder = Sent\n";
+         print "                  draft_folder = Drafts\n";
          print "            show_prefix_option = true\n";
          print "          default_sub_of_inbox = false\n";
          print "show_contain_subfolders_option = true\n";
@@ -1805,6 +1864,7 @@ sub set_defaults {
 			$default_sub_of_inbox = true;
 			$trash_folder = "INBOX/Deleted Items";
 			$sent_folder = "INBOX/Sent Items";
+			$drafts_folder = "INBOX/Drafts";
 			$show_prefix_option = false;
 			$show_contain_subfolders_option = false;
 			$imap_server_type = "exchange";
@@ -1813,6 +1873,7 @@ sub set_defaults {
          print "           default_sub_of_inbox = true\n";
          print "                   trash_folder = \"INBOX/Deleted Items\"\n";
          print "                    sent_folder = \"INBOX/Sent Items\"\n";
+         print "                   draft_folder = \"INBOX/Drafts\"\n";
          print "             show_prefix_option = false\n";
          print " show_contain_subfolders_option = false\n";
          print "               imap_server_type = exchange\n";

+ 17 - 15
functions/imap_general.php

@@ -32,7 +32,7 @@ $imap_general_debug = false;
    function sqimap_read_data_list ($imap_stream, $pre, $handle_errors,
                                    &$response, &$message) {
       global $color, $squirrelmail_language;
-global $imap_general_debug;
+      global $imap_general_debug;
 
       $read = '';
       $resultlist = array();
@@ -49,11 +49,13 @@ global $imap_general_debug;
             $size = $regs[1];
          } else if (ereg("^\\* [0-9]+ FETCH", $read, $regs)) {
             // Sizeless response, probably single-line
-// For debugging purposes
-if ($imap_general_debug) {
-    echo "<small><tt><font color=\"#CC0000\">$read</font></tt></small><br>\n";
-    flush();
-}
+
+            // For debugging purposes
+            if ($imap_general_debug) {
+                echo "<small><tt><font color=\"#CC0000\">$read</font></tt></small><br>\n";
+                flush();
+            }
+
             $size = 0;
             $data[] = $read;
             $read = fgets($imap_stream, 9096);
@@ -64,11 +66,13 @@ if ($imap_general_debug) {
             while (strpos($read, "\n") === false) {
                $read .= fgets($imap_stream, 9096);
             }
-// For debugging purposes
-if ($imap_general_debug) {
-    echo "<small><tt><font color=\"#CC0000\">$read</font></tt></small><br>\n";
-    flush();
-}
+
+            // For debugging purposes
+            if ($imap_general_debug) {
+                echo "<small><tt><font color=\"#CC0000\">$read</font></tt></small><br>\n";
+                flush();
+            }
+
             // If we know the size, no need to look at the end parameters
             if ($size > 0) {
                if ($total_size == $size) {
@@ -109,10 +113,8 @@ if ($imap_general_debug) {
       $response = $regs[1];
       $message = trim($regs[2]);
       
-if ($imap_general_debug) echo '--<br>';
-
-      if ($handle_errors == false)
-          return $resultlist;
+      if ($imap_general_debug) { echo '--<br>'; }
+      if ($handle_errors == false) { return $resultlist; }
      
       if ($response == 'NO') {
          // ignore this error from m$ exchange, it is not fatal (aka bug)

+ 30 - 17
functions/imap_mailbox.php

@@ -207,8 +207,8 @@
     ******************************************************************************/
    function sqimap_mailbox_list ($imap_stream) {
       global $data_dir, $username, $list_special_folders_first;
-      global $trash_folder, $sent_folder;
-      global $move_to_trash, $move_to_sent, $folder_prefix;
+      global $folder_prefix, $trash_folder, $sent_folder, $draft_folder;
+      global $move_to_trash, $move_to_sent, $save_as_draft;
 
       $inbox_in_list = false;
       $inbox_subscribed = false;
@@ -281,8 +281,10 @@
             $inbox_in_list = true;
       }
                 
-      /** Just in case they're not subscribed to their inbox, we'll get it 
-          for them anyway **/
+      /**
+       * Just in case they're not subscribed to their inbox,
+       * we'll get it for them anyway
+       */
       if ($inbox_subscribed == false || $inbox_in_list == false) {
          fputs ($imap_stream, sqimap_session_id() . " LIST \"\" \"INBOX\"\r\n");
          $inbox_ary = sqimap_read_data ($imap_stream, sqimap_session_id(), true, $response, $message);
@@ -300,12 +302,10 @@
 
       $boxes = sqimap_mailbox_parse ($sorted_list_ary, $sorted_lsub_ary, $dm);
 
-
       /** Now, lets sort for special folders **/
-
       $boxesnew = Array();
 
-      // Find INBOX
+      /* Find INBOX */
       for ($i = 0; $i < count($boxes); $i++) {
          if (strtolower($boxes[$i]["unformatted"]) == "inbox") {
             $boxesnew[] = $boxes[$i];
@@ -314,25 +314,39 @@
          }
       }
 
+      /* List special folders and their subfolders, if requested. */
       if ($list_special_folders_first == true) {
-
-         // Then list special folders and their subfolders
+         /* First list the trash folder. */
          for ($i = 0 ; $i < count($boxes) ; $i++) {
             if ($move_to_trash &&
-                eregi('^' . quotemeta($trash_folder) . '(' .
-                quotemeta($dm) . '.*)?$', $boxes[$i]["unformatted"])) {
+                   eregi('^' . quotemeta($trash_folder) . '(' .
+                     quotemeta($dm) . '.*)?$', $boxes[$i]['unformatted'])) {
                $boxesnew[] = $boxes[$i];
                $used[$i] = true;
             }
-            elseif ($move_to_sent &&
-                eregi('^' . quotemeta($sent_folder) . '(' .
-                quotemeta($dm) . '.*)?$', $boxes[$i]["unformatted"])) {
+         }
+
+         /* Then list the sent folder. */
+         for ($i = 0 ; $i < count($boxes) ; $i++) {
+            if ($move_to_sent &&
+                  eregi('^' . quotemeta($sent_folder) . '(' .
+                    quotemeta($dm) . '.*)?$', $boxes[$i]['unformatted'])) {
                $boxesnew[] = $boxes[$i];
                $used[$i] = true;
             }
          }
 
-         // Put INBOX.* folders ahead of the rest
+         /* Lastly, list the list the draft folder. */
+         for ($i = 0 ; $i < count($boxes) ; $i++) {
+            if ($save_as_draft &&
+                  eregi('^' . quotemeta($draft_folder) . '(' .
+                    quotemeta($dm) . '.*)?$', $boxes[$i]['unformatted'])) {
+               $boxesnew[] = $boxes[$i];
+               $used[$i] = true;
+            }
+         }
+
+         /* Put INBOX.* folders ahead of the rest. */
          for ($i = 0; $i < count($boxes); $i++) {
             if (eregi('^inbox\\.', $boxes[$i]["unformatted"]) &&
                 (!isset($used[$i]) || $used[$i] == false)) {
@@ -340,7 +354,6 @@
                $used[$i] = true;
             }
          }
-
       }
 
       // Rest of the folders
@@ -451,4 +464,4 @@
       return $boxes;
    }
    
-?>
+?>

+ 9 - 8
functions/imap_messages.php

@@ -96,10 +96,11 @@
       $read_list = array();
       $sizes_list = array();
 
-      /* We need to return the data in the same order as the caller supplied
-         in $msg_list, but IMAP servers are free to return responses in
-         whatever order they wish... So we need to re-sort manually */
-
+      /**
+       * We need to return the data in the same order as the caller supplied
+       * in $msg_list, but IMAP servers are free to return responses in
+       * whatever order they wish... So we need to re-sort manually
+       */
       for ($i = 0; $i < sizeof($msg_list); $i++) {
          $id2index[$msg_list[$i]] = $i;
       }
@@ -108,7 +109,6 @@
       fputs ($imap_stream, $query);
       $readin_list = sqimap_read_data_list($imap_stream, $sid, true, $response, $message);
 
-
       foreach ($readin_list as $r) {
          if (!eregi("^\\* ([0-9]+) FETCH", $r[0], $regs)) {
             set_up_language($squirrelmail_language);
@@ -213,10 +213,11 @@
          $size = $regs[1];
          
          $header = new small_header;
-         if ($issent == true)
-            $header->from = (trim($to) != '')? $to : _("(only Cc/Bcc)");
-         else   
+         if ($issent == true) {
+            $header->from = (trim($to) != '' ? $to : '(' ._("No To Address") . ')');
+         } else {
             $header->from = $from;
+         }
 
          $header->date = $date;
          $header->subject = $subject;

+ 121 - 127
functions/mailbox_display.php

@@ -13,12 +13,12 @@
        return;
    define('mailbox_display_php', true);
 
-   define( 'PG_SEL_MAX', 10 );         // Default value for page_selector_max
+   define('PG_SEL_MAX', 10);  /* Default value for page_selector_max. */
 
    function printMessageInfo($imapConnection, $t, $i, $key, $mailbox, $sort, $startMessage, $where, $what) {
       global $checkall;
       global $color, $msgs, $msort;
-      global $sent_folder;
+      global $sent_folder, $draft_folder;
       global $message_highlight_list;
       global $index_order;
 
@@ -33,7 +33,6 @@
             $color_string = $color[12];
           }
       }
-
       $msg = $msgs[$key];
 
       $senderName = sqimap_find_displayable_name($msg['FROM']);
@@ -46,46 +45,35 @@
       }
       $urlMailbox = urlencode($mailbox);
       $subject = processSubject($msg['SUBJECT']);
-
       echo "<TR>\n";
 
-      if (isset($msg['FLAG_FLAGGED']) && $msg['FLAG_FLAGGED'] == true)
-      {
+      if (isset($msg['FLAG_FLAGGED']) && ($msg['FLAG_FLAGGED'] == true)) {
          $flag = "<font color=$color[2]>";
          $flag_end = '</font>';
-      }
-      else
-      {
+      } else {
          $flag = '';
          $flag_end = '';
       }
-      if (!isset($msg['FLAG_SEEN']) || $msg['FLAG_SEEN'] == false)
-      {
+      if (!isset($msg['FLAG_SEEN']) || ($msg['FLAG_SEEN'] == false)) {
          $bold = '<b>';
          $bold_end = '</b>';
-      }
-      else
-      {
+      } else {
          $bold = '';
          $bold_end = '';
       }
-      if ($mailbox == $sent_folder)
-      {
+
+      if (($mailbox == $sent_folder) || ($mailbox == $draft_folder)) {
          $italic = '<i>';
          $italic_end = '</i>';
-      }
-      else
-      {
+      } else {
          $italic = '';
          $italic_end = '';
       }
-      if (isset($msg['FLAG_DELETED']) && $msg['FLAG_DELETED'])
-      {
+
+      if (isset($msg['FLAG_DELETED']) && $msg['FLAG_DELETED']) {
          $fontstr = "<font color=\"$color[9]\">";
          $fontstr_end = '</font>';
-      }
-      else
-      {
+      } else {
          $fontstr = '';
          $fontstr_end = '';
       }
@@ -104,30 +92,28 @@
          }
       }
 
-      if (!isset($hlt_color))
-         $hlt_color = $color_string;
+      if (!isset($hlt_color)) {
+          $hlt_color = $color_string;
+      }
 
       if ($where && $what) {
          $search_stuff = '&where='.urlencode($where).'&what='.urlencode($what);
       }
 
-      if ($checkall == 1)
-         $checked = ' checked';
-      else
-         $checked = '';
+      $checked = ($checkall == 1 ?' checked' : '');
 
       for ($i=1; $i <= count($index_order); $i++) {
          switch ($index_order[$i]) {
-            case 1: # checkbox
+            case 1: /* checkbox */
                echo "   <td bgcolor=$hlt_color align=center><input type=checkbox name=\"msg[$t]\" value=".$msg["ID"]."$checked></TD>\n";
                break;
-            case 2: # from
+            case 2: /* from */
                echo "   <td bgcolor=$hlt_color>$italic$bold$flag$fontstr$senderName$fontstr_end$flag_end$bold_end$italic_end</td>\n";
                break;
-            case 3: # date
+            case 3: /* date */
                echo "   <td nowrap bgcolor=$hlt_color><center>$bold$flag$fontstr".$msg["DATE_STRING"]."$fontstr_end$flag_end$bold_end</center></td>\n";
                break;
-            case 4: # subject
+            case 4: /* subject */
                echo "   <td bgcolor=$hlt_color>$bold";
                    if (! isset($search_stuff)) { $search_stuff = ''; }
                echo "<a href=\"read_body.php?mailbox=$urlMailbox&passed_id=".$msg["ID"]."&startMessage=$startMessage&show_more=0$search_stuff\"";
@@ -142,7 +128,7 @@
                }
                echo ">$flag$subject$flag_end</a>$bold_end</td>\n";
                break;
-            case 5: # flags
+            case 5: /* flags */
                $stuff = false;
                echo "   <td bgcolor=$hlt_color align=center nowrap><b><small>\n";
                if (isset($msg['FLAG_ANSWERED']) &&
@@ -170,31 +156,35 @@
                if (!$stuff) echo "&nbsp;\n";
                echo "</small></b></td>\n";
                break;
-            case 6: # size
+            case 6: /* size */
                echo "   <td bgcolor=$hlt_color>$bold$fontstr".show_readable_size($msg['SIZE'])."$fontstr_end$bold_end</td>\n";
                break;
          }
       }
-
-
       echo "</tr>\n";
    }
 
    /**
-    ** This function loops through a group of messages in the mailbox and shows them
-    **/
-   function showMessagesForMailbox($imapConnection, $mailbox, $numMessages, $startMessage, $sort, $color,$show_num, $use_cache) {
+    * This function loops through a group of messages in the mailbox
+    * and shows them to the user.
+    */
+   function showMessagesForMailbox
+        ($imapConnection, $mailbox, $numMessages, $startMessage,
+         $sort, $color,$show_num, $use_cache) {
       global $msgs, $msort;
-      global $sent_folder;
+      global $sent_folder, $draft_folder;
       global $message_highlight_list;
       global $auto_expunge;
 
-      if ($auto_expunge == true) sqimap_mailbox_expunge($imapConnection, $mailbox, false);
+      /* If autoexpunge is turned on, then do it now. */
+      if ($auto_expunge == true) {
+          sqimap_mailbox_expunge($imapConnection, $mailbox, false);
+      }
       sqimap_mailbox_select($imapConnection, $mailbox);
 
-      $issent = ($mailbox == $sent_folder);
+      $issent = (($mailbox == $sent_folder) || ($mailbox == $draft_folder));
       if (!$use_cache) {
-         // if it's sorted
+         /* If it is sorted... */
          if ($numMessages >= 1) {
             if ($sort < 6) {
                $id = range(1, $numMessages);
@@ -208,14 +198,16 @@
 
                if ($endMessage < $startMessage) {
                   $startMessage = $startMessage - $show_num;
-                  if ($startMessage < 1)
-                     $startMessage = 1;
+                  if ($startMessage < 1) {
+                      $startMessage = 1;
+                  }
                }
 
                $real_startMessage = $numMessages - $startMessage + 1;
                $real_endMessage = $numMessages - $startMessage - $show_num + 2;
-               if ($real_endMessage <= 0)
-                  $real_endMessage = 1;
+               if ($real_endMessage <= 0) {
+                   $real_endMessage = 1;
+               }
                $id = array_reverse(range($real_endMessage, $real_startMessage));
             }
 
@@ -235,17 +227,19 @@
 
          $j = 0;
          if ($sort == 6) {
-            $end = $startMessage + $show_num - 1;
-            if ($numMessages < $show_num)
-                $end_loop = $numMessages;
-            elseif ($end > $numMessages)
-            $end_loop = $numMessages - $startMessage + 1;
-        else
-                $end_loop = $show_num;
+             $end = $startMessage + $show_num - 1;
+             if ($numMessages < $show_num) {
+                 $end_loop = $numMessages;
+             } else if ($end > $numMessages) {
+                 $end_loop = $numMessages - $startMessage + 1;
+             } else {
+                 $end_loop = $show_num;
+             }
          } else {
             $end = $numMessages;
             $end_loop = $end;
          }
+
          while ($j < $end_loop) {
             if (isset($date[$j])) {
                 $date[$j] = ereg_replace('  ', ' ', $date[$j]);
@@ -278,16 +272,13 @@
             $num = 0;
             while ($num < count($flags[$j])) {
                if ($flags[$j][$num] == 'Deleted') {
-                  $messages[$j]['FLAG_DELETED'] = true;
-               }
-               elseif ($flags[$j][$num] == 'Answered') {
-                  $messages[$j]['FLAG_ANSWERED'] = true;
-               }
-               elseif ($flags[$j][$num] == 'Seen') {
-                  $messages[$j]['FLAG_SEEN'] = true;
-               }
-               elseif ($flags[$j][$num] == 'Flagged') {
-                  $messages[$j]['FLAG_FLAGGED'] = true;
+                   $messages[$j]['FLAG_DELETED'] = true;
+               } else if ($flags[$j][$num] == 'Answered') {
+                   $messages[$j]['FLAG_ANSWERED'] = true;
+               } else if ($flags[$j][$num] == 'Seen') {
+                   $messages[$j]['FLAG_SEEN'] = true;
+               } else if ($flags[$j][$num] == 'Flagged') {
+                   $messages[$j]['FLAG_FLAGGED'] = true;
                }
                $num++;
             }
@@ -297,11 +288,12 @@
          /* Only ignore messages flagged as deleted if we are using a
           * trash folder or auto_expunge */
          if (((isset($move_to_trash) && $move_to_trash)
-              || (isset($auto_expunge) && $auto_expunge)) && $sort != 6)
-         {
+              || (isset($auto_expunge) && $auto_expunge)) && $sort != 6) {
+
             /** Find and remove the ones that are deleted */
             $i = 0;
             $j = 0;
+
             while ($j < $numMessages) {
                if (isset($messages[$j]['FLAG_DELETED']) && $messages[$j]['FLAG_DELETED'] == true) {
                   $j++;
@@ -314,9 +306,10 @@
             }
             $numMessages = $i;
          } else {
-            if (! isset($messages))
-                $messages = array();
-            $msgs = $messages;
+             if (!isset($messages)) {
+                 $messages = array();
+             }
+             $msgs = $messages;
          }
       }
 
@@ -347,20 +340,20 @@
          session_register('msort');
       }
       displayMessageArray($imapConnection, $numMessages, $startMessage, $msgs, $msort, $mailbox, $sort, $color,$show_num);
-     session_register('msgs');
+      session_register('msgs');
    }
 
-   // generic function to convert the msgs array into an HTML table
+   /******************************************************************/
+   /* Generic function to convert the msgs array into an HTML table. */
+   /******************************************************************/
    function displayMessageArray($imapConnection, $numMessages, $startMessage, &$msgs, $msort, $mailbox, $sort, $color,$show_num) {
       global $folder_prefix, $sent_folder;
       global $imapServerAddress, $data_dir, $username, $use_mailbox_cache;
       global $index_order, $real_endMessage, $real_startMessage, $checkall;
 
-      // if cache isn't already set, do it now
-      if (!session_is_registered('msgs'))
-         session_register('msgs');
-      if (!session_is_registered('msort'))
-         session_register('msort');
+      /* If cache isn't already set, do it now. */
+      if (!session_is_registered('msgs')) { session_register('msgs'); }
+      if (!session_is_registered('msort')) { session_register('msort'); }
 
       if ($startMessage + ($show_num - 1) < $numMessages) {
          $endMessage = $startMessage + ($show_num-1);
@@ -370,8 +363,7 @@
 
       if ($endMessage < $startMessage) {
          $startMessage = $startMessage - $show_num;
-         if ($startMessage < 1)
-            $startMessage = 1;
+         if ($startMessage < 1) { $startMessage = 1; }
       }
 
       $nextGroup = $startMessage + $show_num;
@@ -397,46 +389,46 @@
       if (($nextGroup <= $numMessages) && ($prevGroup >= 0)) {
          $lMore = "<A HREF=\"right_main.php?use_mailbox_cache=$use&startMessage=$prevGroup&mailbox=$urlMailbox\" TARGET=\"right\">". _("Previous") . '</A>';
          $rMore = "<A HREF=\"right_main.php?use_mailbox_cache=$use&&startMessage=$nextGroup&mailbox=$urlMailbox\" TARGET=\"right\">". _("Next") ."</A>\n";
-      }
-      elseif (($nextGroup > $numMessages) && ($prevGroup >= 0)) {
+      } else if (($nextGroup > $numMessages) && ($prevGroup >= 0)) {
          $lMore = "<A HREF=\"right_main.php?use_mailbox_cache=$use&startMessage=$prevGroup&mailbox=$urlMailbox\" TARGET=\"right\">". _("Previous") . '</A>';
          $rMore = "<FONT COLOR=\"$color[9]\">"._("Next")."</FONT>\n";
-      }
-      elseif (($nextGroup <= $numMessages) && ($prevGroup < 0)) {
+      } else if (($nextGroup <= $numMessages) && ($prevGroup < 0)) {
          $lMore = "<FONT COLOR=\"$color[9]\">"._("Previous") . '</FONT>';
          $rMore = "<A HREF=\"right_main.php?use_mailbox_cache=$use&startMessage=$nextGroup&mailbox=$urlMailbox\" TARGET=\"right\">". _("Next") ."</A>\n";
       }
-      if( $lMore <> '' )
-        $lMore .= ' | ';
+      if ($lMore <> '') {
+          $lMore .= ' | ';
+      }
 
-      // Page selector block. Following code computes page links.
+      /* Page selector block. Following code computes page links. */
       $mMore = '';
-      if( !getPref($data_dir, $username, 'page_selector') &&
-          $numMessages > $show_num ) {
-        $j = intval( $numMessages / $show_num );  // Max pages
-        $k = max( 1, $j / getPref($data_dir, $username, 'page_selector_max', PG_SEL_MAX ) );
-        if( $numMessages % $show_num <> 0 )
-                $j++;
-        $startMessage = min( $startMessage, $numMessages );
-        $p = intval( $startMessage / $show_num ) + 1;
-        $i = 1;
-        while( $i < $p ) {
+      if (!getPref($data_dir, $username, 'page_selector')
+             && ($numMessages > $show_num)) {
+         $j = intval( $numMessages / $show_num );  // Max pages
+         $k = max( 1, $j / getPref($data_dir, $username, 'page_selector_max', PG_SEL_MAX ) );
+         if ($numMessages % $show_num <> 0 ) {
+             $j++;
+         }
+         $startMessage = min( $startMessage, $numMessages );
+         $p = intval( $startMessage / $show_num ) + 1;
+         $i = 1;
+         while( $i < $p ) {
             $pg = intval( $i );
             $start = ( ($pg-1) * $show_num ) + 1;
             $mMore .= "<a href=\"right_main.php?use_mailbox_cache=$use_mailbox_cache&startMessage=$start" .
                     "&mailbox=$urlMailbox\" TARGET=\"right\">$pg</a> ";
-            $i+=$k;
-        }
-        $mMore .= "<b>$p</b> ";
-        $i += $k;
-        while( $i <= $j ) {
+            $i += $k;
+         }
+         $mMore .= "<b>$p</b> ";
+         $i += $k;
+         while( $i <= $j ) {
             $pg = intval( $i );
             $start = ( ($pg-1) * $show_num ) + 1;
             $mMore .= "<a href=\"right_main.php?use_mailbox_cache=$use_mailbox_cache&startMessage=$start" .
                     "&mailbox=$urlMailbox\" TARGET=\"right\">$pg</a> ";
             $i+=$k;
-        }
-        $mMore .= ' | ';
+         }
+         $mMore .= ' | ';
       }
 
       if (! isset($msg))
@@ -456,7 +448,6 @@
             $startMessage = 1;
          }
       }
-
       $endVar = $endMessage + 1;
 
       // loop through and display the info for each message.
@@ -512,11 +503,11 @@
     * $Message is a message that is centered on top of the list
     * $More is a second line that is left aligned
     */
-   function mail_message_listing_beginning($imapConnection, $moveURL,
-       $mailbox = '', $sort = -1, $Message = '', $More = '', $startMessage = 1)
-   {
+   function mail_message_listing_beginning
+        ($imapConnection, $moveURL, $mailbox = '', $sort = -1,
+         $Message = '', $More = '', $startMessage = 1) {
       global $color, $index_order, $auto_expunge, $move_to_trash;
-      global $checkall, $sent_folder;
+      global $checkall, $sent_folder, $draft_folder;
       $urlMailbox = urlencode($mailbox);
 
       /** This is the beginning of the message list table.  It wraps around all messages */
@@ -562,21 +553,18 @@
       echo "         <SMALL><INPUT TYPE=SUBMIT NAME=\"moveButton\" VALUE=\"" . _("Move") . "\"></SMALL>\n";
       echo "      </TD>\n";
       echo "      <TD ALIGN=RIGHT NOWRAP>&nbsp;&nbsp;&nbsp;\n";
-      if (! $auto_expunge) {
+      if (!$auto_expunge) {
          echo '         <INPUT TYPE=SUBMIT NAME="expungeButton" VALUE="'. _("Expunge") .'">&nbsp;'. _("mailbox") ."&nbsp;\n";
       }
-
       echo "         <INPUT TYPE=SUBMIT NAME=\"markRead\" VALUE=\"". _("Read")."\">\n";
       echo "         <INPUT TYPE=SUBMIT NAME=\"markUnread\" VALUE=\"". _("Unread")."\">\n";
       echo "         <INPUT TYPE=SUBMIT VALUE=\"". _("Delete") . "\">&nbsp;\n";
-
       echo "      </TD>\n";
       echo "   </TR>\n";
       echo "</TABLE>\n";
       do_hook('mailbox_form_before');
       echo '</TD></TR>';
 
-
       echo "<TR><TD BGCOLOR=\"$color[0]\">";
       echo "<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=";
       if ($GLOBALS['alt_index_colors']) {
@@ -587,36 +575,39 @@
       echo " BGCOLOR=\"$color[0]\">";
       echo "<TR BGCOLOR=\"$color[5]\" ALIGN=\"center\">";
 
-      // Print the headers
+      /* Print the headers. */
       for ($i=1; $i <= count($index_order); $i++) {
          switch ($index_order[$i]) {
-            case 1: # checkbox
-            case 5: # flags
+            case 1: /* checkbox */
+            case 5: /* flags */
                echo '   <TD WIDTH="1%"><B>&nbsp;</B></TD>';
                break;
 
-            case 2: # from
-               if ($mailbox == $sent_folder)
+            case 2: /* from */
+               if (($mailbox == $sent_folder)
+                     || ($mailbox == $draft_folder)) {
                   echo '   <TD WIDTH="25%"><B>'. _("To") .'</B>';
-               else
-                    echo '   <TD WIDTH="25%"><B>'. _("From") .'</B>';
+               } else {
+                   echo '   <TD WIDTH="25%"><B>'. _("From") .'</B>';
+               }
+
            ShowSortButton($sort, $mailbox, 2, 3);
                echo "</TD>\n";
                break;
 
-            case 3: # date
+            case 3: /* date */
                echo '   <TD NOWRAP WIDTH="5%"><B>'. _("Date") .'</B>';
                ShowSortButton($sort, $mailbox, 0, 1);
                echo "</TD>\n";
                break;
 
-            case 4: # subject
+            case 4: /* subject */
                echo '   <TD><B>'. _("Subject") .'</B> ';
                ShowSortButton($sort, $mailbox, 4, 5);
                echo "</TD>\n";
                break;
 
-            case 6: # size
+            case 6: /* size */
                echo '   <TD WIDTH="5%"><b>' . _("Size")."</b></TD>\n";
                break;
          }
@@ -624,9 +615,11 @@
       echo "</TR>\n";
    }
 
-/* ----------------------------------------------------------------------- */
-
+   /*******************************************************************/
+   /* This function shows the sort button. Isn't this a good comment? */
+   /*******************************************************************/
    function ShowSortButton($sort, $mailbox, $Up, $Down) {
+      /* Figure out which image we want to use. */
       if ($sort != $Up && $sort != $Down) {
          $img = 'sort_none.gif';
          $which = $Up;
@@ -637,14 +630,15 @@
          $img = 'down_pointer.gif';
          $which = 6;
       }
+
+      /* Now that we have everything figured out, show the actual button. */
       echo ' <a href="right_main.php?newsort=' . $which .
            '&startMessage=1&mailbox=' . urlencode($mailbox) .
            '"><IMG SRC="../images/' . $img .
            '" BORDER=0 WIDTH=12 HEIGHT=10></a>';
    }
 
-   function ShowSelectAllLink($startMessage, $sort)
-   {
+   function ShowSelectAllLink($startMessage, $sort) {
        global $checkall, $PHP_SELF, $what, $where, $mailbox;
 
        ?>&nbsp;

+ 22 - 19
src/compose.php

@@ -1,18 +1,19 @@
 <?php
    /**
-    ** compose.php
-    **
-    **  Copyright (c) 1999-2000 The SquirrelMail development team
-    **  Licensed under the GNU GPL. For full terms see the file COPYING.
-    **
-    ** This code sends a mail.
-    **
-    ** There are 3 modes of operation:
-    **  - Start new mail
-    **  - Add an attachment
-    **  - Send mail
-    **
-    ** $Id$
+    * compose.php
+    *
+    * Copyright (c) 1999-2000 The SquirrelMail development team
+    * Licensed under the GNU GPL. For full terms see the file COPYING.
+    *
+    * This code sends a mail.
+    *
+    * There are 4 modes of operation:
+    *    - Start new mail
+    *    - Add an attachment
+    *    - Send mail
+    *    - Save As Draft
+    *	
+    * $Id$
     **/
 
    require_once('../src/validate.php');
@@ -226,8 +227,9 @@
       do_hook("compose_form");
           echo ">\n";
 
-      if ( isset($draft_id))
+      if (isset($draft_id)) {
          echo "<input type=\"hidden\" name=\"delete_draft\" value=\"$draft_id\">\n";
+      }
 
       echo "<TABLE WIDTH=\"100%\" ALIGN=center CELLSPACING=0 BORDER=0>\n";
 
@@ -382,9 +384,9 @@
       }
       echo "\n    <INPUT TYPE=SUBMIT NAME=send VALUE=\"". _("Send") . "\">\n";
 
-      if ($save_as_draft == true)
-         echo "<input type=\"submit\" name =\"draft\" value=\"Save Draft\">\n";
-
+      if ($save_as_draft) {
+          echo "<input type=\"submit\" name =\"draft\" value=\"Save Draft\">\n";
+      }
 
       do_hook("compose_button_row");
 
@@ -438,11 +440,12 @@
 
    if (isset($draft)) {
       require_once ('../src/draft_actions.php');
-      if(! saveMessagetoDraft($send_to, $send_to_cc, $send_to_bcc, $subject, $body, $$reply_id)) {
+      if (!saveMessageAsDraft($send_to, $send_to_cc, $send_to_bcc, $subject, $body, $reply_id)) {
          showInputForm();
          exit();
       } else {
-         Header("Location: right_main.php?mailbox=$draft_folder&sort=$sort&startMessage=1&note=Draft%20Email%20Saved");
+         $draft_message = _("Draft Email Saved");
+         Header("Location: right_main.php?mailbox=$draft_folder&sort=$sort&startMessage=1&note=$draft_message");
          exit();
       }
    }

+ 12 - 13
src/draft_actions.php

@@ -16,21 +16,19 @@ require_once ('../src/validate.php');
          $to = expandAddrs(parseAddrs($t));
          $cc = expandAddrs(parseAddrs($c));
          $bcc = expandAddrs(parseAddrs($b));
-         if (isset($identity) && $identity != 'default')
-         {
+         if (isset($identity) && ($identity != 'default')) {
             $reply_to = getPref($data_dir, $username, 'reply_to' . $identity);
             $from = getPref($data_dir, $username, 'full_name' . $identity);
             $from_addr = getPref($data_dir, $username, 'email_address' . $identity);
-         }
-         else
-         {
+         } else {
             $reply_to = getPref($data_dir, $username, 'reply_to');
             $from = getPref($data_dir, $username, 'full_name');
             $from_addr = getPref($data_dir, $username, 'email_address');
          }
 
-         if ($from_addr == '')
+         if ($from_addr == '') {
             $from_addr = $popuser.'@'.$domain;
+         }
 
          $to_list = getLineOfAddrs($to);
          $cc_list = getLineOfAddrs($cc);
@@ -38,10 +36,11 @@ require_once ('../src/validate.php');
 
          /* Encoding 8-bit characters and making from line */
          $subject = encodeHeader($subject);
-         if ($from == '')
+         if ($from == '') {
             $from = "<$from_addr>";
-         else
+         } else {
             $from = '"' . encodeHeader($from) . "\" <$from_addr>";
+         }
 
          /* This creates an RFC 822 date */
          $date = date("D, j M Y H:i:s ", mktime()) . timezone();
@@ -51,10 +50,11 @@ require_once ('../src/validate.php');
          $message_id .= time() . '.squirrel@' . $SERVER_NAME .'>';
 
          /* Make an RFC822 Received: line */
-         if (isset($REMOTE_HOST))
+         if (isset($REMOTE_HOST)) {
             $received_from = "$REMOTE_HOST ([$REMOTE_ADDR])";
-         else
+         } else {
             $received_from = $REMOTE_ADDR;
+         }
 
          if (isset($HTTP_VIA) || isset ($HTTP_X_FORWARDED_FOR)) {
             if ($HTTP_X_FORWARDED_FOR == '')
@@ -102,7 +102,7 @@ require_once ('../src/validate.php');
 
          $header .= "X-Mailer: SquirrelMail (version $version)\r\n"; // Identify SquirrelMail
 
-         // Do the MIME-stuff
+         /* Do the MIME-stuff */
          $header .= "MIME-Version: 1.0\r\n";
 
          if (isMultipart()) {
@@ -127,7 +127,7 @@ require_once ('../src/validate.php');
       return $headerlength;
    }
 
-   function saveMessagetoDraft($t, $c, $b, $subject, $body, $reply_id) {
+   function saveMessageAsDraft($t, $c, $b, $subject, $body, $reply_id) {
       global $useSendmail, $msg_id, $is_reply, $mailbox, $onetimepad;
       global $data_dir, $username, $domain, $key, $version, $sent_folder, $imapServerAddress, $imapPort;
       global $draft_folder;
@@ -137,7 +137,6 @@ require_once ('../src/validate.php');
 
       $body = ereg_replace("\n\\.", "\n..", $body);
       $body = ereg_replace("^\\.", "..", $body);
-
       $body = ereg_replace("\n", "\r\n", $body);
 
       $fp = fopen("/dev/null", a);

+ 23 - 7
src/left_main.php

@@ -24,7 +24,9 @@
    
     displayHtmlHeader();
 
-   if ($auto_create_special && ! isset($auto_create_done)) {
+    /* If requested and not yet complete, attempt to autocreate folders. */
+    if ($auto_create_special && ! isset($auto_create_done)) {
+          /* Autocreate the sent folder, if needed. */
    	  if (isset ($sent_folder) && $sent_folder != 'none') {
 	  	 if (!sqimap_mailbox_exists ($imapConnection, $sent_folder)) {
 		 	sqimap_mailbox_create ($imapConnection, $sent_folder, '');
@@ -32,12 +34,17 @@
 		    sqimap_subscribe($imapConnection, $sent_folder);
 		 }
 	  }
+
+          /* Autocreate the trash folder, if needed. */
    	  if (isset ($trash_folder) && $trash_folder != 'none') {
 	  	 if (!sqimap_mailbox_exists ($imapConnection, $trash_folder)) {
 		 	sqimap_mailbox_create ($imapConnection, $trash_folder, '');
 		 } else if (! sqimap_mailbox_is_subscribed($imapConnection, $trash_folder)) {
 		    sqimap_subscribe($imapConnection, $trash_folder);
 		 }
+          }
+
+          /* Autocreate the drafts folder, if needed. */
           if (isset ($draft_folder) && $draft_folder != 'none') {
                  if (!sqimap_mailbox_exists ($imapConnection, $draft_folder)) {
                         sqimap_mailbox_create ($imapConnection, $draft_folder, '');
@@ -45,7 +52,8 @@
                     sqimap_subscribe($imapConnection, $draft_folder);
                  }
           }
-     }
+
+          /* Let the world know that autocreation is complete! Hurrah! */
 	  $auto_create_done = true;
 	  session_register('auto_create_done');
    }
@@ -55,6 +63,7 @@
       global $color, $move_to_sent, $move_to_trash;
       global $unseen_notify, $unseen_type, $collapse_folders;
       global $draft_folder, $save_as_draft;
+      global $use_special_folder_color;
 
       $real_box = $box_array['unformatted'];
       $mailbox = str_replace('&nbsp;','',$box_array['formatted']);
@@ -81,11 +90,14 @@
       }
       
       $special_color = false;
-      if ((strtolower($real_box) == 'inbox') ||
-          (($real_box == $trash_folder) && ($move_to_trash)) ||
-          (($real_box == $sent_folder) && ($move_to_sent)) ||
-          (($real_box == $draft_folder) && ($save_as_draft)))
-          $special_color = true;
+      if ($use_special_folder_color) {
+          if ((strtolower($real_box) == 'inbox')
+                || (($real_box == $trash_folder) && ($move_to_trash))
+                || (($real_box == $sent_folder) && ($move_to_sent))
+                || (($real_box == $draft_folder) && ($save_as_draft))) {
+              $special_color = true;
+          }
+      }
          
       /* Start off with a blank line. */
       $line = '';
@@ -127,6 +139,10 @@
       return ($line);
    }
 
+   /**********************************/
+   /* END OF FUNCTION - BACK TO MAIN */
+   /**********************************/
+
     if (isset($left_refresh) && ($left_refresh != 'None') && ($left_refresh != '')) {
         echo "<META HTTP-EQUIV=\"Expires\" CONTENT=\"Thu, 01 Dec 1994 16:00:00 GMT\">\n";
         echo "<META HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\">\n"; 

+ 198 - 209
src/load_prefs.php

@@ -1,212 +1,201 @@
 <?php
-   /**
-    **  load_prefs.php
-    **
-    **  Copyright (c) 1999-2000 The SquirrelMail development team
-    **  Licensed under the GNU GPL. For full terms see the file COPYING.
-    **
-    **  Loads preferences from the $username.pref file used by almost
-    **  every other script in the source directory and alswhere.
-    **
-    **  $Id$
-    **/
-
-   require_once('../src/validate.php');
-
-   // ----------------------------------------------------------
-   // Following code should be removed in the next foo_once step
-   if (defined('load_prefs_php'))
-       return;
-   define('load_prefs_php', true);
-   // ----------------------------------------------------------
-
-   global $theme, $chosen_theme, $color;
-   if (! isset($theme))
-      $theme = array();
-   if (! isset($color))
-      $color = array();
-   require_once('../functions/prefs.php');
-   require_once('../functions/plugin.php');
+    /**
+     * load_prefs.php
+     *
+     * Copyright (c) 1999-2001 The SquirrelMail Development Team
+     * Licensed under the GNU GPL. For full terms see the file COPYING.
+     *
+     * Loads preferences from the $username.pref file used by almost
+     * every other script in the source directory and alswhere.
+     *
+     * $Id$
+     **/
+
+    require_once('../src/validate.php');
+
+    /**************************************************************/
+    /* Following code should be removed in the next foo_once step
+    if (defined('load_prefs_php')) { return; }
+    define('load_prefs_php', true);
+    /**************************************************************/
+
+    global $theme, $chosen_theme, $color;
+    if (! isset($theme)) { $theme = array(); }
+    if (! isset($color)) { $color = array(); }
+    require_once('../functions/prefs.php');
+    require_once('../functions/plugin.php');
       
-   if (!isset($username))
-       $username = '';
-   checkForPrefs($data_dir, $username);
-
-   $chosen_theme = getPref($data_dir, $username, "chosen_theme");
-   $in_ary = false;
-   for ($i=0; $i < count($theme); $i++){
-   	  if ($theme[$i]["PATH"] == $chosen_theme) {
-	  	 $in_ary = true;
-		 break;
-	  }
-   }
-   
-   if (! $in_ary)
-       $chosen_theme = "";
-
-   if (isset($chosen_theme) && $in_ary && (file_exists($chosen_theme))) {
-      @include_once($chosen_theme);
-   } else {
-      if (isset($theme) && isset($theme[0]) && file_exists($theme[0]["PATH"])) {
-         @include_once($theme[0]["PATH"]);
-      } else {
-          #
-          #  I hard coded the theme as a failsafe if no themes were
-          #  found.  It makes no sense to cause the whole thing to exit
-          #  just because themes were not found.  This is the absolute
-          #  last resort.
-          #
-          $color[0]   = "#DCDCDC"; // (light gray)     TitleBar
-          $color[1]   = "#800000"; // (red)
-          $color[2]   = "#CC0000"; // (light red)      Warning/Error Messages
-          $color[3]   = "#A0B8C8"; // (green-blue)     Left Bar Background
-          $color[4]   = "#FFFFFF"; // (white)          Normal Background
-          $color[5]   = "#FFFFCC"; // (light yellow)   Table Headers
-          $color[6]   = "#000000"; // (black)          Text on left bar
-          $color[7]   = "#0000CC"; // (blue)           Links
-          $color[8]   = "#000000"; // (black)          Normal text
-          $color[9]   = "#ABABAB"; // (mid-gray)       Darker version of #0
-          $color[10]  = "#666666"; // (dark gray)      Darker version of #9
-          $color[11]  = "#770000"; // (dark red)       Special Folders color
-      }
-   }
-
-    if (!defined('download_php')) 
-       session_register("theme_css");
-
-   global $use_javascript_addr_book;
-   $use_javascript_addr_book = getPref($data_dir, $username, 'use_javascript_addr_book', $default_use_javascript_addr_book);
-
-   /** Load the user's sent folder preferences **/
-   global $move_to_sent, $move_to_trash, $save_as_draft;
-   $move_to_sent = getPref($data_dir, $username, 'move_to_sent', $default_move_to_sent);
-
-   /** Load the user's trash folder preferences **/
-   $move_to_trash = getPref($data_dir, $username, 'move_to_trash', $default_move_to_trash);
-
-   /** Load the user's draft folder preferences **/
-   $save_as_draft = getPref($data_dir, $username, 'save_as_draft', TRUE);
-
-   global $unseen_type, $unseen_notify;
-   if ($default_unseen_type == '')
-      $default_unseen_type = 1;
-   $unseen_type = getPref($data_dir, $username, 'unseen_type', $default_unseen_type);
-   if ($default_unseen_notify == '')
-      $default_unseen_notify = 2;
-   $unseen_notify = getPref($data_dir, $username, 'unseen_notify', $default_unseen_notify);
-
-   global $folder_prefix;
-   $folder_prefix = getPref($data_dir, $username, 'folder_prefix', $default_folder_prefix);
-
-   /** Load special folders **/
-   global $trash_folder, $sent_folder, $draft_folder;
-   $new_trash_folder = getPref($data_dir, $username, 'trash_folder');
-   if ( ( $new_trash_folder == '' ) && ( $move_to_trash ) ) {
-      $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 ) ) {
-      $sent_folder = $folder_prefix . $sent_folder;
-   } else {
-      $sent_folder = $new_sent_folder;
-   }
-
-  /** Load special folders **/
-   $new_drafts_folder = getPref($data_dir, $username, 'draft_folder');
-   if ( ($new_drafts_folder == '') && ($save_as_draft ) ) {
-      $draft_folder = $folder_prefix . $draft_folder;
-   } else {
-      $draft_folder = $new_drafts_folder;
-   }
-
-   global $show_num, $wrap_at, $left_size;
-   $show_num = getPref($data_dir, $username, 'show_num', 15 );
-
-   $wrap_at = getPref( $data_dir, $username, 'wrap_at', 86 );
-   if ($wrap_at < 15) {
-      $wrap_at = 15;
-   }
-
-   $left_size = getPref($data_dir, $username, 'left_size');
-   if ($left_size == "") {
-      if (isset($default_left_size)) {
-         $left_size = $default_left_size;
-      } else {
-         $left_size = 200;
-      }
-   }
-
-   global $editor_size, $use_signature, $prefix_sig;
-   $editor_size = getPref($data_dir, $username, "editor_size", 76 );
-
-   $use_signature = getPref($data_dir, $username, 'use_signature', FALSE );
-
-   $prefix_sig = getPref($data_dir, $username, "prefix_sig");
-
-   /* Load preferences for reply citation style. */
-   global $reply_citation_style, $reply_citation_start, $reply_citation_end;
-
-   $reply_citation_style = getPref($data_dir, $username, 'reply_citation_style', 'none' );
-   $reply_citation_start = getPref($data_dir, $username, 'reply_citation_start');
-   $reply_citation_end = getPref($data_dir, $username, 'reply_citation_end');
-
-
-   global $left_refresh, $sort;
-   $left_refresh = getPref($data_dir, $username, 'left_refresh', 'None' );
-   $sort = getPref($data_dir, $username, 'sort', 6 );
-
-   /** Load up the Signature file **/
-   global $signature_abs;
-   if ($use_signature) {
-      $signature_abs = $signature = getSig($data_dir, $username);
-   } else {
-      $signature_abs = getSig($data_dir, $username);
-   }
-
-
-   //  highlightX comes in with the form: name,color,header,value
-   global $message_highlight_list;
-   for ($i=0; $hlt = getPref($data_dir, $username, "highlight$i"); $i++) {
-      $ary = explode(",", $hlt);
-      $message_highlight_list[$i]['name'] = $ary[0];
-      $message_highlight_list[$i]['color'] = $ary[1];
-      $message_highlight_list[$i]['value'] = $ary[2];
-      $message_highlight_list[$i]['match_type'] = $ary[3];
-   }
-
-
-   #index order lets you change the order of the message index
-   global $index_order;
-   $order = getPref($data_dir, $username, 'order1');
-   for ($i=1; $order; $i++) {
-      $index_order[$i] = $order;
-      $order = getPref($data_dir, $username, 'order'.($i+1));
-   }
-   if (!isset($index_order)) {
-      $index_order[1] = 1;
-      $index_order[2] = 2;
-      $index_order[3] = 3;
-      $index_order[4] = 5;
-      $index_order[5] = 4;
-   }
-
-   global $alt_index_colors;
-   $alt_index_colors = getPref($data_dir, $username, 'alt_index_colors', FALSE );
-
-   global $location_of_bar, $location_of_buttons;
-   $location_of_bar = getPref($data_dir, $username, 'location_of_bar', 'left');
-   $location_of_buttons = getPref($data_dir, $username, 'location_of_buttons', 'between' );
-
-   global $collapse_folders, $show_html_default;
-   $collapse_folders = getPref($data_dir, $username, 'collapse_folders');
-
-   // show_html_default is a int value
-   $show_html_default = intval(getPref($data_dir, $username, 'show_html_default'), 1 );
-
-   do_hook("loading_prefs");
-
+    if (!isset($username)) { $username = ''; }
+    checkForPrefs($data_dir, $username);
+
+    $chosen_theme = getPref($data_dir, $username, "chosen_theme");
+    $in_ary = false;
+    for ($i=0; $i < count($theme); $i++){
+        if ($theme[$i]["PATH"] == $chosen_theme) {
+            $in_ary = true;
+            break;
+        }
+    }
+    if (! $in_ary) { $chosen_theme = ""; }
+
+    if (isset($chosen_theme) && $in_ary && (file_exists($chosen_theme))) {
+        @include_once($chosen_theme);
+    } else {
+        if (isset($theme) && isset($theme[0])
+              && file_exists($theme[0]["PATH"])) {
+            @include_once($theme[0]["PATH"]);
+        } else {
+            /**
+             * This theme as a failsafe if no themes were found. It makes
+             * no sense to cause the whole thing to exit just because themes
+             * were not found. This is the absolute last resort.
+             */
+             $color[0]   = "#DCDCDC"; // light gray    TitleBar
+             $color[1]   = "#800000"; // red
+             $color[2]   = "#CC0000"; // light red     Warning/Error Messages
+             $color[3]   = "#A0B8C8"; // green-blue    Left Bar Background
+             $color[4]   = "#FFFFFF"; // white         Normal Background
+             $color[5]   = "#FFFFCC"; // light yellow  Table Headers
+             $color[6]   = "#000000"; // black         Text on left bar
+             $color[7]   = "#0000CC"; // blue          Links
+             $color[8]   = "#000000"; // black         Normal text
+             $color[9]   = "#ABABAB"; // mid-gray      Darker version of #0
+             $color[10]  = "#666666"; // dark gray     Darker version of #9
+             $color[11]  = "#770000"; // dark red      Special Folders color
+        }
+    }
+
+    if (!defined('download_php')) { session_register("theme_css"); }
+
+    global $use_javascript_addr_book;
+    $use_javascript_addr_book = getPref($data_dir, $username, 'use_javascript_addr_book', $default_use_javascript_addr_book);
+
+    /** Declare the global variables for the special folders. */
+    global $move_to_sent, $move_to_trash, $save_as_draft;
+
+    /** Check the default value for save_to_draft. */
+    if (!isset($default_save_as_draft)) { $default_save_as_draft = true; }
+
+    /** Load the user's special folder preferences **/
+    $move_to_sent = getPref($data_dir, $username, 'move_to_sent', $default_move_to_sent);
+    $move_to_trash = getPref($data_dir, $username, 'move_to_trash', $default_move_to_trash);
+    $save_as_draft = getPref($data_dir, $username, 'save_as_draft', $default_save_as_draft);
+
+    global $unseen_type, $unseen_notify;
+    if ($default_unseen_type == '') { $default_unseen_type = 1; }
+    $unseen_type = getPref($data_dir, $username, 'unseen_type', $default_unseen_type);
+    if ($default_unseen_notify == '') { $default_unseen_notify = 2; }
+    $unseen_notify = getPref($data_dir, $username, 'unseen_notify', $default_unseen_notify);
+
+    global $folder_prefix;
+    $folder_prefix = getPref($data_dir, $username, 'folder_prefix', $default_folder_prefix);
+
+    /* Declare global variables for special folders. */
+    global $trash_folder, $sent_folder, $draft_folder;
+
+    /** Load special folder - trash **/
+    $new_trash_folder = getPref($data_dir, $username, 'trash_folder');
+    if (($new_trash_folder == '') && ($move_to_trash)) {
+        $trash_folder = $folder_prefix . $trash_folder;
+    } else {
+        $trash_folder = $new_trash_folder;
+    }
+
+    /** Load special folder - sent **/
+    $new_sent_folder = getPref($data_dir, $username, 'sent_folder');
+    if (($new_sent_folder == '') && ($move_to_sent)) {
+        $sent_folder = $folder_prefix . $sent_folder;
+    } else {
+        $sent_folder = $new_sent_folder;
+    }
+
+    /** Load special folder - draft **/
+    if (!isset($draft_folder)) { $draft_folder = 'none'; }
+    $new_draft_folder = getPref($data_dir, $username, 'draft_folder');
+    if (($new_draft_folder == '') && ($save_as_draft)) {
+        $draft_folder = $folder_prefix . $draft_folder;
+    } else {
+        $draft_folder = $new_draft_folder;
+    }
+
+    global $show_num, $wrap_at, $left_size;
+    $show_num = getPref($data_dir, $username, 'show_num', 15 );
+
+    $wrap_at = getPref( $data_dir, $username, 'wrap_at', 86 );
+    if ($wrap_at < 15) { $wrap_at = 15; }
+
+    $left_size = getPref($data_dir, $username, 'left_size');
+    if ($left_size == "") {
+        if (isset($default_left_size)) {
+            $left_size = $default_left_size;
+        } else {
+            $left_size = 200;
+        }
+    }
+
+    global $editor_size, $use_signature, $prefix_sig;
+    $editor_size = getPref($data_dir, $username, "editor_size", 76 );
+
+    $use_signature = getPref($data_dir, $username, 'use_signature', FALSE );
+
+    $prefix_sig = getPref($data_dir, $username, "prefix_sig");
+
+    /* Load preferences for reply citation style. */
+    global $reply_citation_style, $reply_citation_start, $reply_citation_end;
+
+    $reply_citation_style = getPref($data_dir, $username, 'reply_citation_style', 'none' );
+    $reply_citation_start = getPref($data_dir, $username, 'reply_citation_start');
+    $reply_citation_end = getPref($data_dir, $username, 'reply_citation_end');
+
+    global $left_refresh, $sort;
+    $left_refresh = getPref($data_dir, $username, 'left_refresh', 'None' );
+    $sort = getPref($data_dir, $username, 'sort', 6 );
+
+    /** Load up the Signature file **/
+    global $signature_abs;
+    if ($use_signature) {
+        $signature_abs = $signature = getSig($data_dir, $username);
+    } else {
+        $signature_abs = getSig($data_dir, $username);
+    }
+
+    /* HighlightX comes in with the form: name, color, header, value. */
+    global $message_highlight_list;
+    for ($i=0; $hlt = getPref($data_dir, $username, "highlight$i"); $i++) {
+        $ary = explode(",", $hlt);
+        $message_highlight_list[$i]['name'] = $ary[0];
+        $message_highlight_list[$i]['color'] = $ary[1];
+        $message_highlight_list[$i]['value'] = $ary[2];
+        $message_highlight_list[$i]['match_type'] = $ary[3];
+    }
+
+    /* Index order lets you change the order of the message index */
+    global $index_order;
+    $order = getPref($data_dir, $username, 'order1');
+    for ($i=1; $order; $i++) {
+        $index_order[$i] = $order;
+        $order = getPref($data_dir, $username, 'order'.($i+1));
+    }
+    if (!isset($index_order)) {
+        $index_order[1] = 1;
+        $index_order[2] = 2;
+        $index_order[3] = 3;
+        $index_order[4] = 5;
+        $index_order[5] = 4;
+    }
+
+    global $alt_index_colors;
+    $alt_index_colors = getPref($data_dir, $username, 'alt_index_colors', FALSE );
+
+    global $location_of_bar, $location_of_buttons;
+    $location_of_bar = getPref($data_dir, $username, 'location_of_bar', 'left');
+    $location_of_buttons = getPref($data_dir, $username, 'location_of_buttons', 'between' );
+
+    global $collapse_folders, $show_html_default;
+    $collapse_folders = getPref($data_dir, $username, 'collapse_folders');
+
+    /* show_html_default is a int value. */
+    $show_html_default = intval(getPref($data_dir, $username, 'show_html_default'), 1 );
+
+    do_hook("loading_prefs");
 ?>

+ 9 - 8
src/options_folder.php

@@ -48,15 +48,16 @@
          </tr>
 <?php }          
 
-   // TRASH FOLDER
+   /* TRASH FOLDER */
    echo '<tr><td nowrap 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
+      if ($move_to_trash == true) {
+         echo '<option value="none">' . _("Do not use Trash");
+      } else {
          echo '<option value="none" selected>' . _("Do not use Trash");
+      }
  
       for ($i = 0; $i < count($boxes); $i++) {
          $use_folder = true;
@@ -76,13 +77,13 @@
    echo '</td></tr>';  
 
 
-   // SENT FOLDER
+   /* SENT FOLDER */
    echo '<tr><td nowrap 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");
+         echo '<option value="none">' . _("Do not use Sent");
       else
          echo "<option value=none selected>" . _("Do not use Sent");
  
@@ -103,13 +104,13 @@
       echo "</SELECT></TT>\n";
    echo '</td></tr>';  
 
-   // Drafts Folder
+   /* Drafts Folder. */
    echo '<tr><td nowrap align="right">';
    echo _("Drafts Folder:");
    echo '</td><td>';
    echo '<TT><SELECT NAME="draft">';
    if ($save_as_draft == true)
-      echo '<option value="none">' . _("Don't use drafts");
+      echo '<option value="none">' . _("Do not use Drafts");
    else
       echo '<option value="none selected">' . _("Do not use Drafts");
 

+ 9 - 10
src/read_body.php

@@ -306,11 +306,11 @@
    do_hook('read_body_top');
    echo '<BR>' .
         '<TABLE CELLSPACING="0" WIDTH="100%" BORDER="0" ALIGN="CENTER" CELLPADDING="0">' . "\n" .
-        '   <TR><TD BGCOLOR="' . $color[9] . '" WIDTH="100%">' .
-        '      <TABLE WIDTH="100%" CELLSPACING="0" BORDER="0" CELLPADDING="3">' .
-        '         <TR>' .
-        '            <TD ALIGN="LEFT" WIDTH="33%">' .
-        '               <SMALL>';
+        '   <TR><TD BGCOLOR="' . $color[9] . '" WIDTH="100%">' . "\n" .
+        '      <TABLE WIDTH="100%" CELLSPACING="0" BORDER="0" CELLPADDING="3">' . "\n" .
+        '         <TR>' . "\n" .
+        '            <TD ALIGN="LEFT" WIDTH="33%">' . "\n" .
+        '               <SMALL>' . "\n";
    if ($where && $what) {
       echo "               <A HREF=\"search.php?where=".urlencode($where)."&what=".urlencode($what)."&mailbox=$urlMailbox\">";
    } else {
@@ -323,18 +323,17 @@
    } else {
       echo "               <A HREF=\"delete_message.php?mailbox=$urlMailbox&message=$passed_id&sort=$sort&startMessage=$startMessage\">";
    }
-   echo _("Delete") .
-        '</A>&nbsp;';
+   echo _("Delete") . '</A>&nbsp;';
    if (($mailbox == $draft_folder) && ($save_as_draft)) {
       echo '|&nbsp;';
-      echo "               <A HREF=\"compose.php?mailbox=$mailbox&send_to=$to_string&send_to_cc=$cc_string&send_to_bcc=$
-      echo _("Resume") .
-           '</a>';
+      echo "               <A HREF=\"compose.php?mailbox=$mailbox&send_to=$to_string&send_to_cc=$cc_string&send_to_bcc=\$bcc_string\">";
+      echo _("Resume Draft") . '</a>';
    }
    echo '&nbsp;&nbsp;' .
         '               </SMALL>' .
         '            </TD><TD WIDTH="33%" ALIGN="CENTER">' .
         '               <SMALL>' . "\n";
+
    if ($where && $what) {
    } else {
       if ($currentArrayIndex == -1) {

+ 98 - 103
src/validate.php

@@ -1,116 +1,111 @@
 <?php
-   /**
-    **  validate.php
-    **
-    **  Copyright (c) 1999-2000 The SquirrelMail development team
-    **  Licensed under the GNU GPL. For full terms see the file COPYING.
-    **
-    **  $Id$
-    **/
+    /**
+     * validate.php
+     *
+     * Copyright (c) 1999-2000 The SquirrelMail Development Team
+     * Licensed under the GNU GPL. For full terms see the file COPYING.
+     *
+     * $Id$
+     */
 
-   if (defined ('validate_php'))
-      return; 
-   define ('validate_php', true); 
+    if (defined ('validate_php')) { return; }
+    define ('validate_php', true);
 
-   session_start();
-   require_once('../functions/i18n.php');
-   require_once('../functions/auth.php');
-   
-   is_logged_in();
+    session_start();
+    require_once('../functions/i18n.php');
+    require_once('../functions/auth.php');
 
+    is_logged_in();
 
-   // Remove all slashes for form values
-   if (get_magic_quotes_gpc())
-   {
-       global $REQUEST_METHOD;
-       if ($REQUEST_METHOD == "POST")
-       {
-           global $HTTP_POST_VARS;
-           RemoveSlashes($HTTP_POST_VARS);
-       }
-       elseif ($REQUEST_METHOD == "GET")
-       {
-           global $HTTP_GET_VARS;
-           RemoveSlashes($HTTP_GET_VARS);
-       }
-   }
+    /* Remove all slashes for form values. */
+    if (get_magic_quotes_gpc()) {
+        global $REQUEST_METHOD;
 
-   // Auto-detection
-   //
-   // if $send (the form button's name) contains "\n" as the first char
-   // and the script is compose.php, then trim everything.  Otherwise,
-   // we don't have to worry.
-   //
-   // This is for a RedHat package bug and a Konqueror (pre 2.1.1?) bug
-   global $send, $PHP_SELF;
-   if (isset($send) && substr($send, 0, 1) == "\n" &&
-       substr($PHP_SELF, -12) == '/compose.php')
-   {
-      if ($REQUEST_METHOD == "POST") {
-         global $HTTP_POST_VARS;
-         TrimArray($HTTP_POST_VARS);
-      } else {
-         global $HTTP_GET_VARS;
-         TrimArray($HTTP_GET_VARS);
-      }
-   }
+        if ($REQUEST_METHOD == "POST") {
+            global $HTTP_POST_VARS;
+            RemoveSlashes($HTTP_POST_VARS);
+        } else if ($REQUEST_METHOD == "GET") {
+            global $HTTP_GET_VARS;
+            RemoveSlashes($HTTP_GET_VARS);
+        }
+    }
 
-   //**************************************************************************
-   // Trims every element in the array
-   //**************************************************************************
-   function TrimArray(&$array) {
-      foreach ($array as $k => $v) {
-         global $$k;
-         if (is_array($$k)) {
-            foreach ($$k as $k2 => $v2) {
-	       $$k[$k2] = substr($v2, 1);
+    /**
+     * Auto-detection
+     *
+     * if $send (the form button's name) contains "\n" as the first char
+     * and the script is compose.php, then trim everything. Otherwise, we
+     * don't have to worry.
+     *
+     * This is for a RedHat package bug and a Konqueror (pre 2.1.1?) bug
+     */
+    global $send, $PHP_SELF;
+    if (isset($send)
+        && (substr($send, 0, 1) == "\n")
+        && (substr($PHP_SELF, -12) == '/compose.php')) {
+        if ($REQUEST_METHOD == "POST") {
+            global $HTTP_POST_VARS;
+            TrimArray($HTTP_POST_VARS);
+        } else {
+            global $HTTP_GET_VARS;
+            TrimArray($HTTP_GET_VARS);
+        }
+    }
+
+    /************************************/
+    /* Trims every element in the array */
+    /************************************/
+    function TrimArray(&$array) {
+        foreach ($array as $k => $v) {
+            global $$k;
+            if (is_array($$k)) {
+                foreach ($$k as $k2 => $v2) {
+	           $$k[$k2] = substr($v2, 1);
+                }
+            } else {
+                $$k = substr($v, 1);
             }
-         } else {
-            $$k = substr($v, 1);
-         }
-	 // Re-assign back to array
-	 $array[$k] = $$k;
-      }
-   }
+
+	    /* Re-assign back to array. */
+            $array[$k] = $$k;
+        }
+    }
    
    
-   //**************************************************************************
-   // Removes slashes from every element in the array
-   //**************************************************************************
-   function RemoveSlashes(&$array)
-   {
-       foreach ($array as $k => $v)
-       {
-           global $$k;
-           if (is_array($$k))
-           {
-               foreach ($$k as $k2 => $v2)
-               {
-                   $newArray[stripslashes($k2)] = stripslashes($v2);
-               }
-               $$k = $newArray;
-           }
-           else
-           {
-               $$k = stripslashes($v);
-           }
-	   // Re-assign back to the array
-	   $array[$k] = $$k;
-       }
-   }
+    /***************************************************/
+    /* Removes slashes from every element in the array */
+    /***************************************************/
+    function RemoveSlashes(&$array) {
+        foreach ($array as $k => $v) {
+            global $$k;
+            if (is_array($$k)) {
+                foreach ($$k as $k2 => $v2) {
+                    $newArray[stripslashes($k2)] = stripslashes($v2);
+                }
+                $$k = $newArray;
+            } else {
+                $$k = stripslashes($v);
+            }
+
+	    /* Re-assign back to the array. */
+            $array[$k] = $$k;
+        }
+    }
 
-   // Everyone needs stuff from config, and config needs stuff from
-   // strings.php, so include them both here.
-   // Include them down here instead of at the top so that all config
-   // variables overwrite any passed in variables (for security)
-   require_once('../functions/strings.php');
-   require_once('../config/config.php');
-   require_once('../src/load_prefs.php');
-   require_once('../functions/page_header.php');
-   require_once('../functions/prefs.php');
+   /**
+    * Everyone needs stuff from config, and config needs stuff from
+    * strings.php, so include them both here.
+    *
+    * Include them down here instead of at the top so that all config
+    * variables overwrite any passed in variables (for security).
+    */
+    require_once('../functions/strings.php');
+    require_once('../config/config.php');
+    require_once('../src/load_prefs.php');
+    require_once('../functions/page_header.php');
+    require_once('../functions/prefs.php');
 
-   // Set up the language
-   // i18n.php was included by auth.php
-   global $username, $data_dir;
-   set_up_language(getPref($data_dir, $username, 'language'));
+    /* Set up the language (i18n.php was included by auth.php). */
+    global $username, $data_dir;
+    set_up_language(getPref($data_dir, $username, 'language'));
 ?>