From 1638beb6a5ee43f1143968b7256f19e6c806af9a Mon Sep 17 00:00:00 2001 From: stekkel Date: Sun, 7 Jan 2007 20:30:01 +0000 Subject: [PATCH] I don't know what triggered this bug to become visible but suddenly the compose screen was full with serialized data from compose_session. Putting back urlencode() removed in revision 1.372, Sun Mar 28 14:38:13 2004 UTC fixed this again. git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@12100 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- src/compose.php | 56 ++++++++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/src/compose.php b/src/compose.php index 3c03f9fe..032c95f7 100644 --- a/src/compose.php +++ b/src/compose.php @@ -125,7 +125,7 @@ if ( sqgetGlobalVar('mailtodata', $mailtodata, SQ_GET) ) { 'body' => 'body', 'subject' => 'subject'); $mtdata = unserialize($mailtodata); - + foreach ($trtable as $f => $t) { if ( !empty($mtdata[$f]) ) { $$t = $mtdata[$f]; @@ -313,7 +313,7 @@ if (sqsession_is_registered('session_expired_post')) { sqsession_unregister('session_expired_post'); session_write_close(); } else { - // these are the vars that we can set from the expired composed session + // these are the vars that we can set from the expired composed session $compo_var_list = array ( 'send_to', 'send_to_cc','body','startMessage', 'passed_body','use_signature','signature','attachments','subject','newmail', 'send_to_bcc', 'passed_id', 'mailbox', 'from_htmladdr_search', 'identity', @@ -398,6 +398,7 @@ if ($draft) { showInputForm($session); exit(); } else { + $compose_messages[$session] = NULL; unset($compose_messages[$session]); $draft_message = _("Draft Email Saved"); /* If this is a resumed draft, then delete the original */ @@ -413,7 +414,7 @@ if ($draft) { } sqimap_logout($imap_stream); } - + $oErrorHandler->saveDelayedErrors(); session_write_close(); @@ -492,7 +493,7 @@ if ($send) { $Result = deliverMessage($composeMessage); - // NOTE: this hook changed in 1.5.2 from sending $Result and + // NOTE: this hook changed in 1.5.2 from sending $Result and // $composeMessage as args #2 and #3 to being in an array // under arg #2 do_hook('compose_send_after', $temp=array(&$Result, &$composeMessage)); @@ -500,6 +501,7 @@ if ($send) { showInputForm($session); exit(); } + $compose_messages[$session] = NULL; unset($compose_messages[$session]); /* if it is resumed draft, delete draft message */ @@ -766,7 +768,7 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se $type1 = $msg->type1; $unencoded_bodypart = mime_fetch_body($imapConnection, $passed_id, $ent); $body_part_entity = $message->getEntity($ent); - $bodypart = decodeBody($unencoded_bodypart, + $bodypart = decodeBody($unencoded_bodypart, $body_part_entity->header->encoding); if ($type1 == 'html') { $bodypart = str_replace("\n", ' ', $bodypart); @@ -855,11 +857,11 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se } } $subject = decodeHeader($orig_header->subject,false,false,true); - + // Remember the receipt settings $request_mdn = $mdn_user_support && !empty($orig_header->dnt) ? '1' : '0'; $request_dr = $mdn_user_support && !empty($orig_header->drnt) ? '1' : '0'; - + /* 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; @@ -1161,7 +1163,7 @@ function showInputForm ($session, $values=false) { if ($compose_new_win == '1') { $oTemplate->display('compose_newwin_close.tpl'); } - + if ($location_of_buttons == 'top') { showComposeButtonRow(); } @@ -1173,16 +1175,16 @@ function showInputForm ($session, $values=false) { $identities[$id] = $data['full_name'].' <'.$data['email_address'].'>'; } } - + $oTemplate->assign('identities', $identities); $oTemplate->assign('identity_def', $identity); $oTemplate->assign('input_onfocus', 'onfocus="'.join(' ', $onfocus_array).'"'); - + $oTemplate->assign('to', htmlspecialchars($send_to)); $oTemplate->assign('cc', htmlspecialchars($send_to_cc)); $oTemplate->assign('bcc', htmlspecialchars($send_to_bcc)); $oTemplate->assign('subject', htmlspecialchars($subject)); - + $oTemplate->display('compose_header.tpl'); if ($location_of_buttons == 'between') { @@ -1224,9 +1226,9 @@ function showInputForm ($session, $values=false) { $oTemplate->assign('input_onfocus', 'onfocus="'.join(' ', $onfocus_array).'"'); $oTemplate->assign('body', $body_str); $oTemplate->assign('show_bottom_send', $location_of_buttons!='bottom'); - + $oTemplate->display ('compose_body.tpl'); - + if ($location_of_buttons == 'bottom') { showComposeButtonRow(); } @@ -1257,7 +1259,7 @@ function showInputForm ($session, $values=false) { $attached_filename = decodeHeader($attachment->mime_header->getParameter('name')); $type = $attachment->mime_header->type0.'/'. $attachment->mime_header->type1; - + $a = array(); $a['Key'] = $key; $a['FileName'] = $attached_filename; @@ -1267,11 +1269,11 @@ function showInputForm ($session, $values=false) { } } } - + $max = min($sizes); $oTemplate->assign('max_file_size', empty($max) ? -1 : $max); $oTemplate->assign('attachments', $attach); - + $oTemplate->display('compose_attachments.tpl'); } // End of file_uploads if-block /* End of attachment code */ @@ -1283,8 +1285,9 @@ function showInputForm ($session, $values=false) { store the complete ComposeMessages array in a hidden input value so we can restore them in case of a session timeout. */ + //sm_print_r($compose_messages); sqgetGlobalVar('QUERY_STRING', $queryString, SQ_SERVER); - echo addHidden('restoremessages', serialize($compose_messages)). + echo addHidden('restoremessages', urlencode(serialize($compose_messages))). addHidden('composesession', $composesession). addHidden('querystring', $queryString). "\n"; @@ -1301,7 +1304,7 @@ function showInputForm ($session, $values=false) { if ($compose_new_win=='1') { $oTemplate->display('compose_newwin_close.tpl'); } - + $oErrorHandler->setDelayedErrors(false); $oTemplate->display('footer.tpl'); } @@ -1314,15 +1317,15 @@ function showComposeButtonRow() { $data_dir, $username; global $oTemplate, $buffer_hook; - - if ($default_use_priority) { + + if ($default_use_priority) { $priorities = array('1'=>_("High"), '3'=>_("Normal"), '5'=>_("Low")); $priority = isset($mailprio) ? $mailprio : 3; } else { $priorities = array(); $priority = NULL; } - + $mdn_user_support=getPref($data_dir, $username, 'mdn_user_support',$default_use_mdn); if ($use_javascript_addr_book) { @@ -1341,11 +1344,11 @@ function showComposeButtonRow() { $oTemplate->assign('allow_priority', $default_use_priority==1); $oTemplate->assign('priority_list', $priorities); $oTemplate->assign('current_priority', $priority); - + $oTemplate->assign('notifications_enabled', $mdn_user_support==1); $oTemplate->assign('read_receipt', $request_mdn=='1'); $oTemplate->assign('delivery_receipt', $request_dr=='1'); - + $oTemplate->assign('drafts_enabled', $save_as_draft); $oTemplate->assign('address_book_button', $addr_book); @@ -1496,7 +1499,7 @@ function deliverMessage($composeMessage, $draft=false) { } elseif (isset($rfc822_header->dnt)) { unset($rfc822_header->dnt); } - + /* Receipt: On Delivery */ if (isset($request_dr) && $request_dr) { $rfc822_header->more_headers['Return-Receipt-To'] = $from_mail; @@ -1537,7 +1540,7 @@ function deliverMessage($composeMessage, $draft=false) { $rfc822_header->content_type = $content_type; $composeMessage->rfc822_header = $rfc822_header; - + /* Here you can modify the message structure just before we hand it over to deliver; plugin authors note that $composeMessage is sent and modified by reference since 1.5.2 */ @@ -1648,6 +1651,7 @@ function deliverMessage($composeMessage, $draft=false) { global $passed_id, $mailbox, $action, $what, $iAccount,$startMessage; $composeMessage->purgeAttachments(); + unset($composeMessage); if ($action=='reply' || $action=='reply_all' || $action=='forward' || $action=='forward_as_attachment') { require(SM_PATH . 'functions/mailbox_display.php'); $aMailbox = sqm_api_mailbox_select($imap_stream, $iAccount, $mailbox,array('setindex' => $what, 'offset' => $startMessage),array()); @@ -1671,7 +1675,7 @@ function deliverMessage($composeMessage, $draft=false) { case 'forward': case 'forward_as_attachment': // check if we are allowed to set the $Forwarded flag (RFC 4550 paragraph 2.8) - if (in_array('$forwarded',$aMailbox['PERMANENTFLAGS'], true) || + if (in_array('$forwarded',$aMailbox['PERMANENTFLAGS'], true) || in_array('\\*',$aMailbox['PERMANENTFLAGS'])) { $aUpdatedMsgs = sqimap_toggle_flag($imap_stream, array($passed_id), '$Forwarded', true, false); -- 2.25.1