X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=src%2Fcompose.php;h=595001939758b5bb03399c981d9e3066082543f8;hp=5dcb5bb6c65cd7215bd2b2a010920555d771852a;hb=98d42122fd9b0346374c5b1468e1c0cbb3767b24;hpb=12a0ed017a33a4df4afa2cbc1944626cc5315be5 diff --git a/src/compose.php b/src/compose.php index 5dcb5bb6..59500193 100644 --- a/src/compose.php +++ b/src/compose.php @@ -22,6 +22,7 @@ define('SM_PATH','../'); /* SquirrelMail required files. */ require_once(SM_PATH . 'include/validate.php'); +require_once(SM_PATH . 'functions/global.php'); require_once(SM_PATH . 'functions/imap.php'); require_once(SM_PATH . 'functions/date.php'); require_once(SM_PATH . 'functions/mime.php'); @@ -31,17 +32,19 @@ require_once(SM_PATH . 'class/deliver/Deliver.class.php'); require_once(SM_PATH . 'functions/addressbook.php'); /* --------------------- Get globals ------------------------------------- */ -$username = $_SESSION['username']; -$onetimepad = $_SESSION['onetimepad']; -$base_uri = $_SESSION['base_uri']; -$delimiter = $_SESSION['delimiter']; +/** COOKIE VARS */ +sqgetGlobalVar('key', $key, SQ_COOKIE); -if (isset($_POST['return'])) { - $html_addr_search_done = 'Use Addresses'; -} -if ( isset($_SESSION['composesession']) ) { - $composesession = $_SESSION['composesession']; -} +/** SESSION VARS */ +sqgetGlobalVar('username', $username, SQ_SESSION); +sqgetGlobalVar('onetimepad',$onetimepad, SQ_SESSION); +sqgetGlobalVar('base_uri', $base_uri, SQ_SESSION); +sqgetGlobalVar('delimiter', $delimiter, SQ_SESSION); + +sqgetGlobalVar('composesession', $composesession, SQ_SESSION); +sqgetGlobalVar('compose_messages', $compose_messages, SQ_SESSION); + +/** SESSION/POST/GET VARS */ sqgetGlobalVar('action',$action); sqgetGlobalVar('session',$session); sqgetGlobalVar('mailbox',$mailbox); @@ -60,46 +63,32 @@ sqgetGlobalVar('passed_id',$passed_id); sqgetGlobalVar('passed_ent_id',$passed_ent_id); sqgetGlobalVar('send',$send); -if ( isset($_POST['sigappend']) ) { - $sigappend = $_POST['sigappend']; -} -/* From addressbook search */ -if ( isset($_POST['from_htmladdr_search']) ) { - $from_htmladdr_search = $_POST['from_htmladdr_search']; -} -if ( isset($_POST['addr_search_done']) ) { - $html_addr_search_done = $_POST['addr_search_done']; -} -if ( isset($_POST['send_to_search']) ) { - $send_to_search = &$_POST['send_to_search']; -} - -/* Attachments */ sqgetGlobalVar('attach',$attach); -if ( isset($_POST['do_delete']) ) { - $do_delete = $_POST['do_delete']; -} -if ( isset($_POST['delete']) ) { - $delete = &$_POST['delete']; -} -if ( isset($_SESSION['compose_messages']) ) { - $compose_messages = &$_SESSION['compose_messages']; -} - - -/* Forward message as attachment */ -if ( isset($_GET['attachedmessages']) ) { - $attachedmessages = $_GET['attachedmessages']; -} -/* Drafts */ sqgetGlobalVar('draft',$draft); sqgetGlobalVar('draft_id',$draft_id); sqgetGlobalVar('ent_num',$ent_num); sqgetGlobalVar('saved_draft',$saved_draft); sqgetGlobalVar('delete_draft',$delete_draft); -$key = $_COOKIE['key']; + +/** POST VARS */ +sqgetGlobalVar('sigappend', $sigappend, SQ_POST); +sqgetGlobalVar('from_htmladdr_search', $from_htmladdr_search, SQ_POST); +sqgetGlobalVar('addr_search_done', $html_addr_search_done, SQ_POST); +sqgetGlobalVar('send_to_search', $send_to_search, SQ_POST); +sqgetGlobalVar('do_delete', $do_delete, SQ_POST); +sqgetGlobalVar('delete', $delete, SQ_POST); +sqgetGlobalVar('restoremessages', $restoremessages, SQ_POST); +if ( sqgetGlobalVar('return', $temp, SQ_POST) ) { + $html_addr_search_done = 'Use Addresses'; +} + +/** GET VARS */ +sqgetGlobalVar('attachedmessages', $attachedmessages, SQ_GET); + +/* Location (For HTTP 1.1 Header("Location: ...") redirects) */ +$location = get_location(); /* --------------------- Specific Functions ------------------------------ */ @@ -143,12 +132,13 @@ function replyAllString($header) { $url_replytoallcc = ''; foreach( $url_replytoall_ar as $email => $personal) { if ($personal) { - $url_replytoallcc .= ", \"$personal\" <$email>"; + $url_replytoallcc .= ", $personal <$email>"; } else { $url_replytoallcc .= ', '. $email; } } $url_replytoallcc = substr($url_replytoallcc,2); + return $url_replytoallcc; } @@ -209,7 +199,7 @@ function getforwardHeader($orig_header) { $subject = decodeHeader($orig_header->subject,false,false); $subject = str_replace(' ',' ',$subject); $bodyTop = str_pad(' '._("Original Message").' ',$editor_size -2,'-',STR_PAD_BOTH) . - "\n\n". $display[_("Subject")] . $subject . "\n" . + "\n". $display[_("Subject")] . $subject . "\n" . $display[_("From")] . $from . "\n" . $display[_("Date")] . getLongDateString( $orig_header->date ). "\n" . $display[_("To")] . $to . "\n"; @@ -229,7 +219,7 @@ function getforwardHeader($orig_header) { * vars. */ if (sqsession_is_registered('session_expired_post')) { - $session_expired_post = $_SESSION['session_expired_post']; + sqgetGlobalVar('session_expired_post', $session_expired_post, SQ_SESSION); /* * extra check for username so we don't display previous post data from * another user during this session. @@ -313,17 +303,17 @@ if ($draft) { $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=" . urlencode($draft_folder) . + Header("Location: $location/delete_message.php?mailbox=" . urlencode($draft_folder) . "&message=$delete_draft&sort=$sort&startMessage=1&saved_draft=yes"); exit(); } else { if ($compose_new_win == '1') { - Header("Location: compose.php?saved_draft=yes&session=$composesession"); + Header("Location: $location/compose.php?saved_draft=yes&session=$composesession"); exit(); } else { - Header("Location: right_main.php?mailbox=$draft_folder&sort=$sort". + Header("Location: $location/right_main.php?mailbox=$draft_folder&sort=$sort". "&startMessage=1¬e=".urlencode($draft_message)); exit(); } @@ -374,10 +364,12 @@ if ($send) { } else { sqWordWrap($line, $editor_size); $newBody .= $line . "\n"; + } + } $body = $newBody; - do_hook('compose_send'); + $composeMessage=$compose_messages[$session]; $Result = deliverMessage($composeMessage); @@ -387,16 +379,16 @@ if ($send) { } unset($compose_messages[$session]); if ( isset($delete_draft)) { - Header("Location: delete_message.php?mailbox=" . urlencode( $draft_folder ). + Header("Location: $location/delete_message.php?mailbox=" . urlencode( $draft_folder ). "&message=$delete_draft&sort=$sort&startMessage=1&mail_sent=yes"); exit(); } if ($compose_new_win == '1') { - Header("Location: compose.php?mail_sent=yes"); + Header("Location: $location/compose.php?mail_sent=yes"); } else { - Header("Location: right_main.php?mailbox=$urlMailbox&sort=$sort". + Header("Location: $location/right_main.php?mailbox=$urlMailbox&sort=$sort". "&startMessage=1"); } } else { @@ -550,6 +542,9 @@ elseif (isset($sigappend)) { if (isset($send_to_bcc)) { $values['send_to_bcc'] = $send_to_bcc; } + if (isset($subject)) { + $values['subject'] = $subject; + } showInputForm($session, $values); } @@ -564,6 +559,7 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se $use_signature, $composesession, $data_dir, $username, $username, $key, $imapServerAddress, $imapPort, $compose_messages, $composeMessage; + global $languages, $squirrelmail_language; $send_to = $send_to_cc = $send_to_bcc = $subject = $identity = ''; $mailprio = 3; @@ -614,6 +610,12 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se $bodypart = str_replace(array(' ','>','<'),array(' ','<','>'),$bodypart); $bodypart = strip_tags($bodypart); } + if (isset($languages[$squirrelmail_language]['XTRA_CODE']) && + function_exists($languages[$squirrelmail_language]['XTRA_CODE'])) { + if (mb_detect_encoding($bodypart) != 'ASCII') { + $bodypart = $languages[$squirrelmail_language]['XTRA_CODE']('decode', $bodypart); + } + } $body .= $bodypart; } if ($default_use_priority) { @@ -658,10 +660,14 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se switch ($action) { case ('draft'): $use_signature = FALSE; + $composeMessage->rfc822_header = $orig_header; $send_to = decodeHeader($orig_header->getAddr_s('to'),false,true); $send_to_cc = decodeHeader($orig_header->getAddr_s('cc'),false,true); $send_to_bcc = decodeHeader($orig_header->getAddr_s('bcc'),false,true); $subject = decodeHeader($orig_header->subject,false,true); +// /* remember the references and in-reply-to headers in case of an reply */ +// $composeMessage->rfc822_header->more_headers['References'] = $orig_header->references; +// $composeMessage->rfc822_header->more_headers['In-Reply-To'] = $orig_header->in_reply_to; $body_ary = explode("\n", $body); $cnt = count($body_ary) ; $body = ''; @@ -688,7 +694,7 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se case ('forward'): $send_to = ''; $subject = decodeHeader($orig_header->subject,false,true); - if ((substr(strtolower($subject), 0, 4) != 'fwd:') && + if ((substr(strtolower($subject), 0, 4) != 'fwd:') && (substr(strtolower($subject), 0, 5) != '[fwd:') && (substr(strtolower($subject), 0, 6) != '[ fwd:')) { $subject = '[Fwd: ' . $subject . ']'; @@ -829,7 +835,7 @@ function getMessage_RFC822_Attachment($message, $composeMessage, $passed_id, TRUE, $response, $readmessage, $uid_support); $message = $message->parent; } - if ($response = 'OK') { + if ($response == 'OK') { $subject = encodeHeader($message->rfc822_header->subject); array_shift($body_a); $body = implode('', $body_a) . "\r\n"; @@ -867,6 +873,10 @@ function showInputForm ($session, $values=false) { $mailprio = $values['mailprio']; $body = $values['body']; $identity = (int) $values['identity']; + } else { + $send_to = decodeHeader($send_to); + $send_to_cc = decodeHeader($send_to_cc); + $send_to_bcc = decodeHeader($send_to_bcc); } if ($use_javascript_addr_book) { @@ -915,73 +925,86 @@ function showInputForm ($session, $values=false) { showComposeButtonRow(); } + /* display select list for identities */ $idents = getPref($data_dir, $username, 'identities', 0); if ($idents > 1) { - echo '
' . "\n" . + ' |
' . "\n" .
' |