]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
UseFileAsThumbnailException (helps support GIFs)
authorMikael Nordfeldth <mmn@hethane.se>
Tue, 17 Jun 2014 09:54:05 +0000 (11:54 +0200)
committerMikael Nordfeldth <mmn@hethane.se>
Tue, 17 Jun 2014 10:15:11 +0000 (12:15 +0200)
actions/attachment_thumbnail.php
lib/activityobject.php
lib/attachmentlistitem.php
lib/imagefile.php
lib/usefileasthumbnailexception.php [new file with mode: 0644]

index b564dee50e890c31d2e3d9bebadd9bb2c352456f..b71ea6c801ce4c488c705d5cc630afb36e549653 100644 (file)
@@ -58,7 +58,12 @@ class Attachment_thumbnailAction extends AttachmentAction
     function showPage()
     {
         // Returns a File_thumbnail object or throws exception if not available
-        $thumbnail = $this->attachment->getThumbnail($this->thumb_w, $this->thumb_h, $this->thumb_c);
+        try {
+            $thumbnail = $this->attachment->getThumbnail($this->thumb_w, $this->thumb_h, $this->thumb_c);
+        } catch (UseFileAsThumbnailException $e) {
+            // Since we're only using the ->getUrl() function, we can use the File object
+            $thumbnail = $e->file;
+        }
         common_redirect($thumbnail->getUrl());
     }
 }
index fc47485c1892199fd84a92fe54383c7532e41189..505a16e7552d8835b3ea82b33f5c3e8361baf541 100644 (file)
@@ -578,6 +578,8 @@ class ActivityObject
             try {
                 $thumbnail = $file->getThumbnail();
                 $object->thumbnail = $thumbnail;
+            } catch (UseFileAsThumbnailException $e) {
+                $object->thumbnail = null;
             } catch (UnsupportedMediaException $e) {
                 $object->thumbnail = null;
             }
index 1af89ef7b7503dec062661bc1fb88ccb479b9270..320218b1a307b9cbd5c14af3e6f04cf5ec16ef34 100644 (file)
@@ -115,6 +115,8 @@ class AttachmentListItem extends Widget
                     try {
                         $thumb = $this->attachment->getThumbnail();
                         $this->out->element('img', array('src' => $thumb->getUrl(), 'alt' => ''));
+                    } catch (UseFileAsThumbnailException $e) {
+                        $this->out->element('img', array('src' => $e->file->getUrl(), 'alt' => $e->file->title));
                     } catch (UnsupportedMediaException $e) {
                         // FIXME: Show a good representation of unsupported/unshowable images
                     }
index 535afaacb678ff58d4d932bf05bf88b774a97453..c051fc3ac9bce5118c75242d9f4b1b228833487d 100644 (file)
@@ -264,6 +264,10 @@ class ImageFile
             $this->resizeToFile($outpath, $box);
         }
 
+        if (!file_exists($outpath)) {
+            throw new UseFileAsThumbnailException($this->id);
+        }
+
         return $outpath;
     }
 
diff --git a/lib/usefileasthumbnailexception.php b/lib/usefileasthumbnailexception.php
new file mode 100644 (file)
index 0000000..cafbe69
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+/**
+ * GNU social - a federating social network
+ *
+ * class for an exception when a thumbnail has not been generated from a File
+ * object and the intention is to use the original File instead.
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Exception
+ * @package   GNUsocial
+ * @author    Mikael Nordfeldth <mmn@hethane.se>
+ * @copyright 2014 Free Software Foundation, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      https://www.gnu.org/software/social/
+ */
+
+if (!defined('GNUSOCIAL')) { exit(1); }
+
+class UseFileAsThumbnailException extends UnsupportedMediaException
+{
+    public $file = null;
+
+    public function __construct($file_id)
+    {
+        $this->file = File::getKV('id', $file_id);
+        if (!$this->file instanceof File) {
+            throw new ServerException('No File ID supplied to exception');
+        }
+
+        parent::__construct('Thumbnail not generated', $this->file->getPath());
+    }
+}