"Yandex", "#.*(google|accoona|gsa-crawler).*#si" => "Google", "#.*rambler.*#si" => "Rambler", '#.*mail.ru.*#si' => "Mail.RU", "#.*aport.*#si" => "Aport", "#.*TurtleScanner.*#si" => "Turtle", "#.*msnbot.*#si" => "MSN", "#.*yahoo.*#si" => "Yahoo", "#.*scooter.*#si" => "Altavista", "#.*lycos.*#si" => "Lycos.com", "#.*libwww.*#si" => "Punto", "#.*(is_archiver|archive_org).*#si" => "Archive.org", "#.*(W3C_Validator|W3C_CSS_Validator).*#si" => "W3C" ); $result = preg_replace(array_keys($remap_agents), $remap_agents, $useragent); $r_or = $result == $useragent ? $r_or : $result; return $r_or; } //Проверяем пользователи и обновляем онлайн статус if(!$member_id['user_id']){ $onl_botname = online_robots($onl_useragent); }elseif( ($member_id['lastdate'] + $online_time) < $_TIME ){ $db->query("UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET lastdate='{$_TIME}', logged_ip='{$ip}' WHERE user_id='{$member_id['user_id']}'"); } //if (isset($_COOKIE['lastusername'])) $lastusername = $_COOKIE['lastusername']; else $lastusername = ""; if (isset($_COOKIE['dle_onl_session'])) $onl_session = $_COOKIE['dle_onl_session']; else $onl_session = session_id(); # Удаляем лишних пользователей из списка в БД $db->query("DELETE FROM " . PREFIX . "_online WHERE lastdate < $datecut"); # Определяем количество пользователей по критерию и в зависимости от результата, выполняем запрос обноваления или создания записи о пользователе $onl_query["search_us"]="SELECT COUNT(*) as count FROM " . PREFIX . "_online WHERE session='{$onl_session}'"; $onl_count_user = $db->super_query($onl_query["search_us"]); if($onl_count_user['count']) { $onl_query["update_us"]="UPDATE " . PREFIX . "_online SET uid=".intval($member_id['user_id']).", lastdate={$_TIME}, useragent='{$onl_useragent}', ip='{$ip}' WHERE session='{$onl_session}'"; $db->query($onl_query["update_us"]); } else { $onl_query["create_us"]="INSERT INTO " . PREFIX . "_online (uid, session, lastdate, useragent, ip) VALUES(".intval($member_id['user_id']).", '{$onl_session}', {$_TIME}, '{$onl_useragent}', '{$ip}')"; $db->query($onl_query["create_us"]); setcookie("dle_onl_session",session_id(), $_TIME+3600*24*365, "/", $domain); } # Выбираем пользователей из БД $sql = "SELECT user.name AS user_name, user.user_group, online.uid, online.useragent, online.session, online.ip, online.lastdate FROM " . PREFIX . "_online AS online LEFT JOIN " . PREFIX . "_users AS user ON(user.user_id = online.uid) WHERE online.lastdate > $datecut ORDER BY name ASC"; $onl_userlist_q = $db->query($sql); # Обработка полученных данных из БД $onl_guests=$onl_users=$onl_robots=$onl_lusers=$onl_lrobots=0; while($onl_userlist = $db->get_array($onl_userlist_q)) { if($onl_userlist['uid']==false) { $current_robot = online_robots($onl_userlist['useragent']); if ($current_robot!="") { if ($onl_onlinebots[$current_robot]['lastdate']<$onl_userlist['lastdate']) { $onl_onlinebots[$current_robot]['name']=$current_robot; $onl_onlinebots[$current_robot]['lastdate']=$onl_userlist['lastdate']; $onl_onlinebots[$current_robot]['ip']=$onl_userlist['ip']; } } else $onl_guests++; } else { if ($onl_onlineusers[$onl_userlist['uid']]['lastdate']<$onl_userlist['lastdate']) { $onl_onlineusers[$onl_userlist['uid']]['name']=$onl_userlist['user_name']; $onl_onlineusers[$onl_userlist['uid']]['lastdate']=$onl_userlist['lastdate']; $onl_onlineusers[$onl_userlist['uid']]['group']=$onl_userlist['user_group']; $onl_onlineusers[$onl_userlist['uid']]['useragent']=$onl_userlist['useragent']; $onl_onlineusers[$onl_userlist['uid']]['ip']=$onl_userlist['ip']; } } } if (count($onl_onlineusers)) { foreach ($onl_onlineusers as $uid => $value) { $onl_users++; $profile_url = $config['http_home_url']. "user/" . urlencode( $onl_onlineusers[$uid]['name'] ) . "/"; if ($user_group[$onl_onlineusers[$uid]['group']]['colour']){ $group_span = $user_group[$onl_onlineusers[$uid]['group']]['colour']; $onl_ulink[] = "\n".$onl_onlineusers[$uid]['name'].""; }else{ $onl_ulink[] = "\n".$onl_onlineusers[$uid]['name'].""; } } } //unset ($onl_userlist_q, $onl_onlineusers); $onl_userlist_q=$onl_onlineusers=array(); if (count($onl_onlinebots)) { foreach ($onl_onlinebots as $name => $value) { $onl_robots++; $onl_blink[] = ''.$name.''; } } //unset($onl_onlinebots); $onl_onlinebots=array(); $tpl->load_template('online.tpl'); # Составление списка пользователей if (count($onl_ulink)==0) { $onl_userlist .= "Отсутствуют"; } for($i=0;$iset('{users}',$onl_users); $tpl->set('{guest}',$onl_guests); $tpl->set('{robots}',$onl_robots); $tpl->set('{all}',($onl_users+$onl_guests+$onl_robots)); $tpl->set('{userlist}',$userlist); $tpl->set('{botlist}',$onl_botlist); //unset($onl_userlist, $onl_botlist); $onl_userlist=$onl_botlist=""; $tpl->compile('online'); $tpl->clear(); ?>