X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompose.php;h=8bc437c8e81e1a561774e9d49f76c95ef561c3cd;hb=bc29bf702b60906f9dc57ad70ea388fd42077542;hp=7b3d4953dd97cbb8c555b707afa16152ba1fd5d6;hpb=762853f42b4c1151804da245e042fec5c505f27e;p=squirrelmail.git diff --git a/src/compose.php b/src/compose.php index 7b3d4953..8bc437c8 100644 --- a/src/compose.php +++ b/src/compose.php @@ -681,7 +681,7 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se global $editor_size, $default_use_priority, $body, $idents, $use_signature, $data_dir, $username, $key, $imapServerAddress, $imapPort, $compose_messages, - $composeMessage, $body_quotem, $request_mdn, $request_dr, + $composeMessage, $body_quote, $request_mdn, $request_dr, $default_use_mdn, $mdn_user_support; global $languages, $squirrelmail_language, $default_charset; @@ -1636,29 +1636,52 @@ function deliverMessage($composeMessage, $draft=false) { global $passed_id, $mailbox, $action, $what, $iAccount,$startMessage; $composeMessage->purgeAttachments(); - if ($action == 'reply' || $action == 'reply_all') { + 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()); - // check if we are allowed to set the \\Answered flag - if (in_array('\\answered',$aMailbox['PERMANENTFLAGS'], true)) { - $aUpdatedMsgs = sqimap_toggle_flag($imap_stream, array($passed_id), '\\Answered', true, false); - if (isset($aUpdatedMsgs[$passed_id]['FLAGS'])) { - /** - * Only update the cached headers if the header is - * cached. - */ - if (isset($aMailbox['MSG_HEADERS'][$passed_id])) { - $aMailbox['MSG_HEADERS'][$passed_id]['FLAGS'] = $aMsg['FLAGS']; + switch($action) { + case 'reply': + case 'reply_all': + // check if we are allowed to set the \\Answered flag + if (in_array('\\answered',$aMailbox['PERMANENTFLAGS'], true)) { + $aUpdatedMsgs = sqimap_toggle_flag($imap_stream, array($passed_id), '\\Answered', true, false); + if (isset($aUpdatedMsgs[$passed_id]['FLAGS'])) { + /** + * Only update the cached headers if the header is + * cached. + */ + if (isset($aMailbox['MSG_HEADERS'][$passed_id])) { + $aMailbox['MSG_HEADERS'][$passed_id]['FLAGS'] = $aMsg['FLAGS']; + } + } + } + break; + 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) || + 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']; + } } } + break; } + /** * Write mailbox with updated seen flag information back to cache. */ - $mailbox_cache[$iAccount.'_'.$aMailbox['NAME']] = $aMailbox; - sqsession_register($mailbox_cache,'mailbox_cache'); + if(isset($aUpdatedMsgs[$passed_id])) { + $mailbox_cache[$iAccount.'_'.$aMailbox['NAME']] = $aMailbox; + sqsession_register($mailbox_cache,'mailbox_cache'); + } + + sqimap_logout($imap_stream); } - sqimap_logout($imap_stream); } return $success; }