All pastes #74369 Raw Edit

k4st

public text v1 · immutable
#74369 ·published 2006-06-28 23:00 UTC
rendered paste body
URL:
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 new FAArrayIterator($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');
	}
}

?>