From 731d190fecb1976d845f6bd18768ee528b007232 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Wed, 28 May 2014 09:52:30 -0400
Subject: [PATCH] Merge branch 'tinymce4'

---
 program/steps/mail/attachments.inc |   43 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 42 insertions(+), 1 deletions(-)

diff --git a/program/steps/mail/attachments.inc b/program/steps/mail/attachments.inc
index 85bc36c..c8b7f95 100644
--- a/program/steps/mail/attachments.inc
+++ b/program/steps/mail/attachments.inc
@@ -60,7 +60,7 @@
     exit;
 }
 
-if ($RCMAIL->action=='display-attachment') {
+if ($RCMAIL->action == 'display-attachment') {
     $id = 'undefined';
 
     if (preg_match('/^rcmfile(\w+)$/', $_GET['_file'], $regs)) {
@@ -76,6 +76,47 @@
             $attachment['size'] = $attachment['data'] ? strlen($attachment['data']) : @filesize($attachment['path']);
         }
 
+        // generate image thumbnail for file browser in HTML editor
+        if (!empty($_GET['_thumbnail'])) {
+            $temp_dir       = $RCMAIL->config->get('temp_dir');
+            $thumbnail_size = 80;
+            list(,$ext)     = explode('/', $attachment['mimetype']);
+            $mimetype       = $attachment['mimetype'];
+            $file_ident     = $attachment['id'] . ':' . $attachment['mimetype'] . ':' . $attachment['size'];
+            $cache_basename = $temp_dir . '/' . md5($file_ident . ':' . $RCMAIL->user->ID . ':' . $thumbnail_size);
+            $cache_file     = $cache_basename . '.' . $ext;
+
+            // render thumbnail image if not done yet
+            if (!is_file($cache_file)) {
+                if (!$attachment['path']) {
+                    $orig_name = $filename = $cache_basename . '.orig.' . $ext;
+                    file_put_contents($orig_name, $attachment['data']);
+                }
+                else {
+                    $filename = $attachment['path'];
+                }
+
+                $image = new rcube_image($filename);
+                if ($imgtype = $image->resize($thumbnail_size, $cache_file, true)) {
+                    $mimetype = 'image/' . $imgtype;
+
+                    if ($orig_name) {
+                        unlink($orig_name);
+                    }
+                }
+            }
+
+            if (is_file($cache_file)) {
+                // cache for 1h
+                $RCMAIL->output->future_expire_header(3600);
+                header('Content-Type: ' . $mimetype);
+                header('Content-Length: ' . filesize($cache_file));
+
+                readfile($cache_file);
+                exit;
+            }
+        }
+
         header('Content-Type: ' . $attachment['mimetype']);
         header('Content-Length: ' . $attachment['size']);
 

--
Gitblit v1.9.1