All pastes #74381 Raw Edit

k4st

public text v1 · immutable
#74381 ·published 2006-06-28 23:12 UTC
rendered paste body
<?php

class GameserversDefinition extends FAModelDefinition {
	function getPrimaryKey() {
		return 'id_gameserver';
	}
	
	function getTable() {
		return 'gameserver';
	}
	
	function getSelectOrder() {
		return 'address ASC';
	}
}

class GameserversRecord extends FARecord {
	
	var $_settings;

	function GameserversRecord(&$dba, &$def, &$finder, &$model, $current = array()) {
		$constructor = get_parent_class($this);
		parent::$constructor($dba, $def, $finder, $model, $current);
		
		$data = &$this->_data;
		$server = &$this->_server;
		
		$this->set('name', $data->get('sv_hostname'));
		$this->set('full_address', $server->getAddress());
		$this->set('data', $data->getRawData());
		$this->set('online_players', count($data->getPlayers()));
		$this->set('max_players', $data->get('sv_maxclients'));
		$this->set('mod', $data->get('gamename'));
		$this->set('map', $data->get('mapname'));
		$this->set('status', $server->_status);
		$this->set('num_settings', count($data->getSettings()));
		
		$this->loadServer();
	}
	function getPlayers() {
		return $this->_data->getPlayers();
	}
	
	function &getSettings() {
		if($this->_settings === NULL) {
			$settings = $this->_data->getSettings();
		
			$buffer = array();
			foreach($settings as $name => $value) {
				$buffer[] = array('name' => $name, 'value' => $value);
			}
		
			$this->_settings = &new FAArrayIterator($buffer);
		}
		
		return $this->_settings;
	}
	
	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();
	}
}

?>