X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fcompose.php;h=0bde788309244c581752e858a3d1202543f7f915;hb=f302d7046daf67851fd322450ef02088b8c4d2f3;hp=c8a3b1605c2b3ce0a00733f975fb82cc79e40bbf;hpb=e02775fe9c3db5ce9aa7836a087c93c54425cde8;p=squirrelmail.git
diff --git a/src/compose.php b/src/compose.php
index c8a3b160..0bde7883 100644
--- a/src/compose.php
+++ b/src/compose.php
@@ -25,11 +25,56 @@ 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';
}
@@ -42,8 +87,11 @@ if (isset($draft)) {
if (! isset($MDN)) {
$MDN = 'False';
}
- if (!saveMessageAsDraft($send_to, $send_to_cc, $send_to_bcc, $subject, $body, $reply_id, $MDN)) {
- showInputForm();
+ if (! isset($mailprio)) {
+ $mailprio = '';
+ }
+ if (!saveMessageAsDraft($send_to, $send_to_cc, $send_to_bcc, $subject, $body, $reply_id, $mailprio, $session)) {
+ showInputForm($session);
exit();
} else {
$draft_message = _("Draft Email Saved");
@@ -55,7 +103,7 @@ if (isset($draft)) {
}
else {
if ($compose_new_win == '1') {
- Header("Location: compose.php?saved_draft=yes");
+ Header("Location: compose.php?saved_draft=yes&session=$composesession");
exit();
}
else {
@@ -71,7 +119,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));
@@ -94,8 +142,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.
+ * if the browser doesn't support "VIRTUAL" as the wrap type.
*/
$body = explode("\n", $body);
$newBody = '';
@@ -117,13 +164,13 @@ if (isset($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)) {
@@ -132,7 +179,7 @@ if (isset($send)) {
exit();
}
if ($compose_new_win == '1') {
- Header("Location: compose.php?mail_sent=yes");
+ Header("Location: compose.php?mail_sent=yes&session=$composesession");
}
else {
Header("Location: right_main.php?mailbox=$urlMailbox&sort=$sort".
@@ -155,7 +202,7 @@ if (isset($send)) {
}
checkInput(true);
- showInputForm();
+ showInputForm($session);
/* sqimap_logout($imapConnection); */
}
} elseif (isset($html_addr_search_done)) {
@@ -188,12 +235,12 @@ if (isset($send)) {
}
}
}
- showInputForm();
+ 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);
}
}
@@ -203,7 +250,7 @@ if (isset($send)) {
*/
include_once('./addrbook_search_html.php');
} elseif (isset($attach)) {
- if (saveAttachedFiles()) {
+ if (saveAttachedFiles($session)) {
plain_error_message(_("Could not move/copy file. File not attached"), $color);
}
if ($compose_new_win == '1') {
@@ -212,7 +259,25 @@ if (isset($send)) {
else {
displayPageHeader($color, $mailbox);
}
- showInputForm();
+ showInputForm($session);
+}
+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);
@@ -226,12 +291,33 @@ if (isset($send)) {
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
@@ -248,18 +334,18 @@ if (isset($send)) {
$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);
}
@@ -273,11 +359,14 @@ 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);
$send_to_bcc = decodeHeader($send_to_bcc, false);
+ $send_to = str_replace('<', '<', str_replace('>', '>', str_replace('&', '&', str_replace('"', '"', $send_to))));
+ $send_to_cc = str_replace('<', '<', str_replace('>', '>', str_replace('&', '&', str_replace('"', '"', $send_to_cc))));
+ $send_to_bcc = str_replace('<', '<', str_replace('>', '>', str_replace('&', '&', str_replace('"', '"', $send_to_bcc))));
if ($forward_id) {
$id = $forward_id;
@@ -350,6 +439,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;
}
@@ -396,7 +493,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;
@@ -432,6 +529,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');
@@ -444,13 +543,13 @@ 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,
@@ -458,7 +557,7 @@ function showInputForm () {
$from_htmladdr_search, $location_of_buttons, $attachment_dir,
$username, $data_dir, $identity, $draft_id, $delete_draft,
$mailprio, $default_use_mdn, $mdn_user_support, $compose_new_win,
- $saved_draft, $mail_sent;
+ $saved_draft, $mail_sent, $sig_first;
$subject = decodeHeader($subject, false);
$reply_subj = decodeHeader($reply_subj, false);
@@ -488,6 +587,10 @@ function showInputForm () {
if (isset($delete_draft)) {
echo '\n";
}
+ if (isset($session)) {
+ echo '\n";
+ }
+
if ($saved_draft == 'yes') {
echo '