From 3efc74654a30bd6d0141e1a15a123274408e9be8 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Mon, 09 Jul 2012 06:19:38 -0400 Subject: [PATCH] - Don't add attachments content into reply/forward/draft message body (#1488557) --- CHANGELOG | 1 + program/steps/mail/compose.inc | 3 ++- program/include/rcube_message.php | 26 ++++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index df097a7..637192b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ CHANGELOG Roundcube Webmail =========================== +- Don't add attachments content into reply/forward/draft message body (#1488557) - Fix 'no connection' errors on page unloads (#1488547) - Plugin API: Add 'unauthenticated' hook (#1488138) - Show explicit error message when provided hostname is invalid (#1488550) diff --git a/program/include/rcube_message.php b/program/include/rcube_message.php index a140b86..9d36acf 100644 --- a/program/include/rcube_message.php +++ b/program/include/rcube_message.php @@ -277,6 +277,32 @@ /** + * Checks if part of the message is an attachment (or part of it) + * + * @param rcube_message_part $part Message part + * + * @return bool True if the part is an attachment part + */ + public function is_attachment($part) + { + foreach ($this->attachments as $att_part) { + if ($att_part->mime_id == $part->mime_id) { + return true; + } + + // check if the part is a subpart of another attachment part (message/rfc822) + if ($att_part->mimetype == 'message/rfc822') { + if (in_array($part, (array)$att_part->parts)) { + return true; + } + } + } + + return false; + } + + + /** * Read the message structure returend by the IMAP server * and build flat lists of content parts and attachments * diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc index 70f657d..ccb7226 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -629,7 +629,8 @@ if (!empty($MESSAGE->parts)) { foreach ($MESSAGE->parts as $part) { - if ($part->type != 'content' || !$part->size) { + // skip no-content and attachment parts (#1488557) + if ($part->type != 'content' || !$part->size || $MESSAGE->is_attachment($part)) { continue; } -- Gitblit v1.9.1