From e506b6e54f09ec71062b55bf3d72c9db57c89f05 Mon Sep 17 00:00:00 2001 From: pdontthink Date: Fri, 17 Apr 2009 05:46:18 +0000 Subject: [PATCH] Fix: Messages forwarded as attachments from message list were not getting flagged as forwarded git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@13557 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- functions/mailbox_display.php | 3 ++- src/compose.php | 32 +++++++++++++++++++++++++------- src/right_main.php | 12 ++++++++---- src/search.php | 12 ++++++++---- 4 files changed, 43 insertions(+), 16 deletions(-) diff --git a/functions/mailbox_display.php b/functions/mailbox_display.php index 6a7233a2..1cd515ae 100644 --- a/functions/mailbox_display.php +++ b/functions/mailbox_display.php @@ -1385,7 +1385,8 @@ function handleMessageListForm($imapConnection, &$aMailbox, $sButton='', if (count($aMsgHeaders)) { $composesession = attachSelectedMessages($imapConnection,$aMsgHeaders); // dirty hack, add info to $aMailbox - $aMailbox['FORWARD_SESSION'] = $composesession; + $aMailbox['FORWARD_SESSION']['SESSION_NUMBER'] = $composesession; + $aMailbox['FORWARD_SESSION']['UIDS'] = $aUid; } break; default: diff --git a/src/compose.php b/src/compose.php index 4cd82552..1b8dfd73 100644 --- a/src/compose.php +++ b/src/compose.php @@ -87,6 +87,7 @@ sqgetGlobalVar('html_addr_search',$html_addr_search, $SQ_GLOBAL); sqgetGlobalVar('mail_sent',$mail_sent, $SQ_GLOBAL); sqgetGlobalVar('passed_id',$passed_id, $SQ_GLOBAL, NULL, SQ_TYPE_BIGINT); sqgetGlobalVar('passed_ent_id',$passed_ent_id, $SQ_GLOBAL); +sqgetGlobalVar('fwduid',$fwduid, $SQ_GLOBAL, ''); sqgetGlobalVar('attach',$attach, SQ_POST); sqgetGlobalVar('draft',$draft, SQ_POST); @@ -336,7 +337,7 @@ if (sqsession_is_registered('session_expired_post')) { 'subject', 'newmail', 'send_to_bcc', 'passed_id', 'mailbox', 'from_htmladdr_search', 'identity', 'draft_id', 'delete_draft', 'mailprio', 'edit_as_new', 'attachments', 'composesession', - 'request_mdn', 'request_dr'); + 'request_mdn', 'request_dr', 'fwduid'); foreach ($compo_var_list as $var) { if ( isset($session_expired_post[$var]) && !isset($$var) ) { @@ -1080,7 +1081,7 @@ function showInputForm ($session, $values=false) { $body, $startMessage, $action, $attachments, $use_signature, $signature, $prefix_sig, $session_expired, $editor_size, $editor_height, $subject, $newmail, - $use_javascript_addr_book, $passed_id, $mailbox, + $use_javascript_addr_book, $passed_id, $mailbox, $fwduid, $from_htmladdr_search, $location_of_buttons, $attachment_dir, $username, $data_dir, $identity, $idents, $delete_draft, $mailprio, $compose_new_win, $saved_draft, $mail_sent, $sig_first, @@ -1182,6 +1183,11 @@ function showInputForm ($session, $values=false) { echo addHidden('passed_id', $passed_id); } + if (isset($fwduid)) { +//FIXME: DON'T ECHO HTML FROM CORE! + echo addHidden('fwduid', $fwduid); + } + if ($saved_draft == 'yes') { $oTemplate->assign('note', _("Your draft has been saved.")); $oTemplate->display('note.tpl'); @@ -1687,7 +1693,7 @@ function deliverMessage(&$composeMessage, $draft=false) { // mark as replied or forwarded if applicable // - global $what, $iAccount, $startMessage, $passed_id, $mailbox; + global $what, $iAccount, $startMessage, $passed_id, $fwduid, $mailbox; if ($action=='reply' || $action=='reply_all' || $action=='forward' || $action=='forward_as_attachment') { require(SM_PATH . 'functions/mailbox_display.php'); @@ -1715,10 +1721,22 @@ function deliverMessage(&$composeMessage, $draft=false) { if (in_array('$forwarded',$aMailbox['PERMANENTFLAGS'], true) || in_array('\\*',$aMailbox['PERMANENTFLAGS'])) { - $aUpdatedMsgs = sqimap_toggle_flag($imap_stream, array($passed_id), '$Forwarded', true, false); - if (isset($aUpdatedMsgs[$passed_id]['FLAGS'])) { - if (isset($aMailbox['MSG_HEADERS'][$passed_id])) { - $aMailbox['MSG_HEADERS'][$passed_id]['FLAGS'] = $aMsg['FLAGS']; + // when forwarding as an attachment from the message + // list, passed_id is not used, need to get UID(s) + // from the query string + // + if (empty($passed_id) && !empty($fwduid)) + $ids = explode('_', $fwduid); + else + $ids = array($passed_id); + + $aUpdatedMsgs = sqimap_toggle_flag($imap_stream, $ids, '$Forwarded', true, false); + + foreach ($ids as $id) { + if (isset($aUpdatedMsgs[$id]['FLAGS'])) { + if (isset($aMailbox['MSG_HEADERS'][$id])) { + $aMailbox['MSG_HEADERS'][$id]['FLAGS'] = $aMsg['FLAGS']; + } } } } diff --git a/src/right_main.php b/src/right_main.php index aea8db25..b271951e 100644 --- a/src/right_main.php +++ b/src/right_main.php @@ -264,8 +264,10 @@ if (isset($aMailbox['FORWARD_SESSION'])) { $compose_height = '550'; } // do not use &, it will break the query string and $session will not be detected!!! - $comp_uri = SM_PATH . 'src/compose.php?mailbox='. urlencode($mailbox). - '&session='.urlencode($aMailbox['FORWARD_SESSION']); + $comp_uri = $base_uri . 'src/compose.php?mailbox='. urlencode($mailbox) + . '&session='.urlencode($aMailbox['FORWARD_SESSION']['SESSION_NUMBER']) + . '&smaction=forward_as_attachment' + . '&fwduid=' . implode('_', $aMailbox['FORWARD_SESSION']['UIDS']); $onload = "comp_in_new('$comp_uri', $compose_width, $compose_height);"; } else { $mailbox_cache[$account.'_'.$aMailbox['NAME']] = $aMailbox; @@ -275,8 +277,10 @@ if (isset($aMailbox['FORWARD_SESSION'])) { sqsession_register($aMailbox,'aLastSelectedMailbox'); session_write_close(); // we have to redirect to the compose page - $location = SM_PATH . 'src/compose.php?mailbox='. urlencode($mailbox). - '&session='.$aMailbox['FORWARD_SESSION']; + $location = $base_uri . 'src/compose.php?mailbox='. urlencode($mailbox) + . '&session='.$aMailbox['FORWARD_SESSION']['SESSION_NUMBER'] + . '&smaction=forward_as_attachment' + . '&fwduid=' . implode('_', $aMailbox['FORWARD_SESSION']['UIDS']); header("Location: $location"); exit; } diff --git a/src/search.php b/src/search.php index 6390cf5b..0aeceddc 100644 --- a/src/search.php +++ b/src/search.php @@ -1374,16 +1374,20 @@ if (isset($aMailbox['FORWARD_SESSION'])) { $compose_height = '550'; } // do not use &, it will break the query string and $session will not be detected!!! - $comp_uri = SM_PATH . 'src/compose.php?mailbox='. urlencode($mailbox). - '&session='.$aMailbox['FORWARD_SESSION']; + $comp_uri = $base_uri . 'src/compose.php?mailbox='. urlencode($mailbox) + . '&session='.$aMailbox['FORWARD_SESSION']['SESSION_NUMBER'] + . '&smaction=forward_as_attachment' + . '&fwduid=' . implode('_', $aMailbox['FORWARD_SESSION']['UIDS']); displayPageHeader($color, $mailbox, "comp_in_new('$comp_uri', $compose_width, $compose_height);", false); } else { // save mailboxstate sqsession_register($aMailbox,'aLastSelectedMailbox'); session_write_close(); // we have to redirect to the compose page - $location = SM_PATH . 'src/compose.php?mailbox='. urlencode($mailbox). - '&session='.$aMailbox['FORWARD_SESSION']; + $location = $base_uri . 'src/compose.php?mailbox='. urlencode($mailbox) + . '&session='.$aMailbox['FORWARD_SESSION']['SESSION_NUMBER'] + . '&smaction=forward_as_attachment' + . '&fwduid=' . implode('_', $aMailbox['FORWARD_SESSION']['UIDS']); header("Location: $location"); exit; } -- 2.25.1