From 50fc55fe69fc348d3679981cc088c57b35c47571 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva <pshns@ukr.net>
Date: Sat, 6 Aug 2011 17:00:19 +0300
Subject: [PATCH] issue #48 alternative diff views for images with different
 size

---
 inc/media.php | 38 ++++++++++++++++++++------------------
 1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/inc/media.php b/inc/media.php
index bc80f64d6..ce3f797e6 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -1094,9 +1094,16 @@ function _media_file_diff($data) {
  */
 function media_file_diff($image, $l_rev, $r_rev, $ns, $auth, $fromajax){
     global $lang, $config_cascade;
-    $is_img = preg_match("/\.(jpe?g|gif|png)$/", $image);
 
+    $l_meta = new JpegMeta(mediaFN($image, $l_rev));
+    $r_meta = new JpegMeta(mediaFN($image, $r_rev));
+
+    $is_img = preg_match("/\.(jpe?g|gif|png)$/", $image);
     if ($is_img) {
+        $l_size = media_image_preview_size($image, $l_rev, $l_meta);
+        $r_size = media_image_preview_size($image, $r_rev, $r_meta);
+        $is_img = ($l_size && $r_size && ($l_size[0] >= 30 || $r_size[0] >= 30));
+
         $difftype = $_REQUEST['difftype'];
 
         if (!$fromajax) {
@@ -1110,19 +1117,14 @@ function media_file_diff($image, $l_rev, $r_rev, $ns, $auth, $fromajax){
             echo '<div id="mediamanager__diff" >';
         }
 
-        $l_meta = new JpegMeta(mediaFN($image, $l_rev));
-        $r_meta = new JpegMeta(mediaFN($image, $r_rev));
-
         if ($difftype == 'opacity' || $difftype == 'portions') {
-            media_image_diff($image, $l_rev, $r_rev, $l_meta, $difftype);
+            media_image_diff($image, $l_rev, $r_rev, $l_size, $r_size, $difftype);
             if (!$fromajax) echo '</div>';
             return '';
         }
-
-        echo '<div class="mediamanager-preview">';
-
     }
 
+    echo '<div class="mediamanager-preview">';
     echo '<ul id="mediamanager__diff_table">';
 
     echo '<li>';
@@ -1141,9 +1143,6 @@ function media_file_diff($image, $l_rev, $r_rev, $ns, $auth, $fromajax){
     media_preview_buttons($image, $auth, $r_rev);
     echo '</li>';
 
-    $l_meta = new JpegMeta(mediaFN($image, $l_rev));
-    $r_meta = new JpegMeta(mediaFN($image, $r_rev));
-
     $l_tags = media_file_tags($l_meta);
     $r_tags = media_file_tags($r_meta);
     foreach ($l_tags as $key => $l_tag) {
@@ -1175,9 +1174,9 @@ function media_file_diff($image, $l_rev, $r_rev, $ns, $auth, $fromajax){
     }
 
     echo '</ul>';
+    echo '</div>';
 
     if ($is_img && !$fromajax) echo '</div>';
-    if ($is_img) echo '</div>';
 }
 
 /**
@@ -1188,13 +1187,16 @@ function media_file_diff($image, $l_rev, $r_rev, $ns, $auth, $fromajax){
  * @param string $image
  * @param int $l_rev
  * @param int $r_rev
- * @param JpegMeta $meta
+ * @param array $l_size
+ * @param array $r_size
+ * @param string $type
  */
-function media_image_diff($image, $l_rev, $r_rev, $meta, $type) {
-    $l_size = media_image_preview_size($image, $l_rev, $meta);
-    $r_size = media_image_preview_size($image, $r_rev, $meta);
-
-    if (!$l_size || !$r_size || $l_size != $r_size || $l_size[0] < 30) return '';
+function media_image_diff($image, $l_rev, $r_rev, $l_size, $r_size, $type) {
+    if ($l_size != $r_size) {
+        if ($r_size[0] > $l_size[0]) {
+            $l_size = $r_size;
+        }
+    }
 
     echo '<div class="mediamanager-preview">';
 
-- 
GitLab