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());
}
}
try {
$thumbnail = $file->getThumbnail();
$object->thumbnail = $thumbnail;
+ } catch (UseFileAsThumbnailException $e) {
+ $object->thumbnail = null;
} catch (UnsupportedMediaException $e) {
$object->thumbnail = null;
}
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
}
--- /dev/null
+<?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());
+ }
+}