From 03149131f754dd122f8707fbfc9e7ff47e9d6524 Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Sat, 10 Nov 2012 15:08:14 -0500
Subject: [PATCH] New feature: display attached images as thumbnails below message body

---
 program/steps/mail/get.inc |   36 ++++++++++++++++++++++++++++++++++++
 1 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/program/steps/mail/get.inc b/program/steps/mail/get.inc
index bcd57de..2397358 100644
--- a/program/steps/mail/get.inc
+++ b/program/steps/mail/get.inc
@@ -60,6 +60,42 @@
   exit;
 }
 
+// render thumbnail of an image attachment
+else if ($_GET['_thumb']) {
+  $pid = get_input_value('_part', RCUBE_INPUT_GET);
+  if ($part = $MESSAGE->mime_parts[$pid]) {
+    $thumbnail_size = $RCMAIL->config->get('image_thumbnail_size', 240);
+    $temp_dir = $RCMAIL->config->get('temp_dir');
+    list(,$ext) = explode('/', $part->mimetype);
+    $cache_basename = $temp_dir . '/' . md5($MESSAGE->headers->messageID . $part->mime_id . ':' . $RCMAIL->user->ID . ':' . $thumbnail_size);
+    $cache_file = $cache_basename . '.' . $ext;
+    $mimetype = $part->mimetype;
+
+    // render thumbnail image if not done yet
+    if (!is_file($cache_file)) {
+      $fp = fopen(($orig_name = $cache_basename . '.orig.' . $ext), 'w');
+      $MESSAGE->get_part_content($part->mime_id, $fp);
+      fclose($fp);
+
+      $image = new rcube_image($orig_name);
+      if ($imgtype = $image->resize($RCMAIL->config->get('image_thumbnail_size', 240), $cache_file, true)) {
+        $mimetype = 'image/' . $imgtype;
+        unlink($orig_name);
+      }
+      else {
+        rename($orig_name, $cache_file);
+      }
+    }
+
+    if (is_file($cache_file)) {
+      header('Content-Type: ' . $mimetype);
+      readfile($cache_file);
+    }
+  }
+
+  exit;
+}
+
 else if (strlen($pid = get_input_value('_part', RCUBE_INPUT_GET))) {
 
   if ($part = $MESSAGE->mime_parts[$pid]) {

--
Gitblit v1.9.1