瀏覽代碼

Added deleting of messages

Luke Ehresman 25 年之前
父節點
當前提交
d33e6d04d9
共有 4 個文件被更改,包括 85 次插入7 次删除
  1. 17 1
      config/config.php
  2. 18 0
      functions/display_messages.php
  3. 26 0
      functions/mailbox.php
  4. 24 6
      functions/mailbox_display.php

+ 17 - 1
config/config.php

@@ -11,6 +11,22 @@ $imapServerAddress = "adam.usa.om.org";
 /* This is displayed right after they log in */
 /* This is displayed right after they log in */
 $motd = "  Welcome to OM's webmail system, SquirrelMail.  We are currently in beta, and have not yet released a full version of SquirrelMail.  Please feel free to look around, and please report any bugs to <A HREF=\"mailto:nathan@usa.om.org\">Nathan</A> or <A HREF=\"mailto:luke@usa.om.org\">Luke</A>.";
 $motd = "  Welcome to OM's webmail system, SquirrelMail.  We are currently in beta, and have not yet released a full version of SquirrelMail.  Please feel free to look around, and please report any bugs to <A HREF=\"mailto:nathan@usa.om.org\">Nathan</A> or <A HREF=\"mailto:luke@usa.om.org\">Luke</A>.";
 
 
-/* SquirrelMail version number */
+/* SquirrelMail version number -- DO NOT CHANGE */
 $version = "0.0.1";
 $version = "0.0.1";
+
+/* The following are related to deleting messages.
+ *   $move_to_trash
+ *         - if this is set to "true", when "delete" is pressed, it will attempt
+ *           to move the selected messages to the folder named $trash_folder.  If
+ *           it's set to "false", we won't even attempt to move the messages, just
+ *           delete them.
+ *   $trash_folder
+ *         - This is the path to the default trash folder.  For Cyrus IMAP, it
+ *           would be "INBOX.Trash", but for UW it would be "Trash".  We need the
+ *           full path name here.
+ */
+
+$move_to_trash = true;
+$trash_folder = "INBOX.Trash";
+
 ?>
 ?>

+ 18 - 0
functions/display_messages.php

@@ -47,4 +47,22 @@
       echo "</TABLE>";
       echo "</TABLE>";
       echo "</BODY></HTML>";
       echo "</BODY></HTML>";
    }
    }
+
+    function messages_deleted_message($mailbox, $sort, $startMessage) {
+      $urlMailbox = urlencode($mailbox);
+      echo "<BR>";
+      echo "<TABLE COLS=1 WIDTH=70% NOBORDER BGCOLOR=FFFFFF ALIGN=CENTER>";
+      echo "   <TR>";
+      echo "      <TD BGCOLOR=DCDCDC>";
+      echo "         <FONT FACE=\"Arial,Helvetica\"><B><CENTER>Messages Deleted</CENTER></B></FONT>";
+      echo "   </TD></TR><TR><TD>";
+      echo "      <CENTER><FONT FACE=\"Arial,Helvetica\"><BR>The selected messages were deleted successfully.<BR>\n";
+      echo "              <A HREF=\"right_main.php?sort=$sort&startMessage=$startMessage&mailbox=$urlMailbox\" TARGET=\"right\">";
+      echo "              Click here to return to $mailbox";
+      echo "              </A>.";
+      echo "      </FONT></CENTER>";
+      echo "   </TD></TR>";
+      echo "</TABLE>";
+      echo "</BODY></HTML>";
+    }
 ?>
 ?>

+ 26 - 0
functions/mailbox.php

@@ -48,9 +48,14 @@
       }
       }
    }
    }
 
 
+   function setMessageFlag($imapConnection, $i, $flag) {
+      fputs($imapConnection, "messageStore STORE $i:$i +FLAGS (\\$flag)\n");
+   }
+
    function getMessageFlags($imapConnection, $i, &$flags) {
    function getMessageFlags($imapConnection, $i, &$flags) {
       /**   * 2 FETCH (FLAGS (\Answered \Seen))   */
       /**   * 2 FETCH (FLAGS (\Answered \Seen))   */
       fputs($imapConnection, "messageFetch FETCH $i:$i FLAGS\n");
       fputs($imapConnection, "messageFetch FETCH $i:$i FLAGS\n");
+      $read = fgets($imapConnection, 1024);
       while ((substr($read, 0, 15) != "messageFetch OK") && (substr($read, 0, 16) != "messageFetch BAD")) {
       while ((substr($read, 0, 15) != "messageFetch OK") && (substr($read, 0, 16) != "messageFetch BAD")) {
          if (strpos($read, "FLAGS")) {
          if (strpos($read, "FLAGS")) {
             $read = ereg_replace("\(", "", $read);
             $read = ereg_replace("\(", "", $read);
@@ -120,4 +125,25 @@
 
 
       return $from;
       return $from;
    }
    }
+
+   /** returns "true" if the copy was completed successfully.
+    ** returns "false" with an error message if unsuccessful.
+    **/
+   function copyMessages($imapConnection, $from_id, $to_id, $folder) {
+      fputs($imapConnection, "mailboxStore COPY $from_id:$to_id \"$folder\"\n");
+      $read = fgets($imapConnection, 1024);
+      while ((substr($read, 0, 15) != "mailboxStore OK") && (substr($read, 0, 15) != "mailboxStore NO")) {
+         $read = fgets($imapConnection, 1024);
+      }
+
+      if (substr($read, 0, 15) == "mailboxStore NO") {
+         echo "ERROR... $read<BR>";
+         return false;
+      } else if (substr($read, 0, 15) == "mailboxStore OK") {
+         return true;
+      }
+
+      echo "UNKNOWN ERROR copying messages $from_id to $to_id to folder $folder.<BR>";
+      return false;
+   }
 ?>
 ?>

+ 24 - 6
functions/mailbox_display.php

@@ -7,19 +7,19 @@
     **
     **
     **/
     **/
 
 
-   function printMessageInfo($imapConnection, $i, $from, $subject, $dateString, $answered, $seen) {
+   function printMessageInfo($imapConnection, $t, $i, $from, $subject, $dateString, $answered, $seen) {
       $senderName = getSenderName($from);
       $senderName = getSenderName($from);
       if (strlen(Chop($subject)) == 0)
       if (strlen(Chop($subject)) == 0)
          $subject = "(no subject)";
          $subject = "(no subject)";
 
 
       echo "<TR>\n";
       echo "<TR>\n";
       if ($seen == false) {
       if ($seen == false) {
-         echo "   <TD><FONT FACE=\"Arial,Helvetica\"><B>$i</B></FONT></TD>\n";
+         echo "   <TD><FONT FACE=\"Arial,Helvetica\"><B><input type=checkbox name=\"msg[$t]\" value=$i></B></FONT></TD>\n";
          echo "   <TD><FONT FACE=\"Arial,Helvetica\"><B>$senderName</B></FONT></TD>\n";
          echo "   <TD><FONT FACE=\"Arial,Helvetica\"><B>$senderName</B></FONT></TD>\n";
          echo "   <TD><CENTER><B><FONT FACE=\"Arial,Helvetica\">$dateString</FONT></B></CENTER></TD>\n";
          echo "   <TD><CENTER><B><FONT FACE=\"Arial,Helvetica\">$dateString</FONT></B></CENTER></TD>\n";
          echo "   <TD><FONT FACE=\"Arial,Helvetica\"><B>$subject</B></FONT></TD>\n";
          echo "   <TD><FONT FACE=\"Arial,Helvetica\"><B>$subject</B></FONT></TD>\n";
       } else {
       } else {
-         echo "   <TD><FONT FACE=\"Arial,Helvetica\">$i</FONT></TD>\n";
+         echo "   <TD><FONT FACE=\"Arial,Helvetica\"><input type=checkbox name=\"msg[$t]\" value=$i></FONT></TD>\n";
          echo "   <TD><FONT FACE=\"Arial,Helvetica\">$senderName</FONT></TD>\n";
          echo "   <TD><FONT FACE=\"Arial,Helvetica\">$senderName</FONT></TD>\n";
          echo "   <TD><FONT FACE=\"Arial,Helvetica\"><CENTER>$dateString</CENTER></FONT></TD>\n";
          echo "   <TD><FONT FACE=\"Arial,Helvetica\"><CENTER>$dateString</CENTER></FONT></TD>\n";
          echo "   <TD><FONT FACE=\"Arial,Helvetica\">$subject</FONT></TD>\n";
          echo "   <TD><FONT FACE=\"Arial,Helvetica\">$subject</FONT></TD>\n";
@@ -114,12 +114,20 @@
       }
       }
       else if (($nextGroup > $numMessages) && ($prevGroup >= 0)) {
       else if (($nextGroup > $numMessages) && ($prevGroup >= 0)) {
          echo "<A HREF=\"right_main.php?sort=$sort&startMessage=$prevGroup&mailbox=$urlMailbox\" TARGET=\"right\"><FONT FACE=\"Arial,Helvetica\">Previous</FONT></A>\n";
          echo "<A HREF=\"right_main.php?sort=$sort&startMessage=$prevGroup&mailbox=$urlMailbox\" TARGET=\"right\"><FONT FACE=\"Arial,Helvetica\">Previous</FONT></A>\n";
+         echo "<FONT FACE=\"Arial,Helvetica\" COLOR=ACACAC>Next</FONT>\n";
       }
       }
       else if (($nextGroup <= $numMessages) && ($prevGroup < 0)) {
       else if (($nextGroup <= $numMessages) && ($prevGroup < 0)) {
+         echo "<FONT FACE=\"Arial,Helvetica\" COLOR=ACACAC>Previous</FONT>\n";
          echo "<A HREF=\"right_main.php?sort=$sort&startMessage=$nextGroup&mailbox=$urlMailbox\" TARGET=\"right\"><FONT FACE=\"Arial,Helvetica\">Next</FONT></A>\n";
          echo "<A HREF=\"right_main.php?sort=$sort&startMessage=$nextGroup&mailbox=$urlMailbox\" TARGET=\"right\"><FONT FACE=\"Arial,Helvetica\">Next</FONT></A>\n";
       }
       }
       echo "</TD></TR>\n";
       echo "</TD></TR>\n";
 
 
+      /** The "DELETE" button */
+      echo "<TR><TD BGCOLOR=DCDCDC>";
+      echo "<FORM name=messageList method=post action=\"move_messages.php?mailbox=$urlMailbox&sort=$sort&startMessage=$startMessage\">";
+      echo "<INPUT TYPE=SUBMIT VALUE=\"Delete\"> selected messages";
+      echo "</TD></TR>";
+
       echo "<TR><TD BGCOLOR=DCDCDC>";
       echo "<TR><TD BGCOLOR=DCDCDC>";
       echo "<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=1 BGCOLOR=FFFFFF>";
       echo "<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=1 BGCOLOR=FFFFFF>";
       echo "<TR BGCOLOR=FFFFCC ALIGN=\"center\">";
       echo "<TR BGCOLOR=FFFFCC ALIGN=\"center\">";
@@ -134,12 +142,20 @@
       echo "</TR>";
       echo "</TR>";
 
 
       // loop through and display the info for each message.
       // loop through and display the info for each message.
+      $t = 0; // $t is used for the checkbox number
       for ($i = $startMessage - 1;$i <= $endMessage - 1; $i++) {
       for ($i = $startMessage - 1;$i <= $endMessage - 1; $i++) {
-         printMessageInfo($imapConnection, $msgs[$i]["ID"], $msgs[$i]["FROM"], $msgs[$i]["SUBJECT"], $msgs[$i]["DATE_STRING"], $msgs[$i]["FLAG_ANSWERED"], $msgs[$i]["FLAG_SEEN"]);
+         printMessageInfo($imapConnection, $t, $msgs[$i]["ID"], $msgs[$i]["FROM"], $msgs[$i]["SUBJECT"], $msgs[$i]["DATE_STRING"], $msgs[$i]["FLAG_ANSWERED"], $msgs[$i]["FLAG_SEEN"]);
+         $t++;
       }
       }
-      echo "</TABLE>\n";
-
+      echo "</FORM></TABLE>\n";
       echo "</TD></TR>\n";
       echo "</TD></TR>\n";
+
+      /** The "DELETE" button */
+      echo "<TR><TD BGCOLOR=DCDCDC>";
+      echo "<FORM name=messageList method=post action=\"move_messages.php?mailbox=$urlMailbox&sort=$sort&startMessage=$startMessage\">";
+      echo "<INPUT TYPE=SUBMIT VALUE=\"Delete\"> selected messages";
+      echo "</TD></TR>";
+
       echo "<TR BGCOLOR=FFFFFF><TD>";
       echo "<TR BGCOLOR=FFFFFF><TD>";
       if (($nextGroup <= $numMessages) && ($prevGroup >= 0)) {
       if (($nextGroup <= $numMessages) && ($prevGroup >= 0)) {
          echo "<A HREF=\"right_main.php?sort=$sort&startMessage=$prevGroup&mailbox=$urlMailbox\" TARGET=\"right\"><FONT FACE=\"Arial,Helvetica\">Previous</FONT></A>\n";
          echo "<A HREF=\"right_main.php?sort=$sort&startMessage=$prevGroup&mailbox=$urlMailbox\" TARGET=\"right\"><FONT FACE=\"Arial,Helvetica\">Previous</FONT></A>\n";
@@ -147,8 +163,10 @@
       }
       }
       else if (($nextGroup > $numMessages) && ($prevGroup >= 0)) {
       else if (($nextGroup > $numMessages) && ($prevGroup >= 0)) {
          echo "<A HREF=\"right_main.php?sort=$sort&startMessage=$prevGroup&mailbox=$urlMailbox\" TARGET=\"right\"><FONT FACE=\"Arial,Helvetica\">Previous</FONT></A>\n";
          echo "<A HREF=\"right_main.php?sort=$sort&startMessage=$prevGroup&mailbox=$urlMailbox\" TARGET=\"right\"><FONT FACE=\"Arial,Helvetica\">Previous</FONT></A>\n";
+         echo "<FONT FACE=\"Arial,Helvetica\" COLOR=ACACAC>Next</FONT>\n";
       }
       }
       else if (($nextGroup <= $numMessages) && ($prevGroup < 0)) {
       else if (($nextGroup <= $numMessages) && ($prevGroup < 0)) {
+         echo "<FONT FACE=\"Arial,Helvetica\" COLOR=ACACAC>Previous</FONT>\n";
          echo "<A HREF=\"right_main.php?sort=$sort&startMessage=$nextGroup&mailbox=$urlMailbox\" TARGET=\"right\"><FONT FACE=\"Arial,Helvetica\">Next</FONT></A>\n";
          echo "<A HREF=\"right_main.php?sort=$sort&startMessage=$nextGroup&mailbox=$urlMailbox\" TARGET=\"right\"><FONT FACE=\"Arial,Helvetica\">Next</FONT></A>\n";
       }
       }
       echo "</TD></TR></TABLE>"; /** End of message-list table */
       echo "</TD></TR></TABLE>"; /** End of message-list table */