17 авг 2011
Хак "Статус пользователя на сайте"
klim_kr93 Категория: DATALIFE ENGINE » Модули
У нас вы можете скачать бесплатно Хак "Статус пользователя на сайте"

Данный материал предоставлен сайтом Skripter.info исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Хак "Статус пользователя на сайте"


Описание:
Хак добавляет статус пользователя на сайте в комментариях, в ПМ, в профиле пользователя и в модальном окне превью профиля(для версий 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}


Вывод статуса пользователя в модальном окне превью профиля готов.

Если Вы всё сделали правильно, модуль должен заработать ;)









Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
sany_gapasyk | 17 августа 2011 21:12
  • Группа: Посетители |
  • Комментарий: 1 (ссылка)

ха, на скрине статус : 3

WebMaster | 17 августа 2011 21:20
  • Группа: Посетители |
  • Комментарий: 2 (ссылка)

Я думал мне пс пришло

AfroJack | 17 августа 2011 21:31
  • Группа: Посетители |
  • Комментарий: 3 (ссылка)

спасибо берём

igor_o4ek | 17 августа 2011 21:34
  • Группа: Посетители |
  • Комментарий: 4 (ссылка)

WebMaster,
я тож )

shtorm | 18 августа 2011 23:44
  • Группа: Посетители |
  • Комментарий: 5 (ссылка)

Спс, пашет.

frenkx | 17 ноября 2011 19:09
  • Группа: Посетители |
  • Комментарий: 6 (ссылка)

Спасибо хороший хаКК!

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.