<?php
/********************************
Author: Tymoteusz `Razor Meister` Bartnik
Contact: [email protected]
Function: client_to_db()
********************************/
class client_to_db
{
private static $name;
private static $cfg;
static public function construct($event_name)
{
global $cfg;
self::$cfg = $cfg[$event_name];
self::$name = $event_name;
}
static public function check_in_database($client)
{
global $query, $query_sql, $event_info;
$client_info = $query->getElement('data', $query->clientInfo($client['clid']));
$cldbid = $client['client_database_id'];
$connections = $client_info['client_totalconnections'];
$clid = $client['clid'];
$nick = htmlentities($client['client_nickname'], ENT_QUOTES, "UTF-8");
$uid = $client['client_unique_identifier'];
$server_groups = $client['client_servergroups'];
$connected_time = $client_info['connection_connected_time'];
$idle_time = $client_info['client_idle_time'];
$result = $query_sql->query("SELECT `client_dbid` FROM `clients` WHERE `client_dbid` = '$cldbid'");
if(($result->num_rows) == 0)
{
$query_sql->query("INSERT INTO `clients`
(`client_dbid`, `client_clid`, `client_nick`, `client_uid`, `server_groups`, `connections`, `connected_time`, `connected_time_record`, `idle_time_record`, `time_spent`, `idle_time_spent`, `week_start`, `week_start_time`, `last_nicks`) VALUES
('$cldbid', '$clid', '$nick', '$uid', '$server_groups', '$connections','$connected_time', '$idle_time', '$connected_time', '$connected_time', '$idle_time', '".date('W')."', 0, '')");
}
else
{
$result = $query_sql->query("SELECT * FROM `clients` WHERE `client_dbid`='$cldbid'")->fetch_assoc();
if($result['connected_time_record'] < $connected_time)
$query_sql->query("UPDATE `clients` SET `connected_time_record`='$connected_time' WHERE `client_dbid`='$cldbid'");
if($result['idle_time_record'] < $idle_time)
$query_sql->query("UPDATE `clients` SET `idle_time_record`='$idle_time' WHERE `client_dbid`='$cldbid'");
if($idle_time >= 1000 * self::$cfg['idle_time'])
{
$idle_time_spent = $result['idle_time_spent'] + $event_info['interval'][self::$name]*1000;
$query_sql->query("UPDATE `clients` SET `idle_time_spent`='$idle_time_spent' WHERE `client_dbid`='$cldbid'");
}
if($result['week_start'] != date('W'))
$query_sql->query("UPDATE `clients` SET `week_start`='".date('W')."',`week_start_time`='".$result['time_spent']."' WHERE `client_dbid`='$cldbid'");
if($result['client_nick'] != $nick)
{
if($result['last_nicks'] != "")
{
$nick_change = json_decode($result['last_nicks'], true);
$nick_change_backup = array();
foreach($nick_change as $time => $value)
$nick_change_backup[] = array('time' => $time, 'value' => $value);
$nick_change = array();
for($i = 0; $i < 10; $i++)
$nick_change[$nick_change_backup[count($nick_change_backup)-10+$i]['time']] = $nick_change_backup[count($nick_change_backup)-10+$i]['value'];
}
else
$nick_change = array();
$nick_change[time()] = $result['client_nick'];
$query_sql->query("UPDATE `clients` SET `last_nicks`='".json_encode($nick_change)."' WHERE `client_dbid`='$cldbid'");
}
$time_spent = $result['time_spent'] + $event_info['interval'][self::$name]*1000;
$query_sql->query("UPDATE `clients` SET `client_clid`='$clid', `client_nick`='$nick', `server_groups`='$server_groups', `connections`='$connections', `connected_time`='$connected_time',`time_spent`='$time_spent' WHERE `client_dbid`='$cldbid'");
}
}
}
?>
Comments
0 B
|👍
/👎