Получение списка пользователей сайта, авторизованных OnLine. В массиве $aActiveSiteUsers будет содержаться список пользователей, ключ - идентификатор пользователя сайта, значение - время последней активности.
Выборка ведется для всех сайтов системы, отделение пользователей только текущего сайта можно реализовать после получения информации о пользователе и проверки принадлежности его определенному сайту.
<?php
$DataBase = & singleton('DataBase');
$result = $DataBase->select("SELECT * FROM `session_table`");
function unserializesession($data)
{
$vars=preg_split('/([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff^|]*)\|/', $data, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
for($i=0; isset($vars[$i]); $i++)
{
$result[$vars[$i++]] = unserialize($vars[$i]);
}
return $result;
}
// Время, в течение которого пользователь должен был быть активен
$time_activity = 60 * 60 * 24;
$aActiveSiteUsers = array();
while($row = mysql_fetch_assoc($result))
{
$value = unserializesession($row['session_value']);
if (isset($value['site_user_id']) && $row['session_expire'] > time() - $time_activity)
{
$aActiveSiteUsers[$value['site_user_id']] = $row['session_expire'];
}
}
print_r($aActiveSiteUsers);
?>