Описание:Хак добавляет статус пользователя на сайте в комментариях, в ПМ, в профиле пользователя и в модальном окне превью профиля(для версий DLE 9.X):
Онлайн или Оффлайн. Низкая нагрузка: 1 запрос раз в 10 минут. (Если хак работает в паре с модулем DT_Online, то нагрузка не увеличивается т.к. запросы будет делать только DT_Online)
Совместимость:8.X - 9.X (Я тестировал на 9.2, работате отлично!)Что исправлено и добавлено: исправлено неудачно выбраное имя тега для вывода статуса в шаблон, т.к. данный тег уже использовался в профиле пользователя(тег {status} заменён на {statuson}),
данная замена вызвана необходимостью подключения хака к профилю и модальному окну профиля пользователя, чтобы не вводить путаницы и использовать один и тот же тег во всех шаблонах,
добавлена возможность вывода статуса в профиле пользователя, в ПМ и в модальном окне превью профиля(для версий DLE 9.X)
Установка1. (Если у Вас установлен DT_Online пропустите этот шаг) Открыть файл
index.phpПосле:
$tpl->set ( '{speedbar}', $tpl->result['speedbar'] );
Добавить:
#**********************************************************
# Статус пользователя [подтвержение активности]
#**********************************************************
$fuser_status = '';
$timer = 10;
$fuser_status = ((time() + ($config['date_adjust']*60)) < ($member_id['lastdate'] + ($timer*60))) ? $request_online=false : $request_online=true;
if ( $is_logged AND $request_online ) $db->query("UPDATE " . USERPREFIX . "_users SET lastdate = '".time()."' WHERE user_id = '$member_id[user_id]'");
#**********************************************************
# Статус пользователя [подтвержение активности]
#**********************************************************
Если необходим вывод статуса пользователя в комментариях выполняем пункты 2,3,4 и 5(условие пункта 1 должно быть выполнено).2. Открыть файл
engine/modules/show.full.phpЗаменить:
reg_date, signature
на:
reg_date, signature, lastdate
3. Открыть файл
engine/classes/comments.class.phpПосле:
else $tpl->set( '{ip}', '' );
#**********************************************************
# Статус пользователя
#**********************************************************
$fuser_status = '';
$timer = 10;
$dtime_1 = ( time() + ($config['date_adjust']*60) - ($timer*60) );
$dtime_2 = ( time() + ($config['date_adjust']*60) + ($timer*60) );
if( $row['lastdate'] > $dtime_1 AND $row['lastdate'] < $dtime_2 ) $tpl->set('{statuson}', "<font color=\"green\">Сейчас на сайте</font>"); else $tpl->set('{statuson}', "<font color=\"red\">Оффлайн</font>");
#**********************************************************
# Статус пользователя
#**********************************************************
4. Открыть файл
engine/modules/lastcomments.phpЗаменить:
is_register, name,
На:
is_register, name, lastdate,
5. Открыть файл
templates/{THEME}/comments.tplВ нужном месте добавить:
{statuson}
Вывод статуса пользователя в комментариях готов.
Если необходим вывод статуса пользователя в профиле выполняем пункты 6 и 7(условие пункта 1 должно быть выполнено).6. Открыть файл
engine/modules/profile.phpПосле:
$tpl->load_template( 'userinfo.tpl' );
while ( $row = $db->get_row( $sql_result ) ) {
$user_found = TRUE;
Добавить:
#**********************************************************
# Статус пользователя
#**********************************************************
$fuser_status = '';
$timer = 10;
$dtime_1 = ( time() + ($config['date_adjust']*60) - ($timer*60) );
$dtime_2 = ( time() + ($config['date_adjust']*60) + ($timer*60) );
if( $row['lastdate'] > $dtime_1 AND $row['lastdate'] < $dtime_2 ) $tpl->set('{statuson}', "<font color=\"green\">Сейчас на сайте</font>"); else $tpl->set('{statuson}', "<font color=\"red\">Оффлайн</font>");
#**********************************************************
# Статус пользователя
#**********************************************************
7. Открыть файл
templates/{THEME}/userinfo.tplВ нужном месте добавить:
{statuson}
Вывод статуса пользователя в профиле готов.
Если необходим вывод статуса пользователя в ПМ выполняем пункты 8 и 9(условие пункта 1 должно быть выполнено).8. Открыть файл
engine/modules/pm.phpЗаменить:
reg_date, signature
На:
reg_date, signature, lastdate
После:
else $tpl->set( '{registration}', '--' );
Добавить:
#**********************************************************
# Статус пользователя
#**********************************************************
$fuser_status = '';
$timer = 10;
$dtime_1 = ( time() + ($config['date_adjust']*60) - ($timer*60) );
$dtime_2 = ( time() + ($config['date_adjust']*60) + ($timer*60) );
if( $row['lastdate'] > $dtime_1 AND $row['lastdate'] < $dtime_2 ) $tpl->set('{statuson}', "<font color=\"green\">Сейчас на сайте</font>"); else $tpl->set('{statuson}', "<font color=\"red\">Оффлайн</font>");
#**********************************************************
# Статус пользователя
#**********************************************************
9. Открыть файл
templates/{THEME}/pm.tplВ нужном месте добавить(между тегами [readpm]...[/readpm]):
{statuson}
Вывод статуса пользователя в ПМ готов.
(Только для версий DLE 9.X) Если необходим вывод статуса пользователя в модальном окне превью профиля выполняем пункты 10 и 11(условие пункта 1 должно быть выполнено).10. Открыть файл
engine/ajax/profile.phpПосле:
$tpl->set( '{rate}', userrating( $row['name'] ) );
Добавить:
#**********************************************************
# Статус пользователя
#**********************************************************
$fuser_status = '';
$timer = 10;
$dtime_1 = ( time() + ($config['date_adjust']*60) - ($timer*60) );
$dtime_2 = ( time() + ($config['date_adjust']*60) + ($timer*60) );
if( $row['lastdate'] > $dtime_1 AND $row['lastdate'] < $dtime_2 ) $tpl->set('{statuson}', "<font color=\"green\">Сейчас на сайте</font>"); else $tpl->set('{statuson}', "<font color=\"red\">Оффлайн</font>");
#**********************************************************
# Статус пользователя
#**********************************************************
11. Открыть файл
templates/{THEME}/profile_popup.tplВ нужном месте добавить:
{statuson}
Вывод статуса пользователя в модальном окне превью профиля готов.
Если Вы всё сделали правильно, модуль должен заработать ;)