Этот хак лучше всего подходят для людей, которые уже изменении время жизни сессии своей Joomla 1.5. Если вы когда-либо настраивали эти параметры, лучше всего для вас - иметь этот хак, чтобы отображалась правильная статистика пользователей онлайн. Например, если время жизни сессии составляет до 90 минут, онлайн-статистика пользователей и будет дана в течение 90 минут. Обычно мы увеличиваем время жизни сессии, когда хотим продлить login, но - мы все равно хотим иметь реальную статистику онлайн пользователей, может быть, за 10-20 минут. Так что же нам делать?
Поступаем следующим образом.
Нам необходимо внести изменения в исходный код
helper.php в каталоге joomla:
Code:
/modules/mod_whoisonline
Работает это все в Joomla 1.5.x. Мы должны будем изменить два фрагмента файла; первый находится вблизи линии 28, а второй - где-то около 62.
Итак, оригинальный код:
Code:
$query = 'SELECT guest, usertype, client_id' .
' FROM #__session' .
' WHERE client_id = 0';
Меняем на:
Code:
$datenow = date("Y-m-d H:i:s");
$time_string = strtotime($datenow);
// Modified query below to only show members/users active in the last 10 minutes
$extra_time = 600; //example: 10 min x 60 sec
$online_time = ($time_string-$extra_time);
$query = "SELECT a.guest, a.usertype, a.client_id"
."\n FROM #__session AS a"
."\n WHERE a.client_id=0 AND a.time>'$online_time'";
И, далее; оригинальный код:
Code:
$query = 'SELECT DISTINCT a.username' .
' FROM #__session AS a' .
' WHERE client_id = 0' .
' AND a.guest = 0';
Меняем на:
Code:
$datenow = date("Y-m-d H:i:s");
$time_string = strtotime($datenow);
// Modified query below to only show members/users active in the last 10 minutes
$extra_time = 600; //10 min x 60 sec
$online_time = ($time_string-$extra_time);
// New Query below to only show members/users active in the last 10 minutes
$query = "SELECT DISTINCT a.username, a.userid, u.name"
."\n FROM #__session AS a, #__users AS u"
."\n WHERE (a.userid=u.id) AND (a.guest = 0) AND (NOT ( a.usertype is NULL OR a.usertype = '' )) AND a.time>'$online_time'"
."\n ORDER BY ".(($ueConfig['name_format'] > 2) ? "a.username" : "u.name")." ASC";
Это все. Наслаждаемся полученным результатом... :woohoo: