MyShaarli/plugins/myShaarli/myShaarli.php

158 lines
4.5 KiB
PHP

<?php
/**
* Plugin externalThumbshot
*/
/**
* Init function, return an error if the server is not set.
*
* @param $conf ConfigManager instance.
*
* @return array Eventual error.
*/
function myShaarli_init($conf)
{
if (empty($conf->get('plugins.ExternalThumbshot_URL'))) {
$error = 'myShaarli plugin error: '.
'Please define the "ExternalThumbshot_URL" setting in the plugin administration page.';
return array($error);
}
if ($conf->get('resource.theme') !== 'myShaarli' AND $conf->get('resource.theme') !== 'myShaarli_Columns') {
$error = 'myShaarli plugin: '.
'This plugin need modification of template. Use myShaarli theme for test.';
return array($error);
}
$conf->set('thumbnails.mode', 'none');
}
/**
* Add externalThumbshot icon to link_plugin when rendering linklist.
*
* @param mixed $data - linklist data.
*
* @return mixed - linklist data with readityourself plugin.
*/
function hook_myShaarli_render_linklist($data,$conf)
{
$thumUrl = $conf->get('plugins.ExternalThumbshot_URL');
if(!empty($conf->get('plugins.ExternalThumbshot_KEY'))){
$key = $conf->get('plugins.ExternalThumbshot_KEY');
}
if (!isset($thumUrl)) {
return $data;
}
foreach ($data['links'] as &$value) {
//$thumb = computeThumbnail($conf, $value['url']);
if(empty($thumb)){
if(!empty($key)){
$hmac = '&amp;hm='.hash_hmac('sha1', $value['url'], $key).'&amp;url=';
} else {
$hmac = null;
}
$value['thumbnail'] = $thumUrl.$hmac.urlencode($value['url']);
} else {
$value['thumbnail'] = $thumb['src'];
}
if(empty($value['favicon'])){
if(!empty($key)){
$hmac = '&amp;t=fav&amp;hm='.hash_hmac('sha1', $value['url'], $key).'&amp;url=';
} else {
$hmac = null;
}
$value['favicon'] = $thumUrl.$hmac.urlencode($value['url']);
} else {
$value['favicon'] = $thumb['src'];
}
}
return $data;
}
/**
* Add externalThumbshot icon to link_plugin when rendering linklist.
*
* @param mixed $data - linklist data.
*
* @return mixed - linklist data with readityourself plugin.
*/
function hook_myShaarli_render_daily($data,$conf)
{
$thumUrl = $conf->get('plugins.ExternalThumbshot_URL');
if(!empty($conf->get('plugins.ExternalThumbshot_KEY'))){
$key = $conf->get('plugins.ExternalThumbshot_KEY');
}
if (!isset($thumUrl)) {
return $data;
}
foreach ($data['linksToDisplay'] as &$value) {
//$thumb = computeThumbnail($conf, $value['url']);
if(empty($thumb)){
if(!empty($key)){
$hmac = '&amp;hm='.hash_hmac('sha1', $value['url'], $key).'&amp;url=';
} else {
$hmac = null;
}
$value['thumbnail'] = $thumUrl.$hmac.urlencode($value['url']);
} else {
$value['thumbnail'] = $thumb['src'];
}
}
return $data;
}
/**
* Hook render_footer.
*/
function hook_myShaarli_render_footer($data)
{
if(file_exists('contact.php')){
$data['text'][] = '<br><a href="https://forge.leslibres.org/Knah-Tsaeb/MyShaarli">MyShaarli</a> is a fork of Shaarli.<a href="contact.php">Contact</a>';
}
return $data;
}
/**
* NOT WORKING
* To poor performance
* Need fix
*/
function returnFavicon($url)
{
$faviconHash = md5($url);
$path = substr($faviconHash, 0, 2).'/'.substr($faviconHash, 2, 2);
$faviconPath = 'cache/'.$path.'/'.$faviconHash.'.ico';
if (file_exists($faviconPath)) {
$content = file_get_contents($faviconPath);
return '<img class="favicon" alt="favicon" src="data:image/ico;base64,'.base64_encode($content).'"/>';
}
if (file_exists('cache/'.$path.'/'.$faviconHash)) {
return;
}
require_once 'plugins/myShaarli/favicon/DataAccess.php';
require_once 'plugins/myShaarli/favicon/Favicon.php';
$favicon = new \Favicon\Favicon();
$favicon->cache(array('dir' => 'cache'));
$urlOfFavicon = $favicon->get($url);
if (!$urlOfFavicon) {
mkdir('cache/'.$path, 0777, true);
touch('cache/'.$path.'/'.$faviconHash);
return;
}
if (!is_dir('cache/'.$path.'/')) {
mkdir('cache/'.$path, 0777, true);
}
$content = file_get_contents($urlOfFavicon);
file_put_contents($faviconPath, $content);
return '<img class="favicon" alt="favicon" src="data:image/ico;base64,'.base64_encode($content).'"/>';
}