Du kannst die obtain_users_online_string funktion mit dieser ersetzen wenn du willst, habs allerdings nicht besonders getestet und weiss nicht wie es mit der server load aussieht wenn du sehr viele besucher hast...
damit hast du allerdings ueberall avatare, nicht nur auf der index seite sonder auch z.b. in der forum seite.
Code: Alles auswählen
function obtain_users_online_string($online_users, $forum_id = 0)
{
global $config, $db, $user, $auth;
$user_online_link = $online_userlist = $user_online_avatar = '';
if (sizeof($online_users['online_users']))
{
$sql = 'SELECT username, username_clean, user_id, user_type, user_allow_viewonline, user_colour, user_avatar, user_avatar_type, user_avatar_width, user_avatar_height
FROM ' . USERS_TABLE . '
WHERE ' . $db->sql_in_set('user_id', $online_users['online_users']) . '
ORDER BY username_clean ASC';
$result = $db->sql_query($sql);
$max_avatar_online_users = $avatar_width_online_users = $avatar_height_online_users = '';
while ($row = $db->sql_fetchrow($result))
{
// User is logged in and therefore not a guest
if ($row['user_id'] != ANONYMOUS)
{
$max_avatar_online_users = 40; // here you can change the max-width you would like to have the avatars displayed, change to 0 to use default
if ( !empty($row['user_avatar']) )
{
if ( $max_avatar_online_users )
{
if ( $row['user_avatar_width'] >= $row['user_avatar_height'] )
{
$avatar_width_online_users = ( $row['user_avatar_width'] > $max_avatar_online_users ) ? $max_avatar_online_users : $row['user_avatar_width'] ;
$avatar_height_online_users = ( $avatar_width_online_users == $max_avatar_online_users ) ? round($max_avatar_online_users / $row['user_avatar_width'] * $row['user_avatar_height']) : $row['user_avatar_height'] ;
}
else
{
$avatar_height_online_users = ( $row['user_avatar_height'] > $max_avatar_online_users ) ? $max_avatar_online_users : $row['user_avatar_height'] ;
$avatar_width_online_users = ( $avatar_height_online_users == $max_avatar_online_users ) ? round($max_avatar_online_users / $row['user_avatar_height'] * $row['user_avatar_width']) : $row['user_avatar_width'] ;
}
}
else
{
$avatar_height_online_users = $row['user_avatar_height'];
$avatar_width_online_users = $row['user_avatar_width'];
}
}
if (isset($online_users['hidden_users'][$row['user_id']]))
{
// $row['username'] = '<em>' . $row['username'] . '</em>';
$row['username'] = $row['username'] . ' [hidden]';
}
global $phpbb_root_path, $phpEx;
if (!isset($online_users['hidden_users'][$row['user_id']]) || $auth->acl_get('u_viewonline'))
{
if ( !function_exists('get_user_avatar'))
{
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
}
$user_online_link = get_username_string(($row['user_type'] <> USER_IGNORE) ? 'profile' : 'no_profile', $row['user_id'], $row['username'], $row['user_colour']);
$user_online_avatar = (empty($row['user_avatar']) || $row['user_type'] == USER_IGNORE ) ? '<img src="' . $phpbb_root_path . 'styles/' . $user->theme['imageset_path'] . '/theme/images/no_avatar.gif" height="' . $max_avatar_online_users . '" width="' . $max_avatar_online_users . '" title="'. $row['username'] . '" alt="" />' : get_user_avatar($row['user_avatar'],$row['user_avatar_type'], $avatar_width_online_users, $avatar_height_online_users, $row['username']);
$online_userlist .= ($online_userlist != '') ? ' <a href="' . $user_online_link . '" title = "'. $row['username'] . '">' . $user_online_avatar . '</a>' : '<a href="' . $user_online_link . '" title = "'. $row['username'] . '">' . $user_online_avatar . '</a>';
}
}
}
$db->sql_freeresult($result);
}
if (!$online_userlist)
{
$online_userlist = $user->lang['NO_ONLINE_USERS'];
}
if ($forum_id === 0)
{
$online_userlist = $user->lang['REGISTERED_USERS'] . ' ' . $online_userlist;
}
else if ($config['load_online_guests'])
{
$l_online = ($online_users['guests_online'] === 1) ? $user->lang['BROWSING_FORUM_GUEST'] : $user->lang['BROWSING_FORUM_GUESTS'];
$online_userlist = sprintf($l_online, $online_userlist, $online_users['guests_online']);
}
else
{
$online_userlist = sprintf($user->lang['BROWSING_FORUM'], $online_userlist);
}
// Build online listing
$vars_online = array(
'ONLINE' => array('total_online', 'l_t_user_s', 0),
'REG' => array('visible_online', 'l_r_user_s', !$config['load_online_guests']),
'HIDDEN' => array('hidden_online', 'l_h_user_s', $config['load_online_guests']),
'GUEST' => array('guests_online', 'l_g_user_s', 0)
);
foreach ($vars_online as $l_prefix => $var_ary)
{
if ($var_ary[2])
{
$l_suffix = '_AND';
}
else
{
$l_suffix = '';
}
switch ($online_users[$var_ary[0]])
{
case 0:
${$var_ary[1]} = $user->lang[$l_prefix . '_USERS_ZERO_TOTAL' . $l_suffix];
break;
case 1:
${$var_ary[1]} = $user->lang[$l_prefix . '_USER_TOTAL' . $l_suffix];
break;
default:
${$var_ary[1]} = $user->lang[$l_prefix . '_USERS_TOTAL' . $l_suffix];
break;
}
}
unset($vars_online);
$l_online_users = sprintf($l_t_user_s, $online_users['total_online']);
$l_online_users .= sprintf($l_r_user_s, $online_users['visible_online']);
$l_online_users .= sprintf($l_h_user_s, $online_users['hidden_online']);
if ($config['load_online_guests'])
{
$l_online_users .= sprintf($l_g_user_s, $online_users['guests_online']);
}
return array(
'online_userlist' => $online_userlist,
'l_online_users' => $l_online_users,
);
}
p.s. ab 3.0.6 wird die funktion etwas anders aussehen und es waere wahrscheinlich besser die originale version wieder reinzupacken bevor du upgradest...
edit: @4seven, sorry, lass dich bitte nicht hiervon abzubringen aufzuhalten, deine version ist mit sicherheit besser getested als meine...