From 84dfbf541f66a552e9f2d21dbc717df493f0a3b2 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Mon, 09 Jul 2012 07:36:32 -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 e3b3949..f155a0c 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 8f1432f..745019e 100644
--- a/program/include/rcube_message.php
+++ b/program/include/rcube_message.php
@@ -278,6 +278,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 8152f5d..8a47157 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -632,7 +632,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