<?php
+namespace Shaarli;
+
+use Shaarli\Config\ConfigManager;
+use WebThumbnailer\Exception\WebThumbnailerException;
use WebThumbnailer\WebThumbnailer;
+use WebThumbnailer\Application\ConfigManager as WTConfigManager;
/**
* 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)
*/
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');
}
}