]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - application/Thumbnailer.php
Take code review into account
[github/shaarli/Shaarli.git] / application / Thumbnailer.php
index b669adaedef74afcbca8d80219901b91f8a12b7c..d2284e795eb3b43261cfc4577832e610a390b036 100644 (file)
@@ -1,6 +1,11 @@
 <?php
 
+namespace Shaarli;
+
+use Shaarli\Config\ConfigManager;
+use WebThumbnailer\Exception\WebThumbnailerException;
 use WebThumbnailer\WebThumbnailer;
+use WebThumbnailer\Application\ConfigManager as WTConfigManager;
 
 /**
  * Class Thumbnailer
@@ -27,8 +32,16 @@ class Thumbnailer
     public function __construct($conf)
     {
         $this->conf = $conf;
+
+        if (! $this->checkRequirements()) {
+            $this->conf->set('thumbnails.enabled', false);
+            $this->conf->write(true);
+            // TODO: create a proper error handling system able to catch exceptions...
+            die(t('php-gd extension must be loaded to use thumbnails. Thumbnails are now disabled. Please reload the page.'));
+        }
+
         $this->wt = new WebThumbnailer();
-        \WebThumbnailer\Application\ConfigManager::addFile('inc/web-thumbnailer.json');
+        WTConfigManager::addFile('inc/web-thumbnailer.json');
         $this->wt->maxWidth($this->conf->get('thumbnails.width'))
                  ->maxHeight($this->conf->get('thumbnails.height'))
                  ->crop(true)
@@ -44,6 +57,21 @@ class Thumbnailer
      */
     public function get($url)
     {
-        return $this->wt->thumbnail($url);
+        try {
+            return $this->wt->thumbnail($url);
+        } catch (WebThumbnailerException $e) {
+            // Exceptions are only thrown in debug mode.
+            error_log(get_class($e) .': '. $e->getMessage());
+            return false;
+        }
+    }
+
+    /**
+     * Make sure that requirements are match to use thumbnails:
+     *   - php-gd is loaded
+     */
+    protected function checkRequirements()
+    {
+        return extension_loaded('gd');
     }
 }