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