diff --git includes/functions_content.php includes/functions_content.php
index ce70fb1..ebfbaf7 100644
--- includes/functions_content.php
+++ includes/functions_content.php
@@ -1213,8 +1213,20 @@ function get_username_string($mode, $user_id, $username, $username_colour = '',
{
global $phpbb_root_path, $phpEx, $user, $auth;
- $profile_url = '';
+ static $profile_cache;
+ static $profile_url_base;
+
+ if ($mode == 'profile' && isset($profile_cache[$user_id]))
+ {
+ // We don't cache 'no_profile' mode
+ return $profile_cache[$user_id];
+ }
+
$username_colour = ($username_colour) ? '#' . $username_colour : '';
+ if ($mode == 'colour')
+ {
+ return $username_colour;
+ }
if ($guest_username === false)
{
@@ -1225,64 +1237,66 @@ function get_username_string($mode, $user_id, $username, $username_colour = '',
$username = ($user_id && $user_id != ANONYMOUS) ? $username : ((!empty($guest_username)) ? $guest_username : $user->lang['GUEST']);
}
- // Only show the link if not anonymous
- if ($mode != 'no_profile' && $user_id && $user_id != ANONYMOUS)
+ if ($mode == 'username')
+ {
+ return $username;
+ }
+
+ if (!isset($profile_url_base))
{
- // Do not show the link if the user is already logged in but do not have u_viewprofile permissions (relevant for bots mostly).
- // For all others the link leads to a login page or the profile.
- if ($user->data['user_id'] != ANONYMOUS && !$auth->acl_get('u_viewprofile'))
+ if ($user->data['user_id'] != ANONYMOUS && $auth->acl_get('u_viewprofile'))
{
- $profile_url = '';
+ $profile_url_base = append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile');
}
else
{
- $profile_url = ($custom_profile_url !== false) ? $custom_profile_url . '&u=' . (int) $user_id : append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . (int) $user_id);
+ $profile_url_base = '';
}
}
+
+ // Only show the link if not anonymous
+ if ($mode != 'no_profile' && $user_id && $user_id != ANONYMOUS && $profile_url_base)
+ {
+ $profile_url = (($custom_profile_url !== false) ? $custom_profile_url : $profile_url_base) . '&u=' . (int) $user_id;
+ }
else
{
$profile_url = '';
}
- switch ($mode)
- {
- case 'profile':
- return $profile_url;
- break;
-
- case 'username':
- return $username;
- break;
- case 'colour':
- return $username_colour;
- break;
+ if ($mode == 'profile')
+ {
+ return $profile_url;
+ }
- case 'no_profile':
- case 'full':
- default:
+ // If we arive here mode is 'profile' or 'no_profile'
+ $tpl = '';
+ if (!$profile_url && !$username_colour)
+ {
+ $tpl = '{USERNAME}';
+ }
+ else if (!$profile_url && $username_colour)
+ {
+ $tpl = '{USERNAME}';
+ }
+ else if ($profile_url && !$username_colour)
+ {
+ $tpl = '{USERNAME}';
+ }
+ else if ($profile_url && $username_colour)
+ {
+ $tpl = '{USERNAME}';
+ }
- $tpl = '';
- if (!$profile_url && !$username_colour)
- {
- $tpl = '{USERNAME}';
- }
- else if (!$profile_url && $username_colour)
- {
- $tpl = '{USERNAME}';
- }
- else if ($profile_url && !$username_colour)
- {
- $tpl = '{USERNAME}';
- }
- else if ($profile_url && $username_colour)
- {
- $tpl = '{USERNAME}';
- }
+ $profile = str_replace(array('{PROFILE_URL}', '{USERNAME_COLOUR}', '{USERNAME}'), array($profile_url, $username_colour, $username), $tpl);
- return str_replace(array('{PROFILE_URL}', '{USERNAME_COLOUR}', '{USERNAME}'), array($profile_url, $username_colour, $username), $tpl);
- break;
+ if ($mode != 'no_profile')
+ {
+ $profile_cache[$user_id] = $profile;
}
+
+ return $profile;
}
/**