diff options
author | Christian Weiske <cweiske@cweiske.de> | 2014-04-23 23:12:55 +0200 |
---|---|---|
committer | Christian Weiske <cweiske@cweiske.de> | 2014-04-23 23:12:55 +0200 |
commit | 6b3f1d4bb5c909413f31d7df5bab0e8a4084e29e (patch) | |
tree | fe1ea7bbefe3721bd3bb536da4c9c20bffca35df | |
parent | af2a061ecdfb4414ee0e8b500eccdf39a8d8cec5 (diff) | |
download | semanticscuttle-6b3f1d4bb5c909413f31d7df5bab0e8a4084e29e.tar.gz semanticscuttle-6b3f1d4bb5c909413f31d7df5bab0e8a4084e29e.tar.bz2 |
Add support for phancap website thumbnailer.
Drop support for artviper, since their service is gone.
-rw-r--r-- | data/config.default.php | 34 | ||||
-rw-r--r-- | data/templates/default/bookmarks-thumbnail.inc.tpl.php | 18 | ||||
-rw-r--r-- | data/templates/default/bottom.inc.php | 5 | ||||
-rw-r--r-- | src/SemanticScuttle/Service.php | 2 | ||||
-rw-r--r-- | src/SemanticScuttle/Service/Thumbnails.php | 59 | ||||
-rw-r--r-- | src/SemanticScuttle/Thumbnailer/Null.php | 52 | ||||
-rw-r--r-- | src/SemanticScuttle/Thumbnailer/Phancap.php | 92 | ||||
-rw-r--r-- | www/themes/default/scuttle.css | 1 |
8 files changed, 226 insertions, 37 deletions
diff --git a/data/config.default.php b/data/config.default.php index 2f32df7..5e560a7 100644 --- a/data/config.default.php +++ b/data/config.default.php @@ -542,35 +542,27 @@ $defaults['privacy'] = 0; */ /** - * Enable bookmark website thumbnails. + * Which thumbnail service type to use. * - * According to artviper.net license, buy a license if you - * gain profit with your pages. + * Currently supported: + * - null (no screenshots) + * - 'phancap', see http://cweiske.de/phancap.htm * - * @var boolean - * @link http://www.websitethumbnail.de/ + * @var string */ -$enableWebsiteThumbnails = false; +$thumbnailsType = null; /** - * User ID from websitethumbnail.de - * - * You need to register on - * http://www.artviper.net/registerapi.php - * in order to use thumbnails on your domain + * Configuration for thumbnail service. * - * @var string - * @link http://www.artviper.net/registerapi.php - */ -$thumbnailsUserId = null; - -/** - * API key. - * Sent to you by artviper.net after registration. + * Phancap requires an array with the following keys: + * - url: URL to phancap's get.php file + * - token: user name (if access protected) + * - secret: password for the user (if access protected) * - * @var string + * @var array */ -$thumbnailsKey = null; +$thumbnailsConfig = array(); diff --git a/data/templates/default/bookmarks-thumbnail.inc.tpl.php b/data/templates/default/bookmarks-thumbnail.inc.tpl.php index 77cc67f..b8770dc 100644 --- a/data/templates/default/bookmarks-thumbnail.inc.tpl.php +++ b/data/templates/default/bookmarks-thumbnail.inc.tpl.php @@ -5,14 +5,14 @@ * * Expects a $row variable with bookmark data. */ -if (!$GLOBALS['enableWebsiteThumbnails']) { - return; -} - -$thumbnailHash = md5( - $address . $GLOBALS['thumbnailsUserId'] . $GLOBALS['thumbnailsKey'] -); -//echo '<a href="'. $address .'"'. $rel .' ><img class="thumbnail" src="http://www.artviper.net/screenshots/screener.php?url='.$address.'&w=120&sdx=1280&userID='.$GLOBALS['thumbnailsUserId'].'&hash='.$thumbnailHash.'" />'; -echo '<img class="thumbnail" onclick="window.location.href=\''.htmlspecialchars($address).'\'" src="http://www.artviper.net/screenshots/screener.php?url='.htmlspecialchars($address).'&w=120&sdx=1280&userID='.$GLOBALS['thumbnailsUserId'].'&hash='.$thumbnailHash.'" />'; +$thumbnailer = SemanticScuttle_Service_Factory::get('Thumbnails')->getThumbnailer(); +$imgUrl = $thumbnailer->getThumbnailUrl($address, 120, 90); +if ($imgUrl !== false) { + echo '<a href="' . htmlspecialchars($address) . '">' + . '<img class="thumbnail" width="120" height="90" src="' + . htmlspecialchars($imgUrl). + '" />' + . '</a>'; +} ?>
\ No newline at end of file diff --git a/data/templates/default/bottom.inc.php b/data/templates/default/bottom.inc.php index e48f593..9e4014c 100644 --- a/data/templates/default/bottom.inc.php +++ b/data/templates/default/bottom.inc.php @@ -6,11 +6,6 @@ echo '<a href="'.createURL('about').'">'.T_('About').'</a>'; echo ' - '; echo T_("Propulsed by "); echo " <a href=\"https://sourceforge.net/projects/semanticscuttle/\">SemanticScuttle</a>"; - -if($GLOBALS['enableWebsiteThumbnails']) { - // Licence to the thumbnails provider (OBLIGATORY IF YOU USE ARTVIPER SERVICE) - echo ' (Thumbnails by <a href="http://www.artviper.net">webdesign</a>)'; -} ?> </div> diff --git a/src/SemanticScuttle/Service.php b/src/SemanticScuttle/Service.php index 1afb353..cd79f2c 100644 --- a/src/SemanticScuttle/Service.php +++ b/src/SemanticScuttle/Service.php @@ -51,7 +51,7 @@ class SemanticScuttle_Service { static $instance; if (!isset($instance)) { - $instance = new self($db); + $instance = new static($db); } return $instance; } diff --git a/src/SemanticScuttle/Service/Thumbnails.php b/src/SemanticScuttle/Service/Thumbnails.php new file mode 100644 index 0000000..6151254 --- /dev/null +++ b/src/SemanticScuttle/Service/Thumbnails.php @@ -0,0 +1,59 @@ +<?php +/** + * SemanticScuttle - your social bookmark manager. + * + * PHP version 5. + * + * @category Bookmarking + * @package SemanticScuttle + * @author Christian Weiske <cweiske@cweiske.de> + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ + +/** + * Instantiates the configured website thumbnailer object. + * + * @category Bookmarking + * @package SemanticScuttle + * @author Christian Weiske <cweiske@cweiske.de> + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ +class SemanticScuttle_Service_Thumbnails extends SemanticScuttle_Service +{ + /** + * Instantiates the configured website thumbnailer object. + * + * @return object Website thumbnailer + */ + public function getThumbnailer() + { + if (!isset($GLOBALS['thumbnailsType']) + || $GLOBALS['thumbnailsType'] == '' + ) { + $class = 'SemanticScuttle_Thumbnailer_Null'; + } else { + $class = 'SemanticScuttle_Thumbnailer_' + . ucfirst($GLOBALS['thumbnailsType']); + } + if (!class_exists($class)) { + //PEAR classname to filename rule + $file = str_replace('_', '/', $class) . '.php'; + include_once $file; + } + + $thumbnailer = new $class(); + + if (!isset($GLOBALS['thumbnailsConfig']) + || $GLOBALS['thumbnailsConfig'] == '' + ) { + $thumbnailer->setConfig(null); + } else { + $thumbnailer->setConfig($GLOBALS['thumbnailsConfig']); + } + + return $thumbnailer; + } +} +?> diff --git a/src/SemanticScuttle/Thumbnailer/Null.php b/src/SemanticScuttle/Thumbnailer/Null.php new file mode 100644 index 0000000..ec12135 --- /dev/null +++ b/src/SemanticScuttle/Thumbnailer/Null.php @@ -0,0 +1,52 @@ +<?php +/** + * SemanticScuttle - your social bookmark manager. + * + * PHP version 5. + * + * @category Bookmarking + * @package SemanticScuttle + * @author Christian Weiske <cweiske@cweiske.de> + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ + +/** + * Dummy thumbnailer that never returns a thumbnail URL + * + * @category Bookmarking + * @package SemanticScuttle + * @author Christian Weiske <cweiske@cweiske.de> + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ +class SemanticScuttle_Thumbnailer_Null +{ + /** + * Set dummy configuration + * + * @param array $config Dummy configuration + * + * @return void + */ + public function setConfig($config) + { + } + + /** + * Get the URL for a website thumbnail. + * Always returns false. + * + * @param string $bookmarkUrl URL of website to create thumbnail for + * @param integer $width Screenshot width + * @param integer $height Screenshot height + * + * @return mixed FALSE when no screenshot could be obtained, + * string with the URL otherwise + */ + public function getThumbnailUrl($bookmarkUrl, $width, $height) + { + return false; + } +} +?> diff --git a/src/SemanticScuttle/Thumbnailer/Phancap.php b/src/SemanticScuttle/Thumbnailer/Phancap.php new file mode 100644 index 0000000..1b76849 --- /dev/null +++ b/src/SemanticScuttle/Thumbnailer/Phancap.php @@ -0,0 +1,92 @@ +<?php +/** + * SemanticScuttle - your social bookmark manager. + * + * PHP version 5. + * + * @category Bookmarking + * @package SemanticScuttle + * @author Christian Weiske <cweiske@cweiske.de> + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ + +/** + * Show website thumbnails/screenshots using phancap + * + * @category Bookmarking + * @package SemanticScuttle + * @author Christian Weiske <cweiske@cweiske.de> + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + * @see http://cweiske.de/phancap.htm + */ +class SemanticScuttle_Thumbnailer_Phancap +{ + /** + * Configuration array. + * Required keys: + * - url + * - token + * - secret + */ + protected $config = array(); + + /** + * Set phancap configuration + * + * @param array $config Phancap configuration + * + * @return void + */ + public function setConfig($config) + { + $this->config = $config; + } + + /** + * Get the URL for a website thumbnail + * + * @param string $bookmarkUrl URL of website to create thumbnail for + * @param integer $width Screenshot width + * @param integer $height Screenshot height + * + * @return mixed FALSE when no screenshot could be obtained, + * string with the URL otherwise + */ + public function getThumbnailUrl($bookmarkUrl, $width, $height) + { + //default parameters for the phancap service + $parameters = array( + 'url' => $bookmarkUrl, + 'swidth' => $width, + 'sheight' => $height, + 'sformat' => 'jpg', + ); + + if (isset($this->config['token']) && $this->config['token'] != '') { + $parameters['atoken'] = $this->config['token']; + $parameters['atimestamp'] = time(); + + //create signature + ksort($parameters); + foreach ($parameters as $key => $value) { + $encparams[] = $key . '=' . rawurlencode($value); + } + $encstring = implode('&', $encparams); + $signature = hash_hmac('sha1', $encstring, $this->config['secret']); + //append signature to parameters + $parameters['asignature'] = $signature; + } + + //url-encode the parameters + $urlParams = array(); + foreach ($parameters as $key => $value) { + $urlParams[] = $key . '=' . urlencode($value); + } + + //final URL + return $this->config['url'] . '?' . implode('&', $urlParams); + } +} +?> diff --git a/www/themes/default/scuttle.css b/www/themes/default/scuttle.css index f37377d..12a88fc 100644 --- a/www/themes/default/scuttle.css +++ b/www/themes/default/scuttle.css @@ -195,7 +195,6 @@ img.thumbnail { padding: 1px; margin-right: 6px; margin-bottom:4px; - cursor:pointer; border:1px solid #AAA; } div.link a { |