get($nmch)))
return $mcache->get($nmch);
$out = array();
$info = scan::info($sq, $id);
$sql->query('SELECT `unit`, `game`, `name`, `map`, `online`, `players`, `status` FROM `control_servers` WHERE `id`="'.$id.'" LIMIT 1');
$server = $sql->get();
if(!$info['status'])
{
$out['name'] = $server['name'];
$out['status'] = sys::status($server['status'], $server['game'], $server['map']);
$out['online'] = $server['online'];
$out['image'] = '
';
$out['buttons'] = sys::buttons($id, $server['status'], $server['game'], $server['unit']);
if($players_get)
$out['players'] = base64_decode($server['players']);
$mcache->set($nmch, $out, false, $cfg['mcache_server_mon']);
return $out;
}
if($players_get)
$players = scan::info($sq, $id, true);
$out['name'] = htmlspecialchars($info['name']);
$out['status'] = sys::status('working', $server['game'], $info['map']);
$out['online'] = $info['online'];
$out['image'] = '
';
$out['buttons'] = sys::buttons($id, 'working', $server['game'], $server['unit']);
$out['players'] = '';
if($players_get)
{
foreach($players as $index => $player)
{
$html->get($server['game'], 'sections/servers/players');
$html->set('i', $player['i']);
$html->set('name', $player['name']);
$html->set('score', $player['score']);
$html->set('time', $player['time']);
$html->pack('list');
}
$out['players'] = isset($html->arr['list']) ? $html->arr['list'] : '';
}
$sql->query('UPDATE `control_servers` set '
.'`name`="'.$out['name'].'", '
.'`online`="'.$out['online'].'", '
.'`map`="'.$info['map'].'", '
.'`status`="working" WHERE `id`="'.$id.'" LIMIT 1');
if($players_get)
$sql->query('UPDATE `control_servers` set `players`="'.base64_encode($out['players']).'" WHERE `id`="'.$id.'" LIMIT 1');
$mcache->set($nmch, $out, false, $cfg['mcache_server_mon']);
return $out;
}
public static function info($sq, $id, $pl = false)
{
global $sql;
$sql->query('SELECT `address` FROM `control_servers` WHERE `id`="'.$id.'" LIMIT 1');
$server = $sql->get();
list($ip, $port) = explode(':', $server['address']);
$sq->Connect($ip, $port, 1, SourceQuery::SOURCE);
if($pl)
{
$players = $sq->GetPlayers();
$i = 1;
$data = array();
foreach($players as $n => $player)
{
$data[$i]['i'] = $i;
$data[$i]['name'] = $player['Name'] == '' ? 'Подключается' : $player['Name'];
$data[$i]['score'] = $player['Frags'];
$data[$i]['time'] = $player['TimeF'];
$i+=1;
}
return $data;
}
$data = $sq->GetInfo();
$server['name'] = $data['HostName'];
$server['map'] = $data['Map'];
$server['online'] = $data['Players'];
$server['status'] = strlen($server['map']) > 3 ? true : false;
return $server;
}
}
?>