From d125f864ea31cf0b6ecce462f711467fc6441747 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Fri, 25 Mar 2016 08:41:11 -0400
Subject: [PATCH] Message/rfc822 previewer compatibility with Enigma

---
 program/steps/mail/get.inc |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/program/steps/mail/get.inc b/program/steps/mail/get.inc
index 019c063..0191502 100644
--- a/program/steps/mail/get.inc
+++ b/program/steps/mail/get.inc
@@ -63,9 +63,14 @@
     ));
 
     $mimetype = $part ? rcmail_fix_mimetype($part->mimetype) : '';
-    if ($part_id && $mimetype == 'message/rfc822') {
+
+    // message/rfc822 preview (Note: handle also multipart/ parts, they can
+    // come from Enigma, which replaces message/rfc822 with real mimetype)
+    if ($part_id && ($mimetype == 'message/rfc822' || strpos($mimetype, 'multipart/') === 0)) {
         $uid = preg_replace('/\.[0-9.]+/', '', $uid);
         $uid .= '.' . $part_id;
+
+        $OUTPUT->set_env('is_message', true);
     }
 
     $OUTPUT->set_env('mailbox', $RCMAIL->storage->get_folder());
@@ -458,9 +463,8 @@
 {
     global $RCMAIL;
 
-    $mimetype = $RCMAIL->output->get_env('mimetype');
 
-    if ($mimetype == 'message/rfc822') {
+    if ($RCMAIL->output->get_env('is_message')) {
         $attrib['src'] = $RCMAIL->url(array(
                 'task'   => 'mail',
                 'action' => 'preview',
@@ -470,6 +474,7 @@
         ));
     }
     else {
+        $mimetype      = $RCMAIL->output->get_env('mimetype');
         $frame_replace = strpos($mimetype, 'text/') === 0 ? '_embed=' : '_preload=';
         $attrib['src'] = './?' . str_replace('_frame=', $frame_replace, $_SERVER['QUERY_STRING']);
     }

--
Gitblit v1.9.1