From 330ef6ca44df4111d6f6b33ba0684e865ba8c30e Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Fri, 31 Jul 2009 04:55:56 -0400
Subject: [PATCH] Create plugin hook for encrypted message parts + add size property to text part in order to display it

---
 program/include/rcube_message.php |   21 ++++++++++++++-------
 1 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/program/include/rcube_message.php b/program/include/rcube_message.php
index 9fe9858..0c46945 100644
--- a/program/include/rcube_message.php
+++ b/program/include/rcube_message.php
@@ -323,8 +323,16 @@
       $p->ctype_primary = 'text';
       $p->ctype_secondary = 'plain';
       $p->body = rcube_label('encryptedmessage');
+      $p->size = strlen($p->body);
       
-      $this->parts[] = $p;
+      // maybe some plugins are able to decode this encrypted message part
+      $data = $this->app->plugins->exec_hook('message_part_encrypted', array('object' => $this, 'struct' => $structure, 'part' => $p));
+      if (is_array($data['parts'])) {
+        $this->parts = array_merge($this->parts, $data['parts']);
+      }
+      else if ($data['part']) {
+        $this->parts[] = $p;
+      }
     }
     // message contains multiple parts
     else if (is_array($structure->parts) && !empty($structure->parts)) {
@@ -382,16 +390,15 @@
           if ($message_ctype_secondary == 'appledouble' && $secondary_type == 'applefile')
             continue;
 
-          // part belongs to a related message
-          if ($message_ctype_secondary == 'related') {
+          // part belongs to a related message and is linked
+          if ($message_ctype_secondary == 'related'
+	      && ($mail_part->headers['content-id'] || $mail_part->headers['content-location'])) {
             if ($mail_part->headers['content-id'])
               $mail_part->content_id = preg_replace(array('/^</', '/>$/'), '', $mail_part->headers['content-id']);
             if ($mail_part->headers['content-location'])
               $mail_part->content_location = $mail_part->headers['content-base'] . $mail_part->headers['content-location'];
-            
-            if ($mail_part->content_id || $mail_part->content_location) {
-              $this->inline_parts[] = $mail_part;
-            }
+    
+            $this->inline_parts[] = $mail_part;
           }
           // is a regular attachment
           else {

--
Gitblit v1.9.1