Add support for phancap website thumbnailer.
Drop support for artviper, since their service is gone.
This commit is contained in:
parent
af2a061ecd
commit
6b3f1d4bb5
8 changed files with 230 additions and 41 deletions
|
@ -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.
|
||||
*
|
||||
* @var boolean
|
||||
* @link http://www.websitethumbnail.de/
|
||||
*/
|
||||
$enableWebsiteThumbnails = false;
|
||||
|
||||
/**
|
||||
* User ID from websitethumbnail.de
|
||||
*
|
||||
* You need to register on
|
||||
* http://www.artviper.net/registerapi.php
|
||||
* in order to use thumbnails on your domain
|
||||
*
|
||||
* @var string
|
||||
* @link http://www.artviper.net/registerapi.php
|
||||
*/
|
||||
$thumbnailsUserId = null;
|
||||
|
||||
/**
|
||||
* API key.
|
||||
* Sent to you by artviper.net after registration.
|
||||
* Currently supported:
|
||||
* - null (no screenshots)
|
||||
* - 'phancap', see http://cweiske.de/phancap.htm
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
$thumbnailsKey = null;
|
||||
$thumbnailsType = null;
|
||||
|
||||
/**
|
||||
* Configuration for thumbnail service.
|
||||
*
|
||||
* 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 array
|
||||
*/
|
||||
$thumbnailsConfig = array();
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -5,14 +5,14 @@
|
|||
*
|
||||
* Expects a $row variable with bookmark data.
|
||||
*/
|
||||
if (!$GLOBALS['enableWebsiteThumbnails']) {
|
||||
return;
|
||||
|
||||
$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>';
|
||||
}
|
||||
|
||||
$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.'" />';
|
||||
|
||||
?>
|
|
@ -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>
|
||||
|
|
|
@ -51,7 +51,7 @@ class SemanticScuttle_Service
|
|||
{
|
||||
static $instance;
|
||||
if (!isset($instance)) {
|
||||
$instance = new self($db);
|
||||
$instance = new static($db);
|
||||
}
|
||||
return $instance;
|
||||
}
|
||||
|
|
59
src/SemanticScuttle/Service/Thumbnails.php
Normal file
59
src/SemanticScuttle/Service/Thumbnails.php
Normal file
|
@ -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;
|
||||
}
|
||||
}
|
||||
?>
|
52
src/SemanticScuttle/Thumbnailer/Null.php
Normal file
52
src/SemanticScuttle/Thumbnailer/Null.php
Normal file
|
@ -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;
|
||||
}
|
||||
}
|
||||
?>
|
92
src/SemanticScuttle/Thumbnailer/Phancap.php
Normal file
92
src/SemanticScuttle/Thumbnailer/Phancap.php
Normal file
|
@ -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);
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -195,7 +195,6 @@ img.thumbnail {
|
|||
padding: 1px;
|
||||
margin-right: 6px;
|
||||
margin-bottom:4px;
|
||||
cursor:pointer;
|
||||
border:1px solid #AAA;
|
||||
}
|
||||
div.link a {
|
||||
|
|
Loading…
Reference in a new issue