- Автор темы
- #1
- Title: Статус пользователя на сайте
- Authors: Fed
- Version: v.2.0 Fixed
- Date: 18.07.2009
- Desc: из названия и так ясно, что делает хак, отображает статус пользователя онлайн/оффлайн в комментариях и профиле
- Other: ввиду того что хак разработан был очень давно и не до конца исправлены баги, то пришлось адаптировать его под DLE 8.0 собственоручно, поэтому в конце версии я сделал приписку Fixed.
Инструкция по установке:
Код:
####################################################################
#### Статус пользователя на сайте v.2.0 (with admin) [Fed's] #####
####################################################################
- открываем ./engine/inc/options.php
находим такой код (примерно 865-ая строка):
--------------- код ----------------
showRow($lang['opt_sys_ud'], $lang['opt_sys_udd'], "<input class=edit type=text style=\"text-align: center;\" name='save_con[max_users_day]' value=\"{$config['max_users_day']}\" size=10>");
---------------/код ----------------
НИЖЕ вставляем:
--------------- код ----------------
showRow("Пользователь OnLine/OffLine", "Время в минутах, в течении которого пользователь будет иметь статус OnLine", "<input class=edit type=text style=\"text-align: center;\" name='save_con[user_online]' value=\"{$config['user_online']}\" size=10>");
showRow("Статус OnLine", "Надпись или html-код картинки для пользователя имеющего статус OnLine. Например, \"есть с нами\", или \"ОнЛайн\"", "<input class=edit type=text style=\"text-align: center;\" name='save_con[status_user_online]' value=\"{$config['status_user_online']}\" size=40>");
showRow("Статус OffLine", "Надпись или html-код картинки для пользователя имеющего статус OffLine. Например, \"нету с нами\", или \"ОффЛайн\"", "<input class=edit type=text style=\"text-align: center;\" name='save_con[status_user_offline]' value=\"{$config['status_user_offline']}\" size=40>");
---------------/код ----------------
находим такой код:
--------------- код ----------------
$name != "offline_reason"
---------------/код ----------------
заменяем его на:
--------------- код ----------------
$name != "offline_reason" AND $name != "status_user_offline" AND $name != "status_user_online"
---------------/код ----------------
####################################################
####################################################
- открываем ./engine/modules/sitelogin.php
находим такой код:
--------------- код ----------------
if (($member_id['lastdate'] + (3600*4)) < $_TIME) {
$db->query("UPDATE LOW_PRIORITY " . USERPREFIX . "_users set lastdate='{$_TIME}' where user_id='$member_id[user_id]'");
}
---------------/код ----------------
заменяем его на:
--------------- код ----------------
if (($member_id['lastdate']+$config['user_online']-1) <= $_TIME) {
$db->query("UPDATE LOW_PRIORITY " . USERPREFIX . "_users set lastdate='{$_TIME}' where user_id='$member_id[user_id]'");
}
---------------/код ----------------
--------------- код ----------------
if( ! $is_logged ) {
$member_id = array ();
set_cookie( "dle_user_id", "", 0 );
set_cookie( "dle_password", "", 0 );
set_cookie( "dle_hash", "", 0 );
$_SESSION['dle_user_id'] = 0;
$_SESSION['dle_password'] = "";
}
?>
---------------/код ----------------
НАД ним вставляем:
--------------- код ----------------
if (($member_id['lastdate']+$config['user_online']-1) <= $_TIME) {
$db->query("UPDATE LOW_PRIORITY " . USERPREFIX . "_users set lastdate='{$_TIME}' where user_id='$member_id[user_id]'");
}
---------------/код ----------------
по желанию одного из пользователей сделал фишку:
если пользователь вышел из аккаунта - чтобы писало оффлайн (не ждать то время, указаное в админке)
после
--------------- код ----------------
if (isset($_REQUEST['action']) AND $_REQUEST['action'] == "logout") {
---------------/код ----------------
ВСТАВИТЬ:
--------------- код ----------------
$member_id = $db->super_query("SELECT * FROM " . USERPREFIX . "_users where user_id='{$_SESSION['dle_user_id']}' and password='".md5($_SESSION['dle_password'])."'");
$nnt = $_TIME - (60*$config['user_online']);
$db->query("UPDATE " . USERPREFIX . "_users SET lastdate='$nnt' where user_id='{$member_id['user_id']}'");
---------------/код ----------------
####################################################
####################################################
- открываем ./engine/modules/show.full.php
- находим такой код:
--------------- код ----------------
reg_date, signature, foto,
---------------/код ----------------
- заменяем его на:
--------------- код ----------------
lastdate, reg_date, signature, foto,
---------------/код ----------------
- находим такой код:
--------------- код ----------------
if ($row['is_register'] AND $row['icq']) $tpl->set('{icq}', stripslashes($row['icq']));
else $tpl->set('{icq}', '--');
---------------/код ----------------
- ПОД ним вставляем:
--------------- код ----------------
$user_status = "";
$user_status = (time()+($config['date_adjust']*60)) <= ($row['lastdate']+($config['user_online']*60)) ? stripslashes($config['status_user_online']) : stripslashes($config['status_user_offline']);
$tpl->set('{user_status}',$user_status);
---------------/код ----------------
- открываем ./engine/modules/lastcomments.php
- находим такой код:
--------------- код ----------------
reg_date, signature, foto,
---------------/код ----------------
- заменяем его на:
--------------- код ----------------
lastdate, reg_date, signature, foto,
---------------/код ----------------
- находим такой код:
--------------- код ----------------
if ($row['is_register'] AND $row['icq']) $tpl->set('{icq}', stripslashes($row['icq']));
else $tpl->set('{icq}', '--');
---------------/код ----------------
- ПОД ним вставляем:
--------------- код ----------------
$user_status = "";
$user_status = (time()+($config['date_adjust']*60)) <= ($row['lastdate']+($config['user_online']*60)) ? stripslashes($config['status_user_online']) : stripslashes($config['status_user_offline']);
$tpl->set('{user_status}',$user_status);
---------------/код ----------------
####################################################
####################################################
- открываем ./engine/ajax/addcomments.php
- находим такой код:
--------------- код ----------------
reg_date, signature, foto,
---------------/код ----------------
- заменяем его на:
--------------- код ----------------
lastdate, reg_date, signature, foto,
---------------/код ----------------
- находим такой код:
--------------- код ----------------
if ($row['is_register'] AND $row['icq']) $tpl->set('{icq}', stripslashes($row['icq']));
else $tpl->set('{icq}', '--');
---------------/код ----------------
- ПОД ним вставляем:
--------------- код ----------------
$tpl->set('{user_status}',stripslashes($config['status_user_online']));
---------------/код ----------------
- открываем ./engine/modules/profile.php
- находим такой код:
--------------- код ----------------
$tpl->set('{news_num}', $row['news_num']);
---------------/код ----------------
- ПОД ним вставляем:
--------------- код ----------------
$user_status = (time()+($config['date_adjust']*60)) <= ($row['lastdate']+($config['user_online']*60)) ? stripslashes($config['status_user_online']) : stripslashes($config['status_user_offline']);
$tpl->set('{user_status}',$user_status);
---------------/код ----------------
###################################################
###################################################
ЕСЛИ УСТАНОВЛЕННА ГАЛЛЕРЕЯ TWS GALLERY 4.*
- открываем ./engine/gallery/classes/comments.php
- находим такой код (2 раза он встречается):
--------------- код ----------------
reg_date, signature, foto,
---------------/код ----------------
- заменяем ВСЕ (2 раза) на:
--------------- код ----------------
lastdate, reg_date, signature, foto,
---------------/код ----------------
- находим такой код:
--------------- код ----------------
if ($row['is_register'] AND $row['icq']) $tpl->set('{icq}', stripslashes($row['icq']));
else $tpl->set('{icq}', '--');
---------------/код ----------------
- ПОД ним вставляем:
--------------- код ----------------
$user_status = (time()+($config['date_adjust']*60)) <= ($row['lastdate']+($config['user_online']*60)) ? stripslashes($config['status_user_online']) : stripslashes($config['status_user_offline']);
$tpl->set('{user_status}',$user_status);
---------------/код ----------------
- открываем ./templates/{THEME_NAME}/comments.tpl, ./templates/{THEME_NAME}/userinfo.tpl, ./templates/{THEME_NAME}/gallery/comments.tpl
- в нужное место вставляем:
{user_status}