From 6726f0c369e87c3cc34b2c2815935c87bc196c3d Mon Sep 17 00:00:00 2001 From: thomascube Date: Wed, 6 Feb 2008 07:41:11 +0000 Subject: Remember decision to display images for a certain message during session (#1484754) --- program/steps/mail/func.inc | 8 ++++++-- program/steps/mail/show.inc | 10 ++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'program/steps') diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 00de08c09..dc71b8917 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -638,7 +638,7 @@ function rcmail_parse_message(&$structure, $arg=array(), $recursive=FALSE) $structure->type = 'content'; $a_return_parts[] = &$structure; } - + // message contains alternative parts else if ($message_ctype_primary=='multipart' && $message_ctype_secondary=='alternative' && is_array($structure->parts)) { @@ -744,6 +744,10 @@ function rcmail_parse_message(&$structure, $arg=array(), $recursive=FALSE) $a_return_parts = array_merge($a_return_parts, $parts); $a_attachments = array_merge($a_attachments, $attachmnts); } + + // ignore "virtual" protocol parts + else if ($primary_type=='protocol') + continue; // part is file/attachment else if ($mail_part->disposition=='attachment' || $mail_part->disposition=='inline' || $mail_part->headers['content-id'] || @@ -861,7 +865,7 @@ function rcmail_message_body($attrib) if (!$attrib['id']) $attrib['id'] = 'rcmailMsgBody'; - $safe_mode = intval($_GET['_safe']); + $safe_mode = $MESSAGE['is_safe'] || intval($_GET['_safe']); $attrib_str = create_attrib_string($attrib, array('style', 'class', 'id')); $out = '
\n"; diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc index 2f0fb015d..9e9ba8df4 100644 --- a/program/steps/mail/show.inc +++ b/program/steps/mail/show.inc @@ -42,6 +42,12 @@ if ($_GET['_uid']) return; } } + + // check if safe flag is set + if ($MESSAGE['is_safe'] = intval($_GET['_safe'])) + $_SESSION['safe_messages'][$MESSAGE['UID']] = true; + else if ($_SESSION['safe_messages'][$MESSAGE['UID']]) + $MESSAGE['is_safe'] = 1; // calculate Etag for this request $etag = md5($MESSAGE['UID'].$IMAP->get_mailbox_name().session_id().intval($MESSAGE['headers']->mdn_sent).intval($PRINT_MODE)); @@ -58,7 +64,7 @@ if ($_GET['_uid']) if ($MESSAGE['structure'] = $IMAP->get_structure($MESSAGE['UID'])) list($MESSAGE['parts'], $MESSAGE['attachments']) = rcmail_parse_message( $MESSAGE['structure'], - array('safe' => intval($_GET['_safe']), + array('safe' => $MESSAGE['is_safe'], 'prefer_html' => $CONFIG['prefer_html'], 'get_url' => $GET_URL.'&_part=%s') ); @@ -72,7 +78,7 @@ if ($_GET['_uid']) // give message uid to the client $OUTPUT->set_env('uid', $MESSAGE['UID']); - $OUTPUT->set_env('safemode', intval($_GET['_safe'])); + $OUTPUT->set_env('safemode', $MESSAGE['is_safe']); // check for unset disposition notification if ($MESSAGE['headers']->mdn_to && !$MESSAGE['headers']->mdn_sent && $IMAP->get_mailbox_name() != $CONFIG['drafts_mbox']) -- cgit v1.2.3