rendered paste bodyURL:
http://games.thasmo.coml/q3a/browser/?path=/server/1/
View File:
<html>
<head>
<title>Serverbrowser</title>
<style type="text/css" media="all">
<!--
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #FFFFFF;
background-color: #333333;
line-height: 18px;
padding: 32px 16px 32px 16px;
}
hr {
height: 1px;
border: 0px;
background-color: #CC0000;
}
a {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: bold;
color: #DD0000;
text-decoration: none;
}
a:hover {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: bold;
color: #EE0000;
text-decoration: none;
}
div.tmo_content {
background-color: #792020;
padding: 8px;
}
-->
</style>
</head>
<body>
<fa:import file="server_menu.html" />
<div class="tmo_content">
<fa:if var="server.status" eq="1">
<a href="{/server/$server.id/}">{$server.name}</a><br />
{$server.address}<br />
{$server.data}<br />
<fa:list list="server.settings">
<fa:default list="server.settings">
{@No server settings found.}
</fa:default>
<fa:repeat list="server.settings" as="setting">
{$setting.name}: {$setting.value}
<fa:separator list="server.settings">
<hr />
</fa:separator>
</fa:repeat>
</fa:list>
</fa:if>
<fa:if var="server.status" eq="0">
{@A connection to the server couldn't be established.}
</fa:if>
</div>
</body>
</html>
Record Class:
class GameserversRecord extends FARecord {
function GameserversRecord(&$dba, &$def, &$finder, &$model, $current = array()) {
$constructor = get_parent_class($this);
parent::$constructor($dba, $def, $finder, $model, $current);
$this->loadServer();
}
function getName() {
return $this->_data->get('sv_hostname');
}
function getData() {
return $this->_data->getRawData();
}
function getOnlinePlayers() {
return count($this->_data->getPlayers());
}
function getMaxPlayers() {
return $this->_data->get('sv_maxclients');
}
function getMod() {
return $this->_data->get('gamename');
}
function getMap() {
return $this->_data->get('mapname');
}
function getStatus() {
return (int)$this->_server->_status;
}
function getPlayers() {
return $this->_data->getPlayers();
}
function getSettings() {
$settings = $this->_data->getSettings();
$buffer = array();
foreach($settings as $name => $value) {
$buffer[] = array('name' => $name, 'value' => $value);
}
return $buffer;
}
function getNumSettings() {
return count($this->_data->getSettings());
}
function loadServer() {
$api = &new GameServerExtension;
$this->_server = &$api->load('q3');
$this->_server->setAddress($this->get('address'));
$this->_server->connect();
if($this->_server->getStatus())
$this->_data = $this->_server->getData();
}
}
?>
Controller Class:
<?php
class ServerController extends TMOPageController {
function getPreFilters() {
return array('request');
}
function getPostFilters() {
return array();
}
function getRoutes() {
return array(
'index' => '/:id_server/'
);
}
function getExtensions() {
return array('gameserver');
}
function index(&$reg, &$req, &$resp) {
$finder = &$this->getFinder('gameservers');
$gameserver = &$finder->find($req->get('id_server'));
$resp->assignRef('server', $gameserver);
$this->setView('server_view.html');
}
}
?>