SimplePortal
Customization => Custom Coding => Topic started by: zapiy on June 30, 2011, 07:07:23 AM
-
(http://img291.imageshack.us/img291/5333/whosy.jpg)
Is this possible please?
-
I take it this can not be done in the latest release? :'(
-
Something like this?
If it works for you, I can make it like facebook instead of being a vertical list of avatar/user.
<?php
/*
Block: Who's Online with Avatar
Author: Blue @ Simple Portal.net
*/
// Let's grab some database results...
global $smcFunc, $scripturl, $sourcedir, $modSettings, $txt;
$members_result = $smcFunc['db_query']('', '
SELECT l.id_member, m.member_name, m.show_online, m.avatar, g.online_color, g.id_group, g.group_name
FROM {db_prefix}log_online AS l
LEFT JOIN {db_prefix}members AS m ON (m.id_member = l.id_member)
LEFT JOIN {db_prefix}membergroups AS g ON (g.id_group = CASE WHEN m.id_group = 0 THEN m.id_post_group ELSE m.id_group END)
WHERE l.id_member > 0'
);
$members = array();
while ($row_members = $smcFunc['db_fetch_assoc']($members_result))
{
global $memberContext;
loadMemberData($row_members['id_member']);
loadMemberContext($row_members['id_member']);
$members[] = array(
'id' => $row_members['id_member'],
'username' => '<a style="color: ' . $row_members['online_color'] . ';" title="' . $row_members['group_name'] . '" href="' . $scripturl . '?action=profile;u=' . $row_members['id_member'] . '">' . $row_members['member_name'] . '</a>',
'avatar' => $row_members['avatar'] == '' ? $memberContext[$row_members['id_member']]['avatar']['href'] : (stristr($row_members['avatar'], 'http://') ? $row_members['avatar'] : $modSettings['avatar_url'] . '/' . $row_members['avatar']),
'hidden' => empty($row_members['show_online'])
);
}
$smcFunc['db_free_result']($members_result);
$stats = ssi_whosOnline('array');
// Output here we go!
echo sp_embed_image('dot'), ' ', $txt['guests'], ': '. $stats['num_guests'] .'<br />';
echo sp_embed_image('dot'), ' ', allowedTo('who_view') && !empty($modSettings['who_enabled']) ? '<a href="' . $scripturl . '?action=who">' : '', $txt['online_users'], allowedTo('who_view') && !empty($modSettings['who_enabled']) ? '</a>' : '', ':
<br /><div>';
foreach ($members as $member)
echo '<img style="margin-bottom: 2px;" src="' . $member['avatar'] . '" width="30px" height="30px" align="middle" /> ' . $member['username'] . '<br />';
echo '</div>';
?>
-
Works a treat, thanks a lot..
Can i have the facebook code to see which i prefer please?
-
Advanced Who's Online is going to be my next block so this code is in beta since the layout is going to get better but have a look and tell me what you think. Images attached.
<?php
/*
Block: Who's Online with Avatar
Author: Blue @ Simple Portal.net
Version: 0.1beta
*/
// Let's grab some database results...
global $smcFunc, $scripturl, $sourcedir, $modSettings, $txt;
$members_result = $smcFunc['db_query']('', '
SELECT l.id_member, m.member_name, m.show_online, m.avatar, g.online_color, g.id_group, g.group_name
FROM {db_prefix}log_online AS l
LEFT JOIN {db_prefix}members AS m ON (m.id_member = l.id_member)
LEFT JOIN {db_prefix}membergroups AS g ON (g.id_group = CASE WHEN m.id_group = 0 THEN m.id_post_group ELSE m.id_group END)
WHERE l.id_member > 0'
);
$members = array();
while ($row_members = $smcFunc['db_fetch_assoc']($members_result))
{
global $memberContext;
loadMemberData($row_members['id_member']);
loadMemberContext($row_members['id_member']);
$members[] = array(
'id' => $row_members['id_member'],
'username' => $row_members['member_name'],
'profile' => '<a style="color: ' . $row_members['online_color'] . ';" title="' . $row_members['group_name'] . '" href="' . $scripturl . '?action=profile;u=' . $row_members['id_member'] . '">' . $row_members['member_name'] . '</a>',
'link' => $scripturl . '?action=profile;u=' . $row_members['id_member'],
'avatar' => $row_members['avatar'] == '' ? $memberContext[$row_members['id_member']]['avatar']['href'] : (stristr($row_members['avatar'], 'http://') ? $row_members['avatar'] : $modSettings['avatar_url'] . '/' . $row_members['avatar']),
'hidden' => empty($row_members['show_online'])
);
}
$smcFunc['db_free_result']($members_result);
$stats = ssi_whosOnline('array');
// Output here we go!
echo '<div>';
foreach ($members as $member) {
echo '
<a href="' . $member['link'] . '">
<img style="margin-top:2px;margin-left:2px;margin-bottom:2px;" src="' . $member['avatar'] . '" width="35px" height="35px" align="middle" title="' . $member['username'] . '" alt="' . $member['username'] . '" />
</a>';
}
echo '</div><hr />';
echo sp_embed_image('dot'), ' ', $txt['guests'], ': '. $stats['num_guests'] .' | ';
echo sp_embed_image('dot'), ' ', allowedTo('who_view') && !empty($modSettings['who_enabled']) ? '<a href="' . $scripturl . '?action=who">' : '', 'Users', allowedTo('who_view') && !empty($modSettings['who_enabled']) ? '</a>: ' . $stats['num_users'] : '';
?>
-
if the avatar is not selected. No avatar, how shows? Thanks.
-
if the avatar is not selected. No avatar, how shows? Thanks.
So an avatar always shows and the users have no selected avatar I would try and install the default avatar mod.
Blue this looks rather good for those whom don't like long lists of names.
How would the spiders and hidden users be included?
-
if the avatar is not selected. No avatar, how shows? Thanks.
It doesn't show but this is 0.1beta. I'm going to make it perfect through out this week. July 20 I'll post the 1.0 version.
How would the spiders and hidden users be included?
This feature will be included in 1.0 version ;)
-
Careful I might ask for Users in Chat and Arcade too.
>:-D
-
This is a great block Blue.
-
Another great BB (= Blues`s Block) !
Is there a way, to make it compatible with the "User-Online-Today"-Mod?
-
Careful I might ask for Users in Chat and Arcade too.
>:-D
Ahahah! Maybe for 1.1. We never know :P
Another great BB (= Bues`s Block) !
Is there a way, to make it compatible with the "User-Online-Today"-Mod?
1º Thank You :P
2º Maybe for 1.1 too. First I need to perfect the code. After that, I'll start to add features :)
-
I look forward to your release of this block Blue :D
-
I'm going to see if I can finish it today. If not I'll post it tomorrow.