From 1cd3762b0d7707f4dd665c00ff4d83db6172b4a7 Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Mon, 25 May 2015 12:51:33 -0400
Subject: [PATCH] Start integrating the Mailvelope browser extension via its API.

---
 program/steps/mail/func.inc |   23 ++++++++++++++++++++++-
 1 files changed, 22 insertions(+), 1 deletions(-)

diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index 684cdf9..a90541d 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -1185,7 +1185,23 @@
                 // unsupported (e.g. encrypted)
                 if ($part->realtype) {
                     if ($part->realtype == 'multipart/encrypted' || $part->realtype == 'application/pkcs7-mime') {
-                        $out .= html::span('part-notice', $RCMAIL->gettext('encryptedmessage'));
+                        if (!empty($_SESSION['browser_caps']['pgpmime']) && $part->realtype == 'multipart/encrypted') {
+                            // find the encrypted message payload part
+                            foreach ($MESSAGE->mime_parts as $mime_id => $mpart) {
+                                if ($mpart->mimetype == 'application/octet-stream' || !empty($mpart->filename)) {
+                                    $out .= html::span('part-notice', $RCMAIL->gettext('externalmessagedecryption'));
+                                    $OUTPUT->set_env('pgp_mime_part', $mime_id);
+                                    $OUTPUT->set_env('pgp_mime_container', '#' . $attrib['id']);
+                                    $OUTPUT->add_label('loadingdata');
+                                    $MESSAGE->encrypted_part = $mime_id;
+                                    break;
+                                }
+                            }
+                        }
+
+                        if (!$MESSAGE->encrypted_part) {
+                            $out .= html::span('part-notice', $RCMAIL->gettext('encryptedmessage'));
+                        }
                     }
                     continue;
                 }
@@ -1219,6 +1235,11 @@
                     rcmail_message_error($MESSAGE->uid);
                 }
 
+                // check if the message body is PGP encrypted
+                if (strpos($body, 'BEGIN PGP MESSAGE') !== false) {
+                    $OUTPUT->set_env('is_pgp_content', '#' . $attrib['id']);
+                }
+
                 $plugin = $RCMAIL->plugins->exec_hook('message_body_prefix',
                     array('part' => $part, 'prefix' => ''));
 

--
Gitblit v1.9.1