2012-04-15 00:29:24 +00:00
< ? php
/**
* Name : Libravatar Support
2018-01-20 13:57:41 +00: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 18:30:12 +00:00
* Version : 1.1
2012-04-15 00:29:24 +00:00
* Author : Klaus Weidenbach < http :// friendica . dszdw . net / profile / klaus >
*/
2018-07-21 13:13:02 +00:00
2020-12-07 21:00:56 +00:00
use Friendica\Core\Addon ;
2018-12-26 07:28:16 +00:00
use Friendica\Core\Hook ;
2018-10-29 23:40:18 +00:00
use Friendica\Core\Logger ;
2018-10-31 14:55:15 +00:00
use Friendica\Core\Renderer ;
2020-01-18 22:00:52 +00:00
use Friendica\DI ;
2023-01-01 19:21:56 +00:00
use Friendica\Core\Config\Util\ConfigFileManager ;
2017-11-06 23:55:24 +00:00
2012-04-15 00:29:24 +00:00
/**
2018-01-20 13:57:41 +00:00
* Installs the addon hook
2012-04-15 00:29:24 +00:00
*/
2018-01-22 19:03:11 +00:00
function libravatar_install ()
{
2018-12-26 07:28:16 +00:00
Hook :: register ( 'load_config' , 'addon/libravatar/libravatar.php' , 'libravatar_load_config' );
Hook :: register ( 'avatar_lookup' , 'addon/libravatar/libravatar.php' , 'libravatar_lookup' );
2020-12-07 21:00:56 +00:00
Logger :: notice ( " registered libravatar in avatar_lookup hook " );
2012-04-15 00:29:24 +00:00
}
2023-01-14 02:16:09 +00:00
function libravatar_load_config ( ConfigFileManager $loader )
2018-06-28 03:14:39 +00:00
{
2023-01-14 02:16:09 +00:00
DI :: app () -> getConfigCache () -> load ( $loader -> loadAddonConfig ( 'libravatar' ), \Friendica\Core\Config\ValueObject\Cache :: SOURCE_STATIC );
2018-06-28 03:14:39 +00:00
}
2012-04-15 00:29:24 +00:00
/**
* Looks up the avatar at Libravatar and returns the URL .
*
* @ param & $b array
*/
2023-01-14 02:16:09 +00:00
function libravatar_lookup ( array & $b )
2018-01-22 19:03:11 +00:00
{
2020-01-19 20:21:12 +00:00
$default_avatar = DI :: config () -> get ( 'libravatar' , 'default_avatar' );
2020-12-07 21:00:56 +00:00
if ( empty ( $default_avatar )) {
2012-04-15 00:29:24 +00:00
// if not set, look up if there was one from the gravatar addon
2020-12-07 21:00:56 +00:00
$default_avatar = DI :: config () -> get ( 'gravatar' , 'default_avatar' , 'identicon' );
2012-04-15 00:29:24 +00:00
}
require_once 'Services/Libravatar.php' ;
2022-06-23 05:16:22 +00:00
2012-04-15 00:29:24 +00:00
$libravatar = new Services_Libravatar ();
2012-07-14 18:30:12 +00:00
$libravatar -> setSize ( $b [ 'size' ]);
$libravatar -> setDefault ( $default_avatar );
$avatar_url = $libravatar -> getUrl ( $b [ 'email' ]);
2012-04-15 00:29:24 +00:00
$b [ 'url' ] = $avatar_url ;
$b [ 'success' ] = true ;
}
/**
* Display admin settings for this addon
*/
2023-01-14 02:16:09 +00:00
function libravatar_addon_admin ( string & $o )
2018-01-22 19:03:11 +00:00
{
2022-06-30 11:32:13 +00:00
$t = Renderer :: getMarkupTemplate ( 'admin.tpl' , 'addon/libravatar' );
2012-04-15 00:29:24 +00:00
2020-12-07 21:00:56 +00:00
$default_avatar = DI :: config () -> get ( 'libravatar' , 'default_avatar' , 'identicon' );
2012-04-15 00:29:24 +00:00
// Available options for the select boxes
2018-01-15 13:15:33 +00:00
$default_avatars = [
2020-01-18 19:52:33 +00:00
'mm' => DI :: l10n () -> t ( 'generic profile image' ),
'identicon' => DI :: l10n () -> t ( 'random geometric pattern' ),
'monsterid' => DI :: l10n () -> t ( 'monster face' ),
'wavatar' => DI :: l10n () -> t ( 'computer generated face' ),
'retro' => DI :: l10n () -> t ( 'retro arcade style face' ),
2020-12-07 21:00:56 +00:00
'robohash' => DI :: l10n () -> t ( 'roboter face' ),
'pagan' => DI :: l10n () -> t ( 'retro adventure game character' ),
2018-01-15 13:15:33 +00:00
];
2012-04-15 00:29:24 +00:00
2020-12-07 21:00:56 +00:00
if ( Addon :: isEnabled ( 'gravatar' )) {
2020-01-18 19:52:33 +00:00
$o = '<h5>' . DI :: l10n () -> t ( 'Information' ) . '</h5><p>' . DI :: 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-15 00:29:24 +00:00
}
// output Libravatar settings
2018-10-31 14:55:15 +00:00
$o .= Renderer :: replaceMacros ( $t , [
2020-01-18 19:52:33 +00:00
'$submit' => DI :: l10n () -> t ( 'Save Settings' ),
'$default_avatar' => [ 'avatar' , DI :: l10n () -> t ( 'Default avatar image' ), $default_avatar , DI :: l10n () -> t ( 'Select default avatar image if none was found. See README' ), $default_avatars ],
2018-01-15 13:15:33 +00:00
]);
2012-04-15 00:29:24 +00:00
}
/**
* Save admin settings
*/
2023-01-14 02:16:09 +00:00
function libravatar_addon_admin_post ()
2018-01-22 19:03:11 +00:00
{
2022-06-30 11:32:13 +00:00
DI :: config () -> set ( 'libravatar' , 'default_avatar' , trim ( $_POST [ 'avatar' ] ? ? 'identicon' ));
2012-04-15 00:29:24 +00:00
}