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
|
* Currently supported:
|
||||||
* gain profit with your pages.
|
* - null (no screenshots)
|
||||||
*
|
* - 'phancap', see http://cweiske.de/phancap.htm
|
||||||
* @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.
|
|
||||||
*
|
*
|
||||||
* @var string
|
* @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.
|
* 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 ' - ';
|
||||||
echo T_("Propulsed by ");
|
echo T_("Propulsed by ");
|
||||||
echo " <a href=\"https://sourceforge.net/projects/semanticscuttle/\">SemanticScuttle</a>";
|
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>
|
</div>
|
||||||
|
|
|
@ -51,7 +51,7 @@ class SemanticScuttle_Service
|
||||||
{
|
{
|
||||||
static $instance;
|
static $instance;
|
||||||
if (!isset($instance)) {
|
if (!isset($instance)) {
|
||||||
$instance = new self($db);
|
$instance = new static($db);
|
||||||
}
|
}
|
||||||
return $instance;
|
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;
|
padding: 1px;
|
||||||
margin-right: 6px;
|
margin-right: 6px;
|
||||||
margin-bottom:4px;
|
margin-bottom:4px;
|
||||||
cursor:pointer;
|
|
||||||
border:1px solid #AAA;
|
border:1px solid #AAA;
|
||||||
}
|
}
|
||||||
div.link a {
|
div.link a {
|
||||||
|
|
Loading…
Reference in a new issue