friendica-addons/gravatar/gravatar.php
Klaus Weidenbach d0fa37e8ea Add Gravatar plugin.
This plugin provides the default gravatar lookup feature that has been in friendica's core before.
In addition it lets you choose the default avatar image type and select the allowed image rating.
2012-04-09 12:58:06 +02:00

105 lines
3.0 KiB
PHP

<?php
/**
* Name: Gravatar Support
* Description: If there is no avatar image for a new user or contact this plugin will look for one at Gravatar.
* Version: 1.0
* Author: Klaus Weidenbach <http://friendica.dszdw.net/profile/klaus>
*/
/**
* Installs the plugin hook
*/
function gravatar_install() {
register_hook('avatar_lookup', 'addon/gravatar/gravatar.php', 'gravatar_lookup');
logger("installed gravatar");
}
/**
* Removes the plugin hook
*/
function gravatar_uninstall() {
unregister_hook('avatar_lookup', 'addon/gravatar/gravatar.php', 'gravatar_lookup');
logger("uninstalled gravatar");
}
/**
* Looks up the avatar at gravatar.com and returns the URL.
*
* @param $a array
* @param &$b array
*/
function gravatar_lookup($a, &$b) {
$default_avatar = get_config('gravatar', 'default_img');
$rating = get_config('gravatar', 'rating');
// setting default value if nothing configured
if(! $default_avatar)
$default_avatar = 'identicon'; // pseudo-random geometric pattern based on email hash
if(! $rating)
$rating = 'g'; // suitable for display on all websites with any audience type
$hash = md5(trim(strtolower($b['email'])));
$url = 'http://www.gravatar.com/avatar/' .$hash .'.jpg';
$url .= '?s=' .$b['size'] .'&r=' .$rating;
if ($default_avatar != "gravatar")
$url .= '&d=' .$default_avatar;
$b['url'] = $url;
}
/**
* Display admin settings for this addon
*/
function gravatar_plugin_admin (&$a, &$o) {
$t = file_get_contents( dirname(__file__)."/admin.tpl");
$default_avatar = get_config('gravatar', 'default_img');
$rating = get_config('gravatar', 'rating');
// set default values for first configuration
if(! $default_avatar)
$default_avatar = 'identicon'; // pseudo-random geometric pattern based on email hash
if(! $rating)
$rating = 'g'; // suitable for display on all websites with any audience type
// Available options for the select boxes
$default_avatars = array(
'gravatar' => 'Gravatar',
'mm' => 'MM',
'identicon' => 'Identicon',
'monsterid' => 'Monsterid',
'wavatar' => 'Wavatar',
'retro' => 'Retro'
);
$ratings = array(
'g' => 'g',
'pg' => 'pg',
'r' => 'r',
'x' => 'x'
);
$o = '<input type="hidden" name="form_security_token" value="' .get_form_security_token("gravatarsave") .'">';
$o .= replace_macros( $t, array(
'$submit' => t('Submit'),
'$default_avatar' => array('avatar', t('Default avatar image'), $default_avatar, t('Select default avatar image if none was found at Gravatar. See README'), $default_avatars),
'$rating' => array('rating', t('Rating of images'), $rating, t('Select the appropriate avatar rating for your site. See README'), $ratings),
));
}
/**
* Save admin settings
*/
function gravatar_plugin_admin_post (&$a) {
check_form_security_token('gravatarsave');
$default_avatar = ((x($_POST, 'avatar')) ? notags(trim($_POST['avatar'])) : 'identicon');
$rating = ((x($_POST, 'rating')) ? notags(trim($_POST['rating'])) : 'g');
set_config('gravatar', 'default_img', $default_avatar);
set_config('gravatar', 'rating', $rating);
info( t('Gravatar settings updated.') .EOL);
}
?>