2012-04-14 20:29:24 -04:00
< ? php
/**
* Name : Libravatar Support
2018-01-20 08:57:41 -05:00
* Description : If there is no avatar image for a new user or contact this addon will look for one at Libravatar . Please disable Gravatar addon if you use this one . ( requires PHP >= 5.3 )
2012-07-14 14:30:12 -04:00
* Version : 1.1
2012-04-14 20:29:24 -04:00
* Author : Klaus Weidenbach < http :// friendica . dszdw . net / profile / klaus >
*/
2018-07-21 09:13:02 -04:00
use Friendica\App ;
2018-10-17 15:34:15 -04:00
use Friendica\BaseModule ;
2018-01-16 19:51:12 -05:00
use Friendica\Core\Addon ;
2017-11-06 18:55:24 -05:00
use Friendica\Core\Config ;
2018-01-22 14:03:11 -05:00
use Friendica\Core\L10n ;
2018-07-21 09:13:02 -04:00
use Friendica\Database\DBA ;
2018-10-17 12:58:05 -04:00
use Friendica\Util\Security ;
2017-11-06 18:55:24 -05:00
2012-04-14 20:29:24 -04:00
/**
2018-01-20 08:57:41 -05:00
* Installs the addon hook
2012-04-14 20:29:24 -04:00
*/
2018-01-22 14:03:11 -05:00
function libravatar_install ()
{
2018-06-27 23:14:39 -04:00
Addon :: registerHook ( 'load_config' , 'addon/libravatar/libravatar.php' , 'libravatar_load_config' );
2018-01-22 14:03:11 -05:00
Addon :: registerHook ( 'avatar_lookup' , 'addon/libravatar/libravatar.php' , 'libravatar_lookup' );
2012-04-14 20:29:24 -04:00
logger ( " registered libravatar in avatar_lookup hook " );
}
/**
2018-01-20 08:57:41 -05:00
* Removes the addon hook
2012-04-14 20:29:24 -04:00
*/
2018-01-22 14:03:11 -05:00
function libravatar_uninstall ()
{
2018-06-27 23:14:39 -04:00
Addon :: unregisterHook ( 'load_config' , 'addon/libravatar/libravatar.php' , 'libravatar_load_config' );
2018-01-16 19:51:12 -05:00
Addon :: unregisterHook ( 'avatar_lookup' , 'addon/libravatar/libravatar.php' , 'libravatar_lookup' );
2012-07-14 14:30:12 -04:00
logger ( " unregistered libravatar in avatar_lookup hook " );
2012-04-14 20:29:24 -04:00
}
2018-07-21 09:13:02 -04:00
function libravatar_load_config ( App $a )
2018-06-27 23:14:39 -04:00
{
$a -> loadConfigFile ( __DIR__ . '/config/libravatar.ini.php' );
}
2012-04-14 20:29:24 -04:00
/**
* Looks up the avatar at Libravatar and returns the URL .
*
* @ param $a array
* @ param & $b array
*/
2018-01-22 14:03:11 -05:00
function libravatar_lookup ( $a , & $b )
{
2018-06-27 23:14:39 -04:00
$default_avatar = Config :: get ( 'libravatar' , 'default_avatar' );
2012-04-14 20:29:24 -04:00
if ( ! $default_avatar ) {
// if not set, look up if there was one from the gravatar addon
2018-06-27 23:14:39 -04:00
$default_avatar = Config :: get ( 'gravatar' , 'default_avatar' );
2012-04-14 20:29:24 -04:00
// setting default avatar if nothing configured
2018-01-22 14:03:11 -05:00
if ( ! $default_avatar ) {
2012-04-14 20:29:24 -04:00
$default_avatar = 'identicon' ; // default image will be a random pattern
2018-01-22 14:03:11 -05:00
}
2012-04-14 20:29:24 -04:00
}
require_once 'Services/Libravatar.php' ;
$libravatar = new Services_Libravatar ();
2012-07-14 14:30:12 -04:00
$libravatar -> setSize ( $b [ 'size' ]);
$libravatar -> setDefault ( $default_avatar );
$avatar_url = $libravatar -> getUrl ( $b [ 'email' ]);
2012-04-14 20:29:24 -04:00
$b [ 'url' ] = $avatar_url ;
$b [ 'success' ] = true ;
}
/**
* Display admin settings for this addon
*/
2018-01-22 14:03:11 -05:00
function libravatar_addon_admin ( & $a , & $o )
{
$t = get_markup_template ( " admin.tpl " , " addon/libravatar " );
2012-04-14 20:29:24 -04:00
2018-06-27 23:14:39 -04:00
$default_avatar = Config :: get ( 'libravatar' , 'default_avatar' );
2012-04-14 20:29:24 -04:00
// set default values for first configuration
2018-01-22 14:03:11 -05:00
if ( ! $default_avatar ) {
2012-04-14 20:29:24 -04:00
$default_avatar = 'identicon' ; // pseudo-random geometric pattern based on email hash
2018-01-22 14:03:11 -05:00
}
2012-04-14 20:29:24 -04:00
// Available options for the select boxes
2018-01-15 08:15:33 -05:00
$default_avatars = [
2018-01-22 14:03:11 -05:00
'mm' => L10n :: t ( 'generic profile image' ),
'identicon' => L10n :: t ( 'random geometric pattern' ),
'monsterid' => L10n :: t ( 'monster face' ),
'wavatar' => L10n :: t ( 'computer generated face' ),
'retro' => L10n :: t ( 'retro arcade style face' ),
2018-01-15 08:15:33 -05:00
];
2012-04-14 20:29:24 -04:00
// Show warning if PHP version is too old
if ( ! version_compare ( PHP_VERSION , '5.3.0' , '>=' )) {
2018-01-22 14:03:11 -05:00
$o = '<h5>' . L10n :: t ( 'Warning' ) . '</h5><p>' ;
2018-01-23 22:59:20 -05:00
$o .= L10n :: t ( 'Your PHP version %s is lower than the required PHP >= 5.3.' , PHP_VERSION );
2018-01-22 14:03:11 -05:00
$o .= '<br>' . L10n :: t ( 'This addon is not functional on your server.' ) . '<p><br>' ;
2012-04-14 20:29:24 -04:00
return ;
}
// Libravatar falls back to gravatar, so show warning about gravatar addon if enabled
$r = q ( " SELECT * FROM `addon` WHERE `name` = '%s' and `installed` = 1 " ,
2018-07-21 09:13:02 -04:00
DBA :: escape ( 'gravatar' )
2012-04-14 20:29:24 -04:00
);
if ( count ( $r )) {
2018-01-22 14:03:11 -05:00
$o = '<h5>' . L10n :: t ( 'Information' ) . '</h5><p>' . L10n :: t ( 'Gravatar addon is installed. Please disable the Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if nothing was found at Libravatar.' ) . '</p><br><br>' ;
2012-04-14 20:29:24 -04:00
}
// output Libravatar settings
2018-10-17 15:34:15 -04:00
$o .= '<input type="hidden" name="form_security_token" value="' . BaseModule :: getFormSecurityToken ( " libravatarsave " ) . '">' ;
2018-01-15 08:15:33 -05:00
$o .= replace_macros ( $t , [
2018-01-22 14:03:11 -05:00
'$submit' => L10n :: t ( 'Save Settings' ),
'$default_avatar' => [ 'avatar' , L10n :: t ( 'Default avatar image' ), $default_avatar , L10n :: t ( 'Select default avatar image if none was found. See README' ), $default_avatars ],
2018-01-15 08:15:33 -05:00
]);
2012-04-14 20:29:24 -04:00
}
/**
* Save admin settings
*/
2018-01-22 14:03:11 -05:00
function libravatar_addon_admin_post ( & $a )
{
2018-10-17 15:34:15 -04:00
BaseModule :: checkFormSecurityToken ( 'libravatarrsave' );
2012-04-14 20:29:24 -04:00
$default_avatar = (( x ( $_POST , 'avatar' )) ? notags ( trim ( $_POST [ 'avatar' ])) : 'identicon' );
2018-06-27 23:14:39 -04:00
Config :: set ( 'libravatar' , 'default_avatar' , $default_avatar );
2018-01-22 14:03:11 -05:00
info ( L10n :: t ( 'Libravatar settings updated.' ) . EOL );
2012-04-14 20:29:24 -04:00
}