X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fdraft_actions.php;h=3709b7327c0efbe2f140ea99533dbd21c0751360;hb=0120b304ff2bb5dd9e5de837ed3632d924b5e8aa;hp=e20e3f033c6fdbc27b6c34a812cca67f17b0feb1;hpb=355861846a51d35efe50848869d680fd3b4a5316;p=squirrelmail.git diff --git a/src/draft_actions.php b/src/draft_actions.php index e20e3f03..3709b732 100644 --- a/src/draft_actions.php +++ b/src/draft_actions.php @@ -3,188 +3,193 @@ /** * draft_actions.php * - * Copyright (c) 1999-2001 The Squirrelmail Development Team + * Copyright (c) 1999-2002 The SquirrelMail Project Team * Licensed under the GNU GPL. For full terms see the file COPYING. * * $Id$ */ -/*****************************************************************/ -/*** THIS FILE NEEDS TO HAVE ITS FORMATTING FIXED!!! ***/ -/*** PLEASE DO SO AND REMOVE THIS COMMENT SECTION. ***/ -/*** + Base level indent should begin at left margin, as ***/ -/*** the require_once below looks. ***/ -/*** + All identation should consist of four space blocks ***/ -/*** + Tab characters are evil. ***/ -/*** + all comments should use "slash-star ... star-slash" ***/ -/*** style -- no pound characters, no slash-slash style ***/ -/*** + FLOW CONTROL STATEMENTS (if, while, etc) SHOULD ***/ -/*** ALWAYS USE { AND } CHARACTERS!!! ***/ -/*** + Please use ' instead of ", when possible. Note " ***/ -/*** should always be used in _( ) function calls. ***/ -/*** Thank you for your help making the SM code more readable. ***/ -/*****************************************************************/ - -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 == '') { - if (isset($identity) && ($identity != 'default')) { +/* Path for SquirrelMail required files. */ +define('SM_PATH','../'); + +/* SquirrelMail required files. */ +require_once(SM_PATH . 'include/validate.php'); + +/* 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; - } + } - /* 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(); + /* 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 .'>'; + /* 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 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)) { + /* 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 ($c) { + if ($c) { $header .= "Cc: $c\r\n"; // Who the CCs are - } + } - if ($b) { + if ($b) { $header .= "Bcc: $b\r\n"; // Who the BCCs are - } + } - if ($reply_to != '') + if ($reply_to != '') { $header .= "Reply-To: $reply_to\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 + } + $header .= "\r\n"; // One blank line to separate header and body - $headerlength = strlen($header); - } + $headerlength = strlen($header); + } - // Write the header - fputs ($fp, $header); + /* Write the header */ + fputs ($fp, $header); - return $headerlength; - } + return $headerlength; +} - // Send the body - function writeBodyForDraft ($fp, $passedBody) { - global $default_charset; +/* Send the body */ +function writeBodyForDraft ($fp, $passedBody, $session) { + global $default_charset; - $attachmentlength = 0; + $attachmentlength = 0; - if (isMultipart()) { - $body = '--'.mimeBoundary()."\r\n"; + if (isMultipart($session)) { + $body = '--'.mimeBoundary()."\r\n"; - if ($default_charset != "") + if ($default_charset != ""){ $body .= "Content-Type: text/plain; charset=$default_charset\r\n"; - else + } 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); + $body .= "Content-Transfer-Encoding: 8bit\r\n\r\n"; + $body .= $passedBody . "\r\n\r\n"; + fputs ($fp, $body); - $attachmentlength = attachFiles($fp); + $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); - } + 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); +} - 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(); - 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, $attachment_dir; - $more_headers = Array(); + if ($default_use_priority) { + $more_headers = array_merge($more_headers, createPriorityHeaders($prio)); + } - $imap_stream = sqimap_login($username, $key, $imapServerAddress, $imapPort, 1); + $imap_stream = sqimap_login($username, $key, $imapServerAddress, $imapPort, 1); - $tmpDraftFile = "draft-" . GenerateRandomString(32, '', 7); - while ( file_exists($attachment_dir .$tmpDraftFile) ) + $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); - $fp = fopen($attachment_dir . $tmpDraftFile, 'w'); - - $headerlength = write822HeaderForDraft ($fp, $t, $c, $b, $subject, $more_headers, FALSE); - $bodylength = writeBodyForDraft ($fp, $body, FALSE); - 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, TRUE); - writeBodyForDraft ($imap_stream, $body, TRUE); - sqimap_append_done ($imap_stream); - } - sqimap_logout($imap_stream); - if ($length) - ClearAttachments(); - if (file_exists($attachment_dir . $tmpDraftFile) ) - unlink ($attachment_dir . $tmpDraftFile); - return $length; + $full_tmpDraftFile = "$hashed_attachment_dir/$tmpDraftFile"; + } + $fp = fopen($full_tmpDraftFile, 'wb'); + + $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; } + ?>