X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=src%2Fcompose.php;h=d775eb22dbde02fe80b1d2ee1526750537f2fa94;hp=e499efe815841ce8933874e428ba00f928d5c567;hb=5cc0b70e9e4f72b5ebcc3e3cea1b3ca510a92718;hpb=9f599fe38440e503feefc29822189727ee3bcbc2 diff --git a/src/compose.php b/src/compose.php index e499efe8..d775eb22 100644 --- a/src/compose.php +++ b/src/compose.php @@ -25,31 +25,89 @@ require_once('../functions/smtp.php'); require_once('../functions/display_messages.php'); require_once('../functions/plugin.php'); +/* --------------------- Specific Functions ------------------------------ */ + + + +/** + * Does the opposite of sqWordWrap() + */ +function sqUnWordWrap(&$body) { + $lines = explode("\n", $body); + $body = ''; + $PreviousSpaces = ''; + for ($i = 0; $i < count($lines); $i ++) { + ereg("^([\t >]*)([^\t >].*)?$", $lines[$i], $regs); + $CurrentSpaces = $regs[1]; + if (isset($regs[2])) { + $CurrentRest = $regs[2]; + } + + if ($i == 0) { + $PreviousSpaces = $CurrentSpaces; + $body = $lines[$i]; + } else if (($PreviousSpaces == $CurrentSpaces) /* Do the beginnings match */ + && (strlen($lines[$i - 1]) > 65) /* Over 65 characters long */ + && strlen($CurrentRest)) { /* and there's a line to continue with */ + $body .= ' ' . $CurrentRest; + } else { + $body .= "\n" . $lines[$i]; + $PreviousSpaces = $CurrentSpaces; + } + } + $body .= "\n"; +} + +/* ----------------------------------------------------------------------- */ + if (!isset($attachments)) { $attachments = array(); session_register('attachments'); } +if (!isset($composesession)) { + $composesession = 0; + session_register('composesession'); +} + +if (!isset($session)) { + $session = "$composesession" +1; + $composesession = $session; +} + if (!isset($mailbox) || $mailbox == '' || ($mailbox == 'None')) { $mailbox = 'INBOX'; } if (isset($draft)) { include_once ('../src/draft_actions.php'); - if (!saveMessageAsDraft($send_to, $send_to_cc, $send_to_bcc, $subject, $body, $reply_id, $MDN)) { - showInputForm(); + if (! isset($reply_id)) { + $reply_id = 0; + } + if (! isset($MDN)) { + $MDN = 'False'; + } + if (!saveMessageAsDraft($send_to, $send_to_cc, $send_to_bcc, $subject, $body, $reply_id, $MDN, $session)) { + showInputForm($session); exit(); } else { $draft_message = _("Draft Email Saved"); /* If this is a resumed draft, then delete the original */ if(isset($delete_draft)) { - Header("Location: delete_message.php?mailbox=$draft_folder". - "&message=$delete_draft&sort=$sort&startMessage=1"); + Header("Location: delete_message.php?mailbox=" . urlencode($draft_folder) . + "&message=$delete_draft&sort=$sort&startMessage=1&saved_draft=yes"); exit(); - } else { + } + else { + if ($compose_new_win == '1') { + Header("Location: compose.php?saved_draft=yes&session=$composesession"); + exit(); + } + else { Header("Location: right_main.php?mailbox=$draft_folder&sort=$sort". "&startMessage=1¬e=$draft_message"); exit(); + } } } } @@ -58,7 +116,7 @@ if (isset($send)) { if (isset($HTTP_POST_FILES['attachfile']) && $HTTP_POST_FILES['attachfile']['tmp_name'] && $HTTP_POST_FILES['attachfile']['tmp_name'] != 'none') { - $AttachFailure = saveAttachedFiles(); + $AttachFailure = saveAttachedFiles($session); } if (checkInput(false) && !isset($AttachFailure)) { $urlMailbox = urlencode (trim($mailbox)); @@ -67,13 +125,13 @@ if (isset($send)) { } /* * Set $default_charset to correspond with the user's selection - * of language interface. + * of language interface. */ set_my_charset(); /* * This is to change all newlines to \n - * We'll change them to \r\n later (in the sendMessage function) + * We'll change them to \r\n later (in the sendMessage function) */ $body = str_replace("\r\n", "\n", $body); $body = str_replace("\r", "\n", $body); @@ -82,7 +140,7 @@ if (isset($send)) { * Rewrap $body so that no line is bigger than $editor_size * This should only really kick in the sqWordWrap function * if the browser doesn't support "HARD" as the wrap type - * Or, in Opera's case, something goes wrong. + * Or, in Opera's case, something goes wrong. */ $body = explode("\n", $body); $newBody = ''; @@ -99,47 +157,59 @@ if (isset($send)) { } $body = $newBody; - do_hook("compose_send"); - + do_hook('compose_send'); + $MDN = False; // we are not sending a mdn response if (! isset($mailprio)) { $Result = sendMessage($send_to, $send_to_cc, $send_to_bcc, - $subject, $body, $reply_id, $MDN); + $subject, $body, $reply_id, $MDN, '', $session); } else { $Result = sendMessage($send_to, $send_to_cc, $send_to_bcc, - $subject, $body, $reply_id, $MDN, $mailprio); + $subject, $body, $reply_id, $MDN, $mailprio, $session); } if (! $Result) { - showInputForm(); + showInputForm($session); exit(); } if ( isset($delete_draft)) { - Header("Location: delete_message.php?mailbox=$draft_folder". - "&message=$delete_draft&sort=$sort&startMessage=1"); + Header("Location: delete_message.php?mailbox=" . urlencode( $draft_folder ). + "&message=$delete_draft&sort=$sort&startMessage=1&mail_sent=yes"); exit(); } - - Header("Location: right_main.php?mailbox=$urlMailbox&sort=$sort". - "&startMessage=1"); + if ($compose_new_win == '1') { + Header("Location: compose.php?mail_sent=yes&session=$composesession"); + } + else { + Header("Location: right_main.php?mailbox=$urlMailbox&sort=$sort". + "&startMessage=1"); + } } else { /* *$imapConnection = sqimap_login($username, $key, $imapServerAddress, * $imapPort, 0); */ - displayPageHeader($color, $mailbox); - + if ($compose_new_win == '1') { + compose_Header($color, $mailbox); + } + else { + displayPageHeader($color, $mailbox); + } if (isset($AttachFailure)) { plain_error_message(_("Could not move/copy file. File not attached"), $color); } checkInput(true); - showInputForm(); + showInputForm($session); /* sqimap_logout($imapConnection); */ } -} -elseif (isset($html_addr_search_done)) { - displayPageHeader($color, $mailbox); +} elseif (isset($html_addr_search_done)) { + if ($compose_new_win == '1') { + compose_Header($color, $mailbox); + } + else { + displayPageHeader($color, $mailbox); + } if (isset($send_to_search) && is_array($send_to_search)) { foreach ($send_to_search as $k => $v) { @@ -163,13 +233,12 @@ elseif (isset($html_addr_search_done)) { } } } - showInputForm(); -} -elseif (isset($html_addr_search)) { + showInputForm($session); +} elseif (isset($html_addr_search)) { if (isset($HTTP_POST_FILES['attachfile']) && $HTTP_POST_FILES['attachfile']['tmp_name'] && $HTTP_POST_FILES['attachfile']['tmp_name'] != 'none') { - if (saveAttachedFiles()) { + if (saveAttachedFiles($session)) { plain_error_message(_("Could not move/copy file. File not attached"), $color); } } @@ -178,28 +247,75 @@ elseif (isset($html_addr_search)) { * click. If you can think of a better way, please implement it. */ include_once('./addrbook_search_html.php'); -} -elseif (isset($attach)) { - if (saveAttachedFiles()) { +} elseif (isset($attach)) { + if (saveAttachedFiles($session)) { plain_error_message(_("Could not move/copy file. File not attached"), $color); } - displayPageHeader($color, $mailbox); - showInputForm(); + if ($compose_new_win == '1') { + compose_Header($color, $mailbox); + } + else { + displayPageHeader($color, $mailbox); + } + showInputForm($session); } -elseif (isset($do_delete)) { - displayPageHeader($color, $mailbox); +elseif (isset($sigappend)) { + $idents = getPref($data_dir, $username, 'identities', 0); + if ($idents > 1) { + if ($identity == 'default') { + $no = 'g'; + } else { + $no = $identity; + } + $signature = getSig($data_dir, $username, $no); + } + $body .= "\n\n".($prefix_sig==true? "-- \n":'').$signature; + if ($compose_new_win == '1') { + compose_Header($color, $mailbox); + } else { + displayPageHeader($color, $mailbox); + } + showInputForm($session); +} elseif (isset($do_delete)) { + if ($compose_new_win == '1') { + compose_Header($color, $mailbox); + } + else { + displayPageHeader($color, $mailbox); + } $hashed_attachment_dir = getHashedDir($username, $attachment_dir); if (isset($delete) && is_array($delete)) { foreach($delete as $index) { $attached_file = $hashed_attachment_dir . '/' . $attachments[$index]['localfilename']; - unlink ($attached_file); - unset ($attachments[$index]); + unlink ($attached_file); + unset ($attachments[$index]); } } - showInputForm(); + showInputForm($session); + +} elseif (isset($attachedmessages)) { + + /* + * This handles the case if we attache message + */ + $imapConnection = sqimap_login($username, $key, $imapServerAddress, + $imapPort, 0); + if ($compose_new_win == '1') { + compose_Header($color, $mailbox); + } + else { + displayPageHeader($color, $mailbox); + } + + $newmail = true; + + newMail(); + showInputForm($session); + sqimap_logout($imapConnection); + } else { /* * This handles the default case as well as the error case @@ -207,22 +323,27 @@ elseif (isset($do_delete)) { */ $imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0); - displayPageHeader($color, $mailbox); + if ($compose_new_win == '1') { + compose_Header($color, $mailbox); + } + else { + displayPageHeader($color, $mailbox); + } $newmail = true; - ClearAttachments(); + ClearAttachments($session); if (isset($forward_id) && $forward_id && isset($ent_num) && $ent_num) { - getAttachments(0); + getAttachments(0, $session); } if (isset($draft_id) && $draft_id && isset($ent_num) && $ent_num) { - getAttachments(0); + getAttachments(0, $session); } - newMail(); - showInputForm(); + newMail($session); + showInputForm($session); sqimap_logout($imapConnection); } @@ -236,7 +357,7 @@ exit(); function newMail () { global $forward_id, $imapConnection, $msg, $ent_num, $body_ary, $body, $reply_id, $send_to, $send_to_cc, $mailbox, $send_to_bcc, $editor_size, - $draft_id, $use_signature; + $draft_id, $use_signature, $composesession, $forward_cc; $send_to = decodeHeader($send_to, false); $send_to_cc = decodeHeader($send_to_cc, false); @@ -313,6 +434,14 @@ function newMail () { $bodyTop .= ' ' . $orig_header->to[$x] . "\n"; } } + if (isset($forward_cc) && $forward_cc) { + $bodyTop .= _("Cc") . ': ' . $orig_header->cc[0] . "\n"; + if (count($orig_header->cc) > 1) { + for ($x = 1; $x < count($orig_header->cc); $x++) { + $bodyTop .= ' ' . $orig_header->cc[$x] . "\n"; + } + } + } $bodyTop .= "\n"; $body = $bodyTop . $body; } @@ -359,7 +488,7 @@ function newMail () { } /* function newMail() */ -function getAttachments($message) { +function getAttachments($message, $session) { global $mailbox, $attachments, $attachment_dir, $imapConnection, $ent_num, $forward_id, $draft_id, $username; @@ -395,6 +524,8 @@ function getAttachments($message) { $newAttachment['remotefilename'] = $filename; $newAttachment['type'] = strtolower($message->header->type0 . '/' . $message->header->type1); + $newAttachment['id'] = strtolower($message->header->id); + $newAttachment['session'] = $session; /* Write Attachment to file */ $fp = fopen ("$hashed_attachment_dir/$localfilename", 'w'); @@ -407,20 +538,21 @@ function getAttachments($message) { } } else { for ($i = 0; $i < count($message->entities); $i++) { - getAttachments($message->entities[$i]); + getAttachments($message->entities[$i], $session); } } return; } -function showInputForm () { +function showInputForm ($session) { global $send_to, $send_to_cc, $reply_subj, $forward_subj, $body, $passed_body, $color, $use_signature, $signature, $prefix_sig, $editor_size, $attachments, $subject, $newmail, $use_javascript_addr_book, $send_to_bcc, $reply_id, $mailbox, $from_htmladdr_search, $location_of_buttons, $attachment_dir, $username, $data_dir, $identity, $draft_id, $delete_draft, - $mailprio, $default_use_mdn, $mdn_user_support; + $mailprio, $default_use_mdn, $mdn_user_support, $compose_new_win, + $saved_draft, $mail_sent, $sig_first; $subject = decodeHeader($subject, false); $reply_subj = decodeHeader($reply_subj, false); @@ -440,7 +572,7 @@ function showInputForm () { echo "\n" . '
\n"; @@ -450,9 +582,20 @@ function showInputForm () { if (isset($delete_draft)) { echo '\n"; } + if (isset($session)) { + echo '\n"; + } + if ($saved_draft == 'yes') { + echo '
'. _("Draft Saved").'
'; + } + if ($mail_sent == 'yes') { + echo '
'. _("Your Message has been sent").'
'; + } echo '' . "\n"; - + if ($compose_new_win == '1') { + echo ' '."\n"; + } if ($location_of_buttons == 'top') { showComposeButtonRow(); } @@ -546,9 +689,19 @@ function showInputForm () { echo ' ' . "\n" . ' ' . "\n" . @@ -558,14 +711,6 @@ function showInputForm () { showComposeButtonRow(); } else { echo ' ' . "\n"; } @@ -587,10 +732,12 @@ function showInputForm () { ' ' . '
' . "\n" . '   
' . "\n" . '
'; - - $mdn_user_support=getPref($data_dir, $username, 'mdn_user_support',$default_use_mdn); - if ($default_use_mdn) { - if ($mdn_user_support) { - echo _("Confirm reading:"). - ""; - } - } echo '  
'; foreach ($attachments as $key => $info) { - $attached_file = "$hashed_attachment_dir/$info[localfilename]"; - echo '\n" . - $info['remotefilename'] . ' - ' . $info['type'] . ' (' . - show_readable_size(filesize($attached_file)) . ")
\n"; + if ($info['session'] == $session) { + $attached_file = "$hashed_attachment_dir/$info[localfilename]"; + echo '\n" . + $info['remotefilename'] . ' - ' . $info['type'] . ' (' . + show_readable_size(filesize($attached_file)) . ")
\n"; + } } echo '
\n\n"; + if ($default_use_priority) { + if(!isset($mailprio)) { + $mailprio = "3"; + } + echo _("Priority") .': "; + } + $mdn_user_support=getPref($data_dir, $username, 'mdn_user_support',$default_use_mdn); + if ($default_use_mdn) { + if ($mdn_user_support) { + echo "\n\t". _("Receipt") .': '. + ''. _("On read"). + ' '. _("On Delivery"); + } + } echo "
\n \n"; + echo "\n \n"; if ($use_javascript_addr_book) { echo "