remove trailing lines
[squirrelmail.git] / src / draft_actions.php
index 80a49f8c6aa89f4b9782d1093454e922d1821d7a..16e599e4cabcc3430b5f9dad70aefdd2e5d2ae71 100644 (file)
 <?php
+
+/**
+ * draft_actions.php
+ *
+ * Copyright (c) 1999-2002 The SquirrelMail Project Team
+ * Licensed under the GNU GPL. For full terms see the file COPYING.
+ *
+ * $Id$
+ */
+
 require_once ('../src/validate.php');
 
-   /* Print all the needed RFC822 headers */
-   function write822HeaderForDraft ($fp, $t, $c, $b, $subject, $more_headers) {
-      global $REMOTE_ADDR, $SERVER_NAME, $REMOTE_PORT;
-      global $data_dir, $username, $popuser, $domain, $version, $useSendmail;
-      global $default_charset, $HTTP_VIA, $HTTP_X_FORWARDED_FOR;
-      global $REMOTE_HOST, $identity;
-
-      // Storing the header to make sure the header is the same
-      // everytime the header is printed.
-      static $header, $headerlength;
-
-      if ($header == '') {
-         $to = parseAddrs($t);
-         $cc = parseAddrs($c);
-         $bcc = parseAddrs($b);
-         if (isset($identity) && ($identity != 'default')) {
+/* Print all the needed RFC822 headers */
+function write822HeaderForDraft ($fp, $t, $c, $b, $subject, $more_headers, $session) {
+    global $REMOTE_ADDR, $SERVER_NAME, $REMOTE_PORT;
+    global $data_dir, $username, $popuser, $domain, $version, $useSendmail;
+    global $default_charset, $HTTP_VIA, $HTTP_X_FORWARDED_FOR;
+    global $REMOTE_HOST, $identity;
+
+    /* Storing the header to make sure the header is the same */
+    /* everytime the header is printed. */
+    static $header, $headerlength;
+
+    if ($header == '') {
+        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);
-         $bcc_list = getLineOfAddrs($bcc);
-
-         /* Encoding 8-bit characters and making from line */
-         $subject = encodeHeader($subject);
-         if ($from == '') {
+        /* Encoding 8-bit characters and making from line */
+        $subject = encodeHeader($subject);
+        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();
-
-         /* Create a message-id */
-         $message_id = '<' . $REMOTE_PORT . '.' . $REMOTE_ADDR . '.';
-         $message_id .= time() . '.squirrel@' . $SERVER_NAME .'>';
-
-         /* Make an RFC822 Received: line */
-         if (isset($REMOTE_HOST)) {
-            $received_from = "$REMOTE_HOST ([$REMOTE_ADDR])";
-         } else {
-            $received_from = $REMOTE_ADDR;
-         }
-
-         if (isset($HTTP_VIA) || isset ($HTTP_X_FORWARDED_FOR)) {
-            if ($HTTP_X_FORWARDED_FOR == '')
-               $HTTP_X_FORWARDED_FOR = 'unknown';
-            $received_from .= " (proxying for $HTTP_X_FORWARDED_FOR)";
-         }
-
-         $header  = "Received: from $received_from\r\n";
-         $header .= "        (SquirrelMail authenticated user $username)\r\n";
-         $header .= "        by $SERVER_NAME with HTTP;\r\n";
-         $header .= "        $date\r\n";
-
-         /* Insert the rest of the header fields */
-         $header .= "Message-ID: $message_id\r\n";
-         $header .= "Date: $date\r\n";
-         $header .= "Subject: $subject\r\n";
-         $header .= "From: $from\r\n";
-         $header .= "To: $to_list\r\n";    // Who it's TO
-
-         /* Insert headers from the $more_headers array */
-         if(is_array($more_headers)) {
+        }
+
+        /* This creates an RFC 822 date */
+        $date = date("D, j M Y H:i:s ", mktime()) . timezone();
+
+        /* Create a message-id */
+        $message_id = '<' . $REMOTE_PORT . '.' . $REMOTE_ADDR . '.';
+        $message_id .= time() . '.squirrel@' . $SERVER_NAME .'>';
+
+        /* Insert header fields */
+        $header = "Message-ID: $message_id\r\n";
+        $header .= "Date: $date\r\n";
+        $header .= "Subject: $subject\r\n";
+        $header .= "From: $from\r\n";
+        $header .= "To: $t\r\n";    // Who it's TO
+
+        /* Insert headers from the $more_headers array */
+        if(is_array($more_headers)) {
             reset($more_headers);
             while(list($h_name, $h_val) = each($more_headers)) {
                $header .= sprintf("%s: %s\r\n", $h_name, $h_val);
             }
-         }
+        }
 
-         if ($cc_list) {
-            $header .= "Cc: $cc_list\r\n"; // Who the CCs are
-         }
+        if ($c) {
+            $header .= "Cc: $c\r\n"; // Who the CCs are
+        }
 
-         if ($bcc_list) {
-            $header .= "Bcc: $bcc_list\r\n"; // Who the BCCs are
-         }
+        if ($b) {
+            $header .= "Bcc: $b\r\n"; // Who the BCCs are
+        }
 
-         if ($reply_to != '')
+        if ($reply_to != '') {
             $header .= "Reply-To: $reply_to\r\n";
+        }
 
-         if ($useSendmail) {
-            if ($bcc_list) {
-               // BCCs is removed from header by sendmail
-               $header .= "Bcc: $bcc_list\r\n";
-            }
-         }
-
-         $header .= "X-Mailer: SquirrelMail (version $version)\r\n"; // Identify SquirrelMail
+        $header .= "X-Mailer: SquirrelMail (version $version)\r\n"; // Identify SquirrelMail
 
-         /* Do the MIME-stuff */
-         $header .= "MIME-Version: 1.0\r\n";
+        /* Do the MIME-stuff */
+        $header .= "MIME-Version: 1.0\r\n";
 
-         if (isMultipart()) {
+        if (isMultipart($session)) {
             $header .= 'Content-Type: multipart/mixed; boundary="';
             $header .= mimeBoundary();
             $header .= "\"\r\n";
-         } else {
+        } else {
             if ($default_charset != '')
-               $header .= "Content-Type: text/plain; charset=$default_charset\r\n";
+                $header .= "Content-Type: text/plain; charset=$default_charset\r\n";
             else
-               $header .= "Content-Type: text/plain;\r\n";
+                $header .= "Content-Type: text/plain;\r\n";
             $header .= "Content-Transfer-Encoding: 8bit\r\n";
-         }
-         $header .= "\r\n"; // One blank line to separate header and body
-
-         $headerlength = strlen($header);
-      }
-
-      // Write the header
-      fputs ($fp, $header);
-
-      return $headerlength;
-   }
-
-   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;
-      $more_headers = Array();
-
-      $imap_stream = sqimap_login($username, $key, $imapServerAddress, $imapPort, 1);
-
-      $fp = fopen("/dev/null", a);
-      $headerlength = write822HeaderForDraft ($fp, $t, $c, $b, $subject, $more_headers);
-      $bodylength = writeBody ($fp, $body);
-      fclose ($fp);
-
-      $length = ($headerlength + $bodylength);
-
-      if (sqimap_mailbox_exists ($imap_stream, $draft_folder)) {
-         sqimap_append ($imap_stream, $draft_folder, $length);
-         write822HeaderForDraft ($imap_stream, $t, $c, $b, $subject, $more_headers);
-         writeBody ($imap_stream, $body);
-         sqimap_append_done ($imap_stream);
-      }
-      sqimap_logout($imap_stream);
-      if ($length)
-         ClearAttachments();
-      return $length;
+        }
+        $header .= "\r\n"; // One blank line to separate header and body
+
+        $headerlength = strlen($header);
+    }
+
+    /* Write the header */
+    fputs ($fp, $header);
+
+    return $headerlength;
+}
+
+/* Send the body */
+function writeBodyForDraft ($fp, $passedBody, $session) {
+    global $default_charset;
+
+    $attachmentlength = 0;
+
+    if (isMultipart($session)) {
+        $body = '--'.mimeBoundary()."\r\n";
+
+        if ($default_charset != ""){
+            $body .= "Content-Type: text/plain; charset=$default_charset\r\n";
+        } else {
+            $body .= "Content-Type: text/plain\r\n";
+        }
+
+        $body .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
+        $body .= $passedBody . "\r\n\r\n";
+        fputs ($fp, $body);
+
+        $attachmentlength = attachFiles($fp, $session);
+
+        if (!isset($postbody)) $postbody = "";
+        $postbody .= "\r\n--".mimeBoundary()."--\r\n\r\n";
+        fputs ($fp, $postbody);
+    } else {
+        $body = $passedBody . "\r\n";
+        fputs ($fp, $body);
+        $postbody = "\r\n";
+        fputs ($fp, $postbody);
+    }
+
+    return (strlen($body) + strlen($postbody) + $attachmentlength);
+}
+
+
+function saveMessageAsDraft($t, $c, $b, $subject, $body, $reply_id, $prio = 3, $session) {
+    global $useSendmail, $msg_id, $is_reply, $mailbox, $onetimepad,
+           $data_dir, $username, $domain, $key, $version, $sent_folder,
+           $imapServerAddress, $imapPort, $draft_folder, $attachment_dir,
+           $default_use_priority;
+    $more_headers = Array();
+
+    if ($default_use_priority) {
+        $more_headers = array_merge($more_headers, createPriorityHeaders($prio));
+    }
+
+    $imap_stream = sqimap_login($username, $key, $imapServerAddress, $imapPort, 1);
+
+    $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
+
+    $tmpDraftFile = "draft-" . GenerateRandomString(32, '', 7);
+    $full_tmpDraftFile = "$hashed_attachment_dir/$tmpDraftFile";
+    while (file_exists($full_tmpDraftFile)){
+         $tmpDraftFile = "draft-" . GenerateRandomString(32, '', 7);
+         $full_tmpDraftFile = "$hashed_attachment_dir/$tmpDraftFile";
+    }
+    $fp = fopen($full_tmpDraftFile, 'w');
+
+    $headerlength = write822HeaderForDraft
+        ($fp, $t, $c, $b, $subject, $more_headers, $session);
+    $bodylength = writeBodyForDraft ($fp, $body, $session);
+    fclose($fp);
+
+    $length = ($headerlength + $bodylength);
+
+    if (sqimap_mailbox_exists ($imap_stream, $draft_folder)) {
+        sqimap_append ($imap_stream, $draft_folder, $length);
+        write822HeaderForDraft
+            ($imap_stream, $t, $c, $b, $subject, $more_headers, $session);
+        writeBodyForDraft ($imap_stream, $body, $session);
+        sqimap_append_done ($imap_stream);
+    }
+    sqimap_logout($imap_stream);
+    if ($length){
+        ClearAttachments($session);
+    }
+    if (file_exists($full_tmpDraftFile)){
+        unlink ($full_tmpDraftFile);
+    }
+    return $length;
 }
-?>
+?>
\ No newline at end of file