summaryrefslogtreecommitdiff
path: root/program/steps
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2008-02-06 07:41:11 +0000
committerthomascube <thomas@roundcube.net>2008-02-06 07:41:11 +0000
commit6726f0c369e87c3cc34b2c2815935c87bc196c3d (patch)
tree2bc4bdbbca66b02e519a79cd1b3fffc82c6206b5 /program/steps
parentc08b7347c1a04e1930fbb50e2779cc5e0928ff0d (diff)
Remember decision to display images for a certain message during session (#1484754)
Diffstat (limited to 'program/steps')
-rw-r--r--program/steps/mail/func.inc8
-rw-r--r--program/steps/mail/show.inc10
2 files changed, 14 insertions, 4 deletions
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 = '<div '. $attrib_str . ">\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'])