Skip to content

Commit

Permalink
Fix gravatar in the member profile summary. Some code changes.
Browse files Browse the repository at this point in the history
  • Loading branch information
realdigger committed Mar 29, 2017
1 parent cab0ed5 commit d269abf
Show file tree
Hide file tree
Showing 4 changed files with 129 additions and 41 deletions.
126 changes: 105 additions & 21 deletions Sources/Mod-Gravatar.php
Original file line number Diff line number Diff line change
@@ -1,24 +1,47 @@
<?php
/**
* Project: Gravatar 4 SMF
* Version: 1.1
* Version: 1.3
* File: Mod-Gravatar.php
* Author: digger
* License: The MIT License (MIT)
*/

if (!defined('SMF'))
if (!defined('SMF')) {
die('Hacking attempt...');
}

/**
* Load all needed hooks
*/
function loadGravatarHooks()
{
add_integration_function('integrate_admin_areas', 'addGravatarAdminArea', false);
add_integration_function('integrate_modify_modifications', 'addGravatarAdminAction', false);
add_integration_function('integrate_load_theme', 'addGravatarForCurrentUser', false);
add_integration_function('integrate_menu_buttons', 'addGravatarForCurrentUserProfile', false);
add_integration_function('integrate_menu_buttons', 'addGravatarsForUsers', false);
add_integration_function('integrate_menu_buttons', 'addGravatarCopyright', false);
}

function addGravatarAdminArea(&$admin_areas) {
/**
* Add mod admin area
* @param $admin_areas
*/
function addGravatarAdminArea(&$admin_areas)
{
global $txt;
loadLanguage('Gravatar/');

$admin_areas['config']['areas']['modsettings']['subsections']['gravatar'] = array($txt['gravatar_admin_menu']);
}

function loadGravatarAdminJS() {
global $context, $modSettings;
/**
* Add mod admin area JS
*/
function loadGravatarAdminJS()
{
global $context;

$context['insert_after_template'] .= "
<script type='text/javascript'><!-- // --><![CDATA[
Expand All @@ -31,11 +54,22 @@ function updateGravatar(){

}

function addGravatarAdminAction(&$subActions) {
/**
* Add mod admin action
* @param $subActions
*/
function addGravatarAdminAction(&$subActions)
{
$subActions['gravatar'] = 'addGravatarAdminSettings';
}

function addGravatarAdminSettings($return_config = false) {
/**
* Add mod settings area
* @param bool $return_config
* @return array
*/
function addGravatarAdminSettings($return_config = false)
{
global $txt, $scripturl, $context, $modSettings;
loadLanguage('Gravatar/');
loadGravatarAdminJS();
Expand All @@ -46,7 +80,9 @@ function addGravatarAdminSettings($return_config = false) {
$config_vars = array(
array('check', 'gravatar_enabled'),
array('check', 'gravatar_forced', 'subtext' => $txt['gravatar_forced_help'],),
array('select', 'gravatar_rating',
array(
'select',
'gravatar_rating',
array(
'g' => $txt['gravatar_rating_g'],
'pg' => $txt['gravatar_rating_pg'],
Expand All @@ -55,7 +91,9 @@ function addGravatarAdminSettings($return_config = false) {
),
'subtext' => $txt['gravatar_rating_help'],
),
array('select', 'gravatar_style',
array(
'select',
'gravatar_style',
array(
'wavatar' => $txt['gravatar_style_wavatar'],
'identicon' => $txt['gravatar_style_identicon'],
Expand All @@ -67,15 +105,16 @@ function addGravatarAdminSettings($return_config = false) {
),
'subtext' => $txt['gravatar_style_help'],
'postinput' => '<div style="margin-top: 3px;"><img id="gravatar_example" src="//gravatar.com/avatar/00000000000000000000000000000000?d=' .
(($modSettings['gravatar_style'] == 'custom' && !empty($modSettings['gravatar_style_custom_url'])) ? urlencode($modSettings['gravatar_style_custom_url']) : ((!empty($modSettings['gravatar_style']) && $modSettings['gravatar_style'] != 'custom') ? $modSettings['gravatar_style'] : ''))
. '&amp;s=65" alt="" /></div>',
(($modSettings['gravatar_style'] == 'custom' && !empty($modSettings['gravatar_style_custom_url'])) ? urlencode($modSettings['gravatar_style_custom_url']) : ((!empty($modSettings['gravatar_style']) && $modSettings['gravatar_style'] != 'custom') ? $modSettings['gravatar_style'] : ''))
. '&amp;s=65" alt="" /></div>',
'javascript' => 'onchange="updateGravatar()"',
),
array('large_text', 'gravatar_style_custom_url', 'subtext' => $txt['gravatar_style_custom_url_help']),
);

if ($return_config)
if ($return_config) {
return $config_vars;
}

if (isset($_GET['save'])) {
checkSession();
Expand All @@ -87,7 +126,14 @@ function addGravatarAdminSettings($return_config = false) {
prepareDBSettingContext($config_vars);
}

function getGravatar($email = '') {
/**
* Get gravatar by email
* @param string $email
* @param bool $image swe need img tag
* @return string gravatar link or image
*/
function getGravatar($email = '', $image = false)
{
global $modSettings;

$gravatarHash = md5(strtolower($email));
Expand All @@ -98,21 +144,54 @@ function getGravatar($email = '') {
$gravatarSize = $gravatarWidth < $gravatarHeight ? $gravatarWidth : $gravatarHeight;
$gravatar = 'http://gravatar.com/avatar/' . $gravatarHash . '?d=' . $gravatarStyle . '&amp;s=' . $gravatarSize . '&amp;r=' . $gravatarRating;

if ($image) {
$gravatar = '<img class="avatar" src="' . $gravatar . '" alt="" />';
}

return $gravatar;
}

function addGravatarForCurrentUser() {
/**
* Add gravatar to forum header for current member
* @return bool
*/
function addGravatarForCurrentUser()
{
global $modSettings, $user_info;

if (!empty($modSettings['gravatar_enabled']) && ((empty($user_info['avatar']['url']) && empty($user_info['avatar']['filename'])) || !empty($modSettings['gravatar_forced']))) {
$user_info['avatar']['url'] = getGravatar($user_info['email']);
} else return false;
} else {
return false;
}
}

function addGravatarsForUsers() {
/**
* Add gravatar to current member profile
* @return bool
*/
function addGravatarForCurrentUserProfile()
{
global $modSettings, $context;

if (!empty($modSettings['gravatar_enabled']) && !empty($context['member']) && (empty($context['member']['avatar']['image']) || !empty($modSettings['gravatar_forced']))) {
$context['member']['avatar']['image'] = getGravatar($context['member']['email'], true);
} else {
return false;
}
}

/**
* Add gravatars for this topic page members
* @return bool
*/
function addGravatarsForUsers()
{
global $modSettings, $user_profile;

if (empty($modSettings['gravatar_enabled']) || empty($user_profile)) return false;
if (empty($modSettings['gravatar_enabled']) || empty($user_profile)) {
return false;
}

foreach (array_keys($user_profile) as $user_id) {
if (((empty($user_profile[$user_id]['avatar']) && empty($user_profile[$user_id]['filename'])) || !empty($modSettings['gravatar_forced'])) && !empty($user_profile[$user_id]['email_address'])) {
Expand All @@ -121,9 +200,14 @@ function addGravatarsForUsers() {
}
}

function addGravatarCopyright() {
/**
* Add mod copyright to the forum credits page
*/
function addGravatarCopyright()
{
global $context;

if ($context['current_action'] == 'credits')
$context['copyrights']['mods'][] = '<a href="http://mysmf.ru/mods/gravatar-4-smf" target="_blank">Gravatar 4 SMF</a> &copy; 2010-2016, digger';
}
if ($context['current_action'] == 'credits') {
$context['copyrights']['mods'][] = '<a href="http://mysmf.ru/mods/gravatar-4-smf" target="_blank">Gravatar 4 SMF</a> &copy; 2010-2017, digger';
}
}
16 changes: 10 additions & 6 deletions add_settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,15 @@

global $context, $user_info;

if (file_exists(dirname(__FILE__) . '/SSI.php') && !defined('SMF'))
if (file_exists(dirname(__FILE__) . '/SSI.php') && !defined('SMF')) {
require_once(dirname(__FILE__) . '/SSI.php');
elseif (!defined('SMF'))
} elseif (!defined('SMF')) {
die('<b>Error:</b> Cannot install - please verify that you put this file in the same place as SMF\'s index.php and SSI.php files.');
}

if ((SMF == 'SSI') && !$user_info['is_admin'])
if ((SMF == 'SSI') && !$user_info['is_admin']) {
die('Admin privileges required.');
}

// List settings here in the format: setting_key => default_value. Escape any "s. (" => \")
$mod_settings = array(
Expand All @@ -31,9 +33,11 @@

// Update mod settings if applicable
foreach ($mod_settings as $new_setting => $new_value) {
if (!isset($modSettings[$new_setting]))
if (!isset($modSettings[$new_setting])) {
updateSettings(array($new_setting => $new_value));
}
}

if (SMF == 'SSI')
echo 'Database changes are complete! <a href="/">Return to the main page</a>.';
if (SMF == 'SSI') {
echo 'Database changes are complete! <a href="/">Return to the main page</a>.';
}
26 changes: 13 additions & 13 deletions hooks.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,31 +12,31 @@

global $context, $user_info;

if (file_exists(dirname(__FILE__) . '/SSI.php') && !defined('SMF'))
if (file_exists(dirname(__FILE__) . '/SSI.php') && !defined('SMF')) {
require_once(dirname(__FILE__) . '/SSI.php');
elseif (!defined('SMF'))
} elseif (!defined('SMF')) {
die('<b>Error:</b> Cannot install - please verify that you put this file in the same place as SMF\'s index.php and SSI.php files.');
}

if ((SMF == 'SSI') && !$user_info['is_admin'])
if ((SMF == 'SSI') && !$user_info['is_admin']) {
die('Admin privileges required.');
}

if (!empty($context['uninstalling']))
if (!empty($context['uninstalling'])) {
$call = 'remove_integration_function';
else
} else {
$call = 'add_integration_function';
}

$hooks = array(
'integrate_pre_include' => '$sourcedir/Mod-Gravatar.php',
'integrate_admin_areas' => 'addGravatarAdminArea',
'integrate_modify_modifications' => 'addGravatarAdminAction',
'integrate_load_theme' => 'addGravatarForCurrentUser',
'integrate_menu_buttons' => 'addGravatarsForUsers',
'integrate_pre_load' => 'loadGravatarHooks'
);

$call('integrate_menu_buttons', 'addGravatarCopyright');

foreach ($hooks as $hook => $function)
foreach ($hooks as $hook => $function) {
$call($hook, $function);
}

if (SMF == 'SSI')
if (SMF == 'SSI') {
echo 'Database changes are complete! <a href="/">Return to the main page</a>.';
}
2 changes: 1 addition & 1 deletion package-info.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<id>digger:gravatar_for_smf</id>
<name>Gravatar 4 SMF</name>
<type>modification</type>
<version>1.3</version>
<version>1.4</version>

<install for="2.0 - 2.0.99">
<readme parsebbc="true">readme/english.txt</readme>
Expand Down

0 comments on commit d269abf

Please sign in to comment.