<?php
/*
 * CoD4X Serverlist Monitoring based on serverstatus.xml
 * Made by UnCool (CoD4Narod.RU)
 */

define('DIR', __DIR__ . "/");

include DIR . 'config.php';
include DIR . 'inc/functions.php';

error_reporting(E_ALL);
ini_set('display_errors', '1');

$baseURL = str_replace($_SERVER["DOCUMENT_ROOT"], "", DIR);
?>

<div class="c4n-mon">
	<link rel="stylesheet" href="<?= $baseURL ?>css/style.css">

	<script>
		function showPlayers(server) {
			var players = document.getElementById('c4n-mon__playerslist_' + server);
			players.style.visibility = "visible";
			players.style.opacity = "1";
			window.onclick = function (event) {
				if (event.target == players) {
					players.style.visibility = "hidden";
					players.style.opacity = "0";
				}
			}
		}
	</script>

	<table class="c4n-mon__servers">
		<tbody>
		<?php

		$d['players_total'] = 0;
		$d['players_max'] = 0;

		foreach ($servers as $server_id => $server) {
			clearstatcache();
			$xml = simplexml_load_file($server . 'serverstatus.xml');
			$d['players'] = $xml->Clients[0]['Total'][0];
			$d['players_total'] += $d['players'];
			$d['ip'] = $ip[$server_id];
			$d['time'] = $xml['TimeStamp'];

			foreach ($xml->Game->Data as $data) {
				switch ($data['Name']) {
					case 'sv_hostname':
						$d['sv_hostname'] = (string)$data['Value'];
						$d['servers'][$server_id] = $d['sv_hostname'];
						break;
					case 'mapname':
						$d['mapname'] = (string)$data['Value'];
						break;
					case 'uptime':
						$d['uptime'] = (string)$data['Value'];
						break;
					case 'g_mapStartTime':
						$time = date_create((string)$data['Value']);
						$now = date_create();
						$d['map_time'] = $now->diff($time)->i . ':' . sprintf("%02d", $now->diff($time)->s);
						break;
					case 'sv_maxclients':
						$d['sv_maxclients'] = (int)$data['Value'];
						break;
					case 'sv_privateClients':
						$d['sv_privateClients'] = (int)$data['Value'];
						break;
				}
			}

			$d['players_max'] = $d['players_max'] + $d['sv_maxclients'] - $d['sv_privateClients'];

			foreach ($xml->Clients->Client as $client) {
				$cid = (int)$client['CID'];
				$team = (int)$client['Team'];

				switch ((string)$client['TeamName']) {
					case 'Connecting...':
						$team = 4;
						break;
					case 'Loading...':
						$team = 5;
						break;
					case 'Free':
						$team = 6;
						break;
				}
				if (array_key_exists((string)$client['TeamName'], $lang))
					$d['teams'][$server_id][$team] = $lang[(string)$client['TeamName']];
				else
					$d['teams'][$server_id][$team] = uncolorize(colorize((string)$client['TeamName']));

				$d['clients'][$server_id][$team][$cid]['name'] = (string)$client['ColorName'];
				$d['clients'][$server_id][$team][$cid]['score'] = (string)$client['Score'];
				$d['clients'][$server_id][$team][$cid]['kills'] = (string)$client['Kills'];
				$d['clients'][$server_id][$team][$cid]['deaths'] = (string)$client['Deaths'];
				$d['clients'][$server_id][$team][$cid]['assists'] = (string)$client['Assists'];
				$d['clients'][$server_id][$team][$cid]['ping'] = (string)$client['Ping'];
				$d['clients'][$server_id][$team][$cid]['rank'] = (string)$client['rank'];
			}

			$d['percent'] = (int)(($d['players'] / ($d['sv_maxclients'] - $d['sv_privateClients'])) * 100);

			if ($d['percent'] < 20) {
				$d['percent_color'] = '#3498DB';
			} elseif ($d['percent'] >= 20 AND $d['percent'] < 40) {
				$d['percent_color'] = '#16CC35';
			} elseif ($d['percent'] >= 40 AND $d['percent'] < 60) {
				$d['percent_color'] = '#B3CA1C';
			} elseif ($d['percent'] >= 60 AND $d['percent'] < 80) {
				$d['percent_color'] = '#F1C40F';
			} elseif ($d['percent'] >= 80 AND $d['percent'] < 100) {
				$d['percent_color'] = '#dcb20b';
			} else {
				$d['percent'] = 100;
				$d['percent_color'] = '#E74C3C';
			}
			?>

			<tr>
				<td>
					<span title="Online for <?= $d['uptime'] ?>" class="c4n-mon__badge<?= ((time() - $d['time']) < 20) ? ' c4n-mon__badge_positive' : '' ?>"></span>

				</td>

				<td class="c4n-mon__hostname">
					<?= uncolorize(colorize($d['sv_hostname'])) ?>
				</td>
				<td title="<?= $lang['connect_to'] . " " . uncolorize($d['sv_hostname']) ?>" class="c4n-mon__ip">
					<a href="cod4://<?= $d['ip'] ?>"><?= $d['ip'] ?></a></td>
				<td class="c4n-mon__map <?= $d['mapname'] ?>"><?= $d['mapname'] ?></td>
				<td title="<?= $lang['round_time'] ?>"><?= $d['map_time'] ?></td>
				<td <?= 'title="' . $lang['oper_playerlist'] . " " . uncolorize($d['sv_hostname']) . '"' ?>>
					<div class="c4n-mon__players-graph <?= ($d['players'] < 1) ? ' no-players' : '' ?>">
						<div class="c4n-mon__players-progress" style="background-color:<?= $d['percent_color'] ?>;width:<?= $d['percent'] ?>%">
							<div <?= ($d['players'] > 0 ? 'onclick="showPlayers(' . $server_id . ')"' : '') ?> class="c4n-mon__players-count"><?= $d['players'] . '/' . ($d['sv_maxclients'] - $d['sv_privateClients']) ?></div>
						</div>
					</div>

				</td>
				<td class="c4n-mon__icons">
					<?php if (isset($linkSS[$server_id])) { ?>
						<i title="<?= $lang['link_ss'] ?>" class="c4n-mon__icon">
							<a href="<?= $linkSS[$server_id] ?>" target="_blank"><img src="<?= $baseURL ?>img/ss.svg"></a>
						</i>
					<?php } ?>
					<?php if (isset($linkSTAT[$server_id])) { ?>
						<i title="<?= $lang['link_stats'] ?>" class="c4n-mon__icon">
							<a href="<?= $linkSTAT[$server_id] ?>" target="_blank"><img src="<?= $baseURL ?>img/stats.svg"></a>
						</i>
					<?php } ?>
					<?php if (isset($linkCHAT[$server_id])) { ?>
						<i title="<?= $lang['link_chat'] ?>" class="c4n-mon__icon">
							<a href="<?= $linkCHAT[$server_id] ?>" target="_blank"><img src="<?= $baseURL ?>img/chat.svg"></a>
						</i>
					<?php } ?>

					<i title="<?= $lang['link_gt'] ?>" class="c4n-mon__icon">
						<a href="http://www.gametracker.com/server_info/<?= $d['ip'] ?>" target="_blank"><img src="<?= $baseURL ?>img/gt.svg"></a>
					</i>

					<?php if (isset($linkDONATE[$server_id])) { ?>
						<i title="<?= $lang['link_donate'] ?>" class="c4n-mon__icon">
							<a href="<?= $linkDONATE[$server_id] ?>" target="_blank"><img src="<?= $baseURL ?>img/donate.svg"></a>
						</i>
					<?php } ?>
				</td>
			</tr>

		<?php }

		$max = explode(";", file_get_contents(DIR . 'inc/max'));
		$players_record = (int)$max[0];
		$players_record_date = $max[1];

		if ($players_record < $d['players_total']) {
			file_put_contents(DIR . 'inc/max', $d['players_total'] . ";" . date('d.m.y H:i'));
			$players_record = $d['players_total'];
			$players_record_date = date('d.m.y H:i');
		}
		?>

		</tbody>

	</table>
	<div class="c4n-mon__total">
		<div class="c4n-mon__total-progress" style="width: <?= (int)($d['players_total'] / $d['players_max'] * 100) ?>%; background-color:#2ecc71;"></div>
		<div class="c4n-mon__total-label"><?= $d['players_total'] . '/' . $d['players_max'] ?></div>
		<span class="c4n-mon__record">
				<?= $lang['record'] . ": " . $players_record . ' (' . $players_record_date . ')' ?>
		</span>
	</div>

	<?php
	if (isset($d['clients']))
		foreach ($d['clients'] as $server_id => $server) { ?>

			<div id="c4n-mon__playerslist_<?= $server_id ?>" class="c4n-mon__playerslist">
				<div class="c4n-mon__playerscontent">

					<h2><?= uncolorize(colorize($d['servers'][$server_id])) ?></h2>

					<?php ksort($server);
					foreach ($server as $team => $players) { ?>

						<div class="c4n-mon__table_group">
							<table class="c4n-mon__players">
								<caption><?= $d['teams'][$server_id][$team] ?></caption>
								<thead>
								<tr>
									<th><?= $lang['player'] ?></th>
									<th><?= $lang['score'] ?></th>
									<th><?= $lang['kills'] ?></th>
									<th><?= $lang['deaths'] ?></th>
									<th><?= $lang['kd'] ?></th>
									<th><?= $lang['assists'] ?></th>
									<th><?= $lang['ping'] ?></th>
								</tr>
								</thead>
								<tbody>

								<?php usort($players, 'sort_by_score');
								foreach ($players as $player) {
									$rank_text = get_rank_text($player['rank']); ?>

									<tr>
										<td class="c4n-mon__playername">
				<span class="c4n-mon__rank-wrapper" title="<?= $rank_text ?>">
					<span class="c4n-mon__rank-img-wrapper"><img class="c4n-mon__rank" src="<?= $baseURL ?>img/ranks/<?= get_prestige_icon($player['rank']) ?>.png"></span>
					<sub class="c4n-mon__rank_number"><?= $player['rank'] ?></sub>
				</span>
											<span>	<?= $player['name'] ?></a></span>

										</td>
										<td>
											<?= $player['score'] ?>
										</td>

										<td>
											<?= $player['kills'] ?>
										</td>
										<td>
											<?= $player['deaths'] ?>
										</td>
										<td>
											<?= ($player['deaths'] > 0) ? number_format($player['kills'] / $player['deaths'], 2) : 0; ?>
										</td>

										<td>
											<?= $player['assists'] ?>
										</td>
										<td>
											<?= $player['ping'] ?>
										</td>
									</tr>
								<?php } ?>
								</tbody>
							</table>
						</div>
					<?php } ?>
				</div>
			</div>
		<?php } ?>
</div>