Gosudar
Спасибо, но мне не для форума надо, а для портала в который интегрирован форум.
Вот такая у меня получилась функция
Код: Выделить всё
<?
$content="";
$DB->query( "SELECT username, user_id, user_lastvisit, user_timezone, session_time
FROM phpbb_users LEFT JOIN phpbb_sessions ON phpbb_users.user_id=phpbb_sessions.session_user_id
WHERE user_id<>-1 ORDER BY session_time DESC, user_lastvisit DESC LIMIT 5" );
$content .= " <tr>
<td width=\"100%\">
<table border=\"0\" width=\"100%\" cellpadding=\"1\" cellspacing=\"1\">";
while ( $row = $DB->fetch_row() )
{
$u_name = $row['username'];
$last_seen = gmdate("H:i:s", (time() - max($row['user_lastvisit'],$row['session_time'])));
$content .=" <tr>
<td align=\"left\" class=\"tdblock\">" .
$u_name .
"</td>
<td align=\"left\" class=\"tdblock\">" .
$last_seen .
"</td>
</tr>";
}
$content .=" </table>
</td>
</tr>";
?>
Но только не хорошо то, что когда истекает время сессии запись о ней удаляется из базы. И, соответственно, получается что у нас время последней активности пользователя приравнивается к времени его последнего логона. Как бы это обойти?
Проблема со временем решилась банальным использованием gmdate(), вместо date(). =)
Всем спасибо.
Добавлено спустя 11 часов 28 минут 8 секунд:
Небольшое дополнение. Чтобы не показывались пользователи которые скрывают свое присутствие на форуме, в запрос в условия выбора надо добавить user_allow_viewonline=1.
Вот так например:
$DB->query( "SELECT username, user_id, user_lastvisit, user_timezone, session_time
FROM phpbb_users LEFT JOIN phpbb_sessions ON phpbb_users.user_id=phpbb_sessions.session_user_id
WHERE (user_id<>-1 AND user_allow_viewonline=1) GROUP BY session_time, user_lastvisit ORDER BY session_time DESC, user_lastvisit DESC LIMIT 5" );
Может кому-то пригодится.
З.Ы. Этот модуль, приведенный выше, написан под MKPortal 1.1.1.
Небо инопланетянам.