From 93ffba58cc10fc793821ba16de88cdfb271ea5b8 Mon Sep 17 00:00:00 2001 From: Klaus Weidenbach Date: Tue, 21 Feb 2012 00:54:34 +0100 Subject: [PATCH 1/2] Rename gravatar_img() more generic to avatar_img(). I would like to extend the Gravatar support to also use Libravatar, a decentralized avatar service. First step to extract Gravatar from core and put it into its own plugin. Later the Libravatar plugin can be done, too as a plugin. --- include/Scrape.php | 4 ++-- include/network.php | 6 +++--- mod/register.php | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/Scrape.php b/include/Scrape.php index 9c237916bc..141c90dcfd 100644 --- a/include/Scrape.php +++ b/include/Scrape.php @@ -446,7 +446,7 @@ function probe_url($url, $mode = PROBE_NORMAL) { $phost = substr($url,strpos($url,'@')+1); $profile = 'http://' . $phost; // fix nick character range - $vcard = array('fn' => $name, 'nick' => $name, 'photo' => gravatar_img($url)); + $vcard = array('fn' => $name, 'nick' => $name, 'photo' => avatar_img($url)); $notify = 'smtp ' . random_string(); $poll = 'email ' . random_string(); $priority = 0; @@ -655,7 +655,7 @@ function probe_url($url, $mode = PROBE_NORMAL) { } if((! $vcard['photo']) && strlen($email)) - $vcard['photo'] = gravatar_img($email); + $vcard['photo'] = avatar_img($email); if($poll === $profile) $lnk = $feed->get_permalink(); if(isset($lnk) && strlen($lnk)) diff --git a/include/network.php b/include/network.php index 38d0980d50..59705634bb 100644 --- a/include/network.php +++ b/include/network.php @@ -692,13 +692,13 @@ function allowed_email($email) { }} -if(! function_exists('gravatar_img')) { -function gravatar_img($email) { +if(! function_exists('avatar_img')) { +function avatar_img($email) { $size = 175; $opt = 'identicon'; // psuedo-random geometric pattern if not found $rating = 'pg'; $hash = md5(trim(strtolower($email))); - + $url = 'http://www.gravatar.com/avatar/' . $hash . '.jpg' . '?s=' . $size . '&d=' . $opt . '&r=' . $rating; diff --git a/mod/register.php b/mod/register.php index 630c0a6759..8812ebadb0 100644 --- a/mod/register.php +++ b/mod/register.php @@ -324,7 +324,7 @@ function register_post(&$a) { require_once('include/Photo.php'); if(($use_gravatar) && (! strlen($photo))) - $photo = gravatar_img($email); + $photo = avatar_img($email); $photo_failure = false; $filename = basename($photo); @@ -333,7 +333,7 @@ function register_post(&$a) { if($img->is_valid()) { $img->scaleImageSquare(175); - + $hash = photo_new_resource(); $r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 4 ); From 1f9fe8b5eeebfb6bc1275cba7dbb4daac1a2e910 Mon Sep 17 00:00:00 2001 From: Klaus Weidenbach Date: Sun, 8 Apr 2012 23:20:31 +0200 Subject: [PATCH 2/2] Remove Gravatar from core and add new hook avatar_lookup. This patch removes all occurances of Gravatar from friendica's core and adds a new hook "avatar_lookup" inside the function avatar_img($email) where the new *avatar-plugins should hook in. I haven't touched the language files yet. Are they updated automatically somehow? --- doc/Plugins.md | 7 ++++++- doc/Settings.md | 10 ---------- include/network.php | 14 ++++++-------- mod/admin.php | 6 +----- mod/register.php | 14 +++++--------- view/admin_site.tpl | 1 - 6 files changed, 18 insertions(+), 34 deletions(-) diff --git a/doc/Plugins.md b/doc/Plugins.md index 29dff3187b..df60044500 100644 --- a/doc/Plugins.md +++ b/doc/Plugins.md @@ -164,10 +164,15 @@ Your module functions will often contain the function plugin_name_content(&$a), **'init_1'** - called just after DB has been opened and before session start $b is not used or passed - **'page_end'** - called after HTML content functions have completed $b is (string) HTML of content div +**'avatar_lookup'** - called when looking up the avatar + $b is (array) + 'size' => the size of the avatar that will be looked up + 'email' => email to look up the avatar for + 'url' => the (string) generated URL of the avatar + A complete list of all hook callbacks with file locations (generated 14-Feb-2012): Please see the source for details of any hooks not documented above. diff --git a/doc/Settings.md b/doc/Settings.md index 9808ecc5d9..574ce8dcc1 100644 --- a/doc/Settings.md +++ b/doc/Settings.md @@ -172,16 +172,6 @@ $a->config['system']['no_regfullname'] = true; ``` -**Gravatars** - -During registration, we will try to automatically find a user photo for you on the web using the gravatar service. You may turn this off by setting 'no_gravatar' to true. Default is false. - -Config: -``` -$a->config['system']['no_gravatar'] = true; -``` - - **OpenID** By default, OpenID may be used for both registration and logins. If you do not wish to make OpenID facilities available on your system (at all), set 'no_openid' to true. Default is false. diff --git a/include/network.php b/include/network.php index 59705634bb..58cef4756d 100644 --- a/include/network.php +++ b/include/network.php @@ -694,16 +694,14 @@ function allowed_email($email) { if(! function_exists('avatar_img')) { function avatar_img($email) { - $size = 175; - $opt = 'identicon'; // psuedo-random geometric pattern if not found - $rating = 'pg'; - $hash = md5(trim(strtolower($email))); + $avatar['size'] = 175; + $avatar['email'] = $email; + $avatar['url'] = ''; - $url = 'http://www.gravatar.com/avatar/' . $hash . '.jpg' - . '?s=' . $size . '&d=' . $opt . '&r=' . $rating; + call_hooks('avatar_lookup', $avatar); - logger('gravatar: ' . $email . ' ' . $url); - return $url; + logger('Avatar: ' . $avatar['email'] . ' ' . $avatar['url']); + return $avatar['url']; }} diff --git a/mod/admin.php b/mod/admin.php index a395027c11..9610027868 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -174,7 +174,6 @@ function admin_page_site_post(&$a){ return; } - $sitename = ((x($_POST,'sitename')) ? notags(trim($_POST['sitename'])) : ''); $banner = ((x($_POST,'banner')) ? trim($_POST['banner']) : false); $language = ((x($_POST,'language')) ? notags(trim($_POST['language'])) : ''); @@ -194,7 +193,6 @@ function admin_page_site_post(&$a){ $global_directory = ((x($_POST,'directory_submit_url')) ? notags(trim($_POST['directory_submit_url'])) : ''); $no_multi_reg = ((x($_POST,'no_multi_reg')) ? True : False); $no_openid = !((x($_POST,'no_openid')) ? True : False); - $no_gravatar = !((x($_POST,'no_gravatar')) ? True : False); $no_regfullname = !((x($_POST,'no_regfullname')) ? True : False); $no_utf = !((x($_POST,'no_utf')) ? True : False); $no_community_page = !((x($_POST,'no_community_page')) ? True : False); @@ -204,7 +202,7 @@ function admin_page_site_post(&$a){ $proxy = ((x($_POST,'proxy')) ? notags(trim($_POST['proxy'])) : ''); $timeout = ((x($_POST,'timeout')) ? intval(trim($_POST['timeout'])) : 60); $dfrn_only = ((x($_POST,'dfrn_only')) ? True : False); - $ostatus_disabled = !((x($_POST,'ostatus_disabled')) ? True : False); + $ostatus_disabled = !((x($_POST,'ostatus_disabled')) ? True : False); $diaspora_enabled = ((x($_POST,'diaspora_enabled')) ? True : False); $ssl_policy = ((x($_POST,'ssl_policy')) ? intval($_POST['ssl_policy']) : 0); @@ -283,7 +281,6 @@ function admin_page_site_post(&$a){ set_config('system','directory_search_url', $global_search_url); set_config('system','block_extended_register', $no_multi_reg); set_config('system','no_openid', $no_openid); - set_config('system','no_gravatar', $no_gravatar); set_config('system','no_regfullname', $no_regfullname); set_config('system','no_community_page', $no_community_page); set_config('system','no_utf', $no_utf); @@ -380,7 +377,6 @@ function admin_page_site(&$a) { '$no_multi_reg' => array('no_multi_reg', t("Block multiple registrations"), get_config('system','block_extended_register'), t("Disallow users to register additional accounts for use as pages.")), '$no_openid' => array('no_openid', t("OpenID support"), !get_config('system','no_openid'), t("OpenID support for registration and logins.")), - '$no_gravatar' => array('no_gravatar', t("Gravatar support"), !get_config('system','no_gravatar'), t("Search new user's photo on Gravatar.")), '$no_regfullname' => array('no_regfullname', t("Fullname check"), !get_config('system','no_regfullname'), t("Force users to register with a space between firstname and lastname in Full name, as an antispam measure")), '$no_utf' => array('no_utf', t("UTF-8 Regular expressions"), !get_config('system','no_utf'), t("Use PHP UTF8 regular expressions")), '$no_community_page' => array('no_community_page', t("Show Community Page"), !get_config('system','no_community_page'), t("Display a Community page showing all recent public postings on this site.")), diff --git a/mod/register.php b/mod/register.php index 8812ebadb0..b60707d457 100644 --- a/mod/register.php +++ b/mod/register.php @@ -314,17 +314,13 @@ function register_post(&$a) { } - $use_gravatar = ((get_config('system','no_gravatar')) ? false : true); - - // if we have an openid photo use it. - // otherwise unless it is disabled, use gravatar - - if($use_gravatar || strlen($photo)) { + // if we have no OpenID photo try to look up an avatar + if(! strlen($photo)) + $photo = avatar_img($email); + // unless there is no avatar-plugin loaded + if(strlen($photo)) { require_once('include/Photo.php'); - - if(($use_gravatar) && (! strlen($photo))) - $photo = avatar_img($email); $photo_failure = false; $filename = basename($photo); diff --git a/view/admin_site.tpl b/view/admin_site.tpl index 01fe893c65..ec144fbba5 100644 --- a/view/admin_site.tpl +++ b/view/admin_site.tpl @@ -17,7 +17,6 @@ {{ inc field_checkbox.tpl with $field=$no_multi_reg }}{{ endinc }} {{ inc field_checkbox.tpl with $field=$no_openid }}{{ endinc }} - {{ inc field_checkbox.tpl with $field=$no_gravatar }}{{ endinc }} {{ inc field_checkbox.tpl with $field=$no_regfullname }}{{ endinc }}