fixed some exceptions

This commit is contained in:
kremsy 2014-04-19 22:59:11 +02:00 committed by Steffen Schröder
parent 94bd951a43
commit 7525b96ba1
6 changed files with 129 additions and 123 deletions

View File

@ -1,6 +1,7 @@
<?php <?php
namespace ManiaControl\Bills; namespace ManiaControl\Bills;
use ManiaControl\Players\Player;
/** /**
* ManiaControl BillData Structure * ManiaControl BillData Structure
@ -22,9 +23,9 @@ class BillData {
/** /**
* Construct new BillData * Construct new BillData
* @param unknown $function * @param mixed $function
* @param unknown $player * @param Player $player
* @param unknown $amount * @param int $amount
* @param string $pay * @param string $pay
* @param string $receiverLogin * @param string $receiverLogin
*/ */

View File

@ -7,14 +7,13 @@ use ManiaControl\Callbacks\CallbackManager;
use ManiaControl\ManiaControl; use ManiaControl\ManiaControl;
use ManiaControl\Players\Player; use ManiaControl\Players\Player;
use Maniaplanet\DedicatedServer\Structures\Bill; use Maniaplanet\DedicatedServer\Structures\Bill;
use Maniaplanet\DedicatedServer\Xmlrpc\Exception;
/** /**
* ManiaControl Bill-Manager * ManiaControl Bill-Manager
* *
* @author kremsy * @author kremsy
* @copyright ManiaControl Copyright © 2014 ManiaControl Team * @copyright ManiaControl Copyright © 2014 ManiaControl Team
* @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3
*/ */
class BillManager implements CallbackListener { class BillManager implements CallbackListener {
/* /*
@ -58,16 +57,10 @@ class BillManager implements CallbackListener {
return false; return false;
} }
try { if (!$receiver) {
if (!$receiver) { $bill = $this->maniaControl->client->sendBill($player->login, $amount, $message);
$bill = $this->maniaControl->client->sendBill($player->login, $amount, $message); } else {
} else { $bill = $this->maniaControl->client->sendBill($player->login, $amount, $message, $receiver);
$bill = $this->maniaControl->client->sendBill($player->login, $amount, $message, $receiver);
}
} catch(Exception $e) {
// TODO: handle errors like 'too few server planets' - throw other like connection errors
$this->maniaControl->errorHandler->triggerDebugNotice("Couldn't create donation of {$amount} planets from '{$player->login}' for '{$receiver}'. " . $e->getMessage());
return false;
} }
$this->openBills[$bill] = new BillData($function, $player, $amount); $this->openBills[$bill] = new BillData($function, $player, $amount);
@ -89,14 +82,7 @@ class BillManager implements CallbackListener {
return false; return false;
} }
try { $bill = $this->maniaControl->client->pay($receiverLogin, $amount, $message);
$bill = $this->maniaControl->client->pay($receiverLogin, $amount, $message);
} catch(Exception $e) {
// TODO: handle errors like 'too few server planets' - throw other like connection errors
//trigger_error("Couldn't create payout of {$amount} planets by '{$player->login}' for '{$receiver}'. " . $e->getMessage());
$this->maniaControl->errorHandler->triggerDebugNotice("Couldn't create payout of {$amount} planets to '{$receiverLogin}' " . $e->getMessage());
return false;
}
$this->openBills[$bill] = new BillData($function, $receiverLogin, $amount, true); $this->openBills[$bill] = new BillData($function, $receiverLogin, $amount, true);

View File

@ -13,28 +13,29 @@ use ManiaControl\Admin\AuthenticationManager;
use ManiaControl\Callbacks\CallbackListener; use ManiaControl\Callbacks\CallbackListener;
use ManiaControl\Callbacks\CallbackManager; use ManiaControl\Callbacks\CallbackManager;
use ManiaControl\ManiaControl; use ManiaControl\ManiaControl;
use ManiaControl\Maps\Map;
use ManiaControl\Maps\MapManager; use ManiaControl\Maps\MapManager;
use ManiaControl\Players\Player; use ManiaControl\Players\Player;
use Maniaplanet\DedicatedServer\Xmlrpc\Exception; use Maniaplanet\DedicatedServer\Xmlrpc\Exception;
use ManiaControl\Maps\Map; use Maniaplanet\DedicatedServer\Xmlrpc\NotInScriptModeException;
/** /**
* Class offering a Configurator for Script Settings * Class offering a Configurator for Script Settings
* *
* @author steeffeen & kremsy * @author steeffeen & kremsy
* @copyright ManiaControl Copyright © 2014 ManiaControl Team * @copyright ManiaControl Copyright © 2014 ManiaControl Team
* @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3
*/ */
class ScriptSettings implements ConfiguratorMenu, CallbackListener { class ScriptSettings implements ConfiguratorMenu, CallbackListener {
/* /*
* Constants * Constants
*/ */
const ACTION_PREFIX_SETTING = 'ScriptSetting'; const ACTION_PREFIX_SETTING = 'ScriptSetting';
const ACTION_SETTING_BOOL = 'ScriptSetting.ActionBoolSetting.'; const ACTION_SETTING_BOOL = 'ScriptSetting.ActionBoolSetting.';
const CB_SCRIPTSETTING_CHANGED = 'ScriptSettings.SettingChanged'; const CB_SCRIPTSETTING_CHANGED = 'ScriptSettings.SettingChanged';
const CB_SCRIPTSETTINGS_CHANGED = 'ScriptSettings.SettingsChanged'; const CB_SCRIPTSETTINGS_CHANGED = 'ScriptSettings.SettingsChanged';
const TABLE_SCRIPT_SETTINGS = 'mc_scriptsettings'; const TABLE_SCRIPT_SETTINGS = 'mc_scriptsettings';
const SETTING_LOAD_DEFAULT_SETTINGS_MAP_BEGIN = 'Load Stored Script-Settings on Map-Begin'; const SETTING_LOAD_DEFAULT_SETTINGS_MAP_BEGIN = 'Load Stored Script-Settings on Map-Begin';
const SETTING_PERMISSION_CHANGE_SCRIPT_SETTINGS = 'Change Script-Settings'; const SETTING_PERMISSION_CHANGE_SCRIPT_SETTINGS = 'Change Script-Settings';
/* /*
@ -117,11 +118,8 @@ class ScriptSettings implements ConfiguratorMenu, CallbackListener {
public function loadSettingsFromDatabase() { public function loadSettingsFromDatabase() {
try { try {
$scriptSettings = $this->maniaControl->client->getModeScriptSettings(); $scriptSettings = $this->maniaControl->client->getModeScriptSettings();
} catch(Exception $e) { } catch(NotInScriptModeException $e) {
if ($e->getMessage() == 'Not in script mode.') { return false;
return false;
}
throw $e;
} }
$mysqli = $this->maniaControl->database->mysqli; $mysqli = $this->maniaControl->database->mysqli;
@ -185,7 +183,7 @@ class ScriptSettings implements ConfiguratorMenu, CallbackListener {
try { try {
$scriptSettings = $this->maniaControl->client->getModeScriptSettings(); $scriptSettings = $this->maniaControl->client->getModeScriptSettings();
} catch(Exception $e) { } catch(NotInScriptModeException $e) {
//do nothing //do nothing
} }
@ -320,11 +318,8 @@ class ScriptSettings implements ConfiguratorMenu, CallbackListener {
try { try {
$scriptSettings = $this->maniaControl->client->getModeScriptSettings(); $scriptSettings = $this->maniaControl->client->getModeScriptSettings();
} catch(Exception $e) { } catch(NotInScriptModeException $e) {
if ($e->getMessage() == 'Not in script mode.') { return;
return;
}
throw $e;
} }
$prefixLength = strlen(self::ACTION_PREFIX_SETTING); $prefixLength = strlen(self::ACTION_PREFIX_SETTING);
@ -389,11 +384,8 @@ class ScriptSettings implements ConfiguratorMenu, CallbackListener {
public function toggleBooleanSetting($setting, Player $player) { public function toggleBooleanSetting($setting, Player $player) {
try { try {
$scriptSettings = $this->maniaControl->client->getModeScriptSettings(); $scriptSettings = $this->maniaControl->client->getModeScriptSettings();
} catch(Exception $e) { } catch(NotInScriptModeException $e) {
if ($e->getMessage() == 'Not in script mode.') { return;
return;
}
throw $e;
} }
if (!isset($scriptSettings[$setting])) { if (!isset($scriptSettings[$setting])) {
@ -415,11 +407,15 @@ class ScriptSettings implements ConfiguratorMenu, CallbackListener {
* @param bool * @param bool
*/ */
private function applyNewScriptSettings(array $newSettings, Player $player) { private function applyNewScriptSettings(array $newSettings, Player $player) {
if (!$newSettings) return true; if (!$newSettings) {
return true;
}
try { try {
$this->maniaControl->client->setModeScriptSettings($newSettings); $this->maniaControl->client->setModeScriptSettings($newSettings);
} catch(Exception $e) { } catch(Exception $e) {
//TODO temp added 19.04.2014
$this->maniaControl->errorHandler->triggerDebugNotice("Exception line 416 ScriptSettings.php" . $e->getMessage());
$this->maniaControl->chat->sendError('Error occurred: ' . $e->getMessage(), $player->login); $this->maniaControl->chat->sendError('Error occurred: ' . $e->getMessage(), $player->login);
return false; return false;
} }

View File

@ -19,6 +19,8 @@ class FaultException extends Exception
return new CouldNotWritePlaylistFileException($faultString, $faultCode); return new CouldNotWritePlaylistFileException($faultString, $faultCode);
case 'Start index out of bound.': case 'Start index out of bound.':
return new StartIndexOutOfBoundException($faultString, $faultCode); return new StartIndexOutOfBoundException($faultString, $faultCode);
case 'Not in script mode.':
return new NotInScriptModeException($faultString, $faultCode);
} }
return new self($faultString, $faultCode); return new self($faultString, $faultCode);
@ -28,4 +30,5 @@ class FaultException extends Exception
class LoginUnknownException extends FaultException {} class LoginUnknownException extends FaultException {}
class CouldNotWritePlaylistFileException extends FaultException {} class CouldNotWritePlaylistFileException extends FaultException {}
class StartIndexOutOfBoundException extends FaultException {} class StartIndexOutOfBoundException extends FaultException {}
class NotInScriptModeException extends FaultException {}
?> ?>

View File

@ -25,6 +25,7 @@ use ManiaControl\Update\UpdateManager;
use Maniaplanet\DedicatedServer\Connection; use Maniaplanet\DedicatedServer\Connection;
use Maniaplanet\DedicatedServer\Transport\TransportException; use Maniaplanet\DedicatedServer\Transport\TransportException;
use Maniaplanet\DedicatedServer\Xmlrpc\Exception; use Maniaplanet\DedicatedServer\Xmlrpc\Exception;
use Maniaplanet\DedicatedServer\Xmlrpc\NotInScriptModeException;
require_once __DIR__ . '/Libs/Maniaplanet/DedicatedServer/Connection.php'; require_once __DIR__ . '/Libs/Maniaplanet/DedicatedServer/Connection.php';
require_once __DIR__ . '/Libs/GbxDataFetcher/gbxdatafetcher.inc.php'; require_once __DIR__ . '/Libs/GbxDataFetcher/gbxdatafetcher.inc.php';
@ -132,10 +133,11 @@ class ManiaControl implements CommandListener, TimerListener {
/** /**
* Checks connection every xxx Minutes * Checks connection every xxx Minutes
*
* @param $time * @param $time
*/ */
public function checkConnection($time){ public function checkConnection($time) {
if($this->client->getIdleTime() > 180){ if ($this->client->getIdleTime() > 180) {
$this->client->getServerName(); $this->client->getServerName();
} }
} }
@ -243,7 +245,7 @@ class ManiaControl implements CommandListener, TimerListener {
$this->client->sendHideManialinkPage(); $this->client->sendHideManialinkPage();
// Close the client connection // Close the client connection
$this->client->delete($this->server->ip, $this->server->port); $this->client->delete($this->server->ip, $this->server->port);
} catch(FatalException $e) { } catch(TransportException $e) {
$this->errorHandler->triggerDebugNotice($e->getMessage() . " File: " . $e->getFile() . " Line: " . $e->getLine()); $this->errorHandler->triggerDebugNotice($e->getMessage() . " File: " . $e->getFile() . " Line: " . $e->getLine());
} }
} }
@ -399,7 +401,7 @@ class ManiaControl implements CommandListener, TimerListener {
if (!$this->server->waitForStatus(4)) { if (!$this->server->waitForStatus(4)) {
trigger_error("Server couldn't get ready!", E_USER_ERROR); trigger_error("Server couldn't get ready!", E_USER_ERROR);
} }
} catch(FatalException $e) { } catch(Exception $e) {
// TODO remove // TODO remove
if ($this->errorHandler) { if ($this->errorHandler) {
$this->errorHandler->triggerDebugNotice("Fatal Exception: " . $e->getMessage() . " Trace: " . $e->getTraceAsString()); $this->errorHandler->triggerDebugNotice("Fatal Exception: " . $e->getMessage() . " Trace: " . $e->getTraceAsString());
@ -420,11 +422,8 @@ class ManiaControl implements CommandListener, TimerListener {
try { try {
$scriptSettings = $this->client->getModeScriptSettings(); $scriptSettings = $this->client->getModeScriptSettings();
} catch(Exception $e) { } catch(NotInScriptModeException $e) {
if ($e->getMessage() == 'Not in script mode.') { return;
return;
}
throw $e;
} }
if (!array_key_exists('S_UseScriptCallbacks', $scriptSettings)) { if (!array_key_exists('S_UseScriptCallbacks', $scriptSettings)) {
@ -435,6 +434,9 @@ class ManiaControl implements CommandListener, TimerListener {
try { try {
$this->client->setModeScriptSettings($scriptSettings); $this->client->setModeScriptSettings($scriptSettings);
} catch(Exception $e) { } catch(Exception $e) {
//TODO temp added 19.04.2014
$this->maniaControl->errorHandler->triggerDebugNotice("Exception line 437 ManiaControl.php " . $e->getMessage());
trigger_error("Couldn't set mode script settings to enable script callbacks. " . $e->getMessage()); trigger_error("Couldn't set mode script settings to enable script callbacks. " . $e->getMessage());
return; return;
} }

View File

@ -10,17 +10,17 @@ use Maniaplanet\DedicatedServer\Xmlrpc\Exception;
/** /**
* Class providing Access to the connected ManiaPlanet Server * Class providing Access to the connected ManiaPlanet Server
* *
* @author steeffeen & kremsy * @author steeffeen & kremsy
* @copyright ManiaControl Copyright © 2014 ManiaControl Team * @copyright ManiaControl Copyright © 2014 ManiaControl Team
* @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3
*/ */
class Server implements CallbackListener { class Server implements CallbackListener {
/* /*
* Constants * Constants
*/ */
const TABLE_SERVERS = 'mc_servers'; const TABLE_SERVERS = 'mc_servers';
const CB_TEAM_MODE_CHANGED = 'ServerCallback.TeamModeChanged'; const CB_TEAM_MODE_CHANGED = 'ServerCallback.TeamModeChanged';
/* /*
* Public Properties * Public Properties
*/ */
@ -35,7 +35,7 @@ class Server implements CallbackListener {
public $serverCommands = null; public $serverCommands = null;
public $usageReporter = null; public $usageReporter = null;
public $rankingManager = null; public $rankingManager = null;
/* /*
* Private Properties * Private Properties
*/ */
@ -50,11 +50,11 @@ class Server implements CallbackListener {
public function __construct(ManiaControl $maniaControl) { public function __construct(ManiaControl $maniaControl) {
$this->maniaControl = $maniaControl; $this->maniaControl = $maniaControl;
$this->initTables(); $this->initTables();
$this->serverCommands = new ServerCommands($maniaControl); $this->serverCommands = new ServerCommands($maniaControl);
$this->usageReporter = new UsageReporter($maniaControl); $this->usageReporter = new UsageReporter($maniaControl);
$this->rankingManager = new RankingManager($maniaControl); $this->rankingManager = new RankingManager($maniaControl);
// Register for callbacks // Register for callbacks
$this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_ONINIT, $this, 'onInit'); $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_ONINIT, $this, 'onInit');
} }
@ -63,52 +63,67 @@ class Server implements CallbackListener {
* Load the Server Configuration from the Config XML * Load the Server Configuration from the Config XML
*/ */
public function loadConfig() { public function loadConfig() {
if (!$this->maniaControl->config) trigger_error('Error loading Server Config!', E_USER_ERROR); if (!$this->maniaControl->config) {
trigger_error('Error loading Server Config!', E_USER_ERROR);
}
// Config id // Config id
$id = null; $id = null;
global $argv; global $argv;
foreach ($argv as $arg) { foreach($argv as $arg) {
$parts = explode('=', $arg); $parts = explode('=', $arg);
if (count($parts) < 2) continue; if (count($parts) < 2)
if ($parts[0] != '-id') continue; continue;
if ($parts[0] != '-id')
continue;
$id = $parts[1]; $id = $parts[1];
break; break;
} }
// Xml server tag with given id // Xml server tag with given id
$serverTag = null; $serverTag = null;
if ($id) { if ($id) {
$serverTags = $this->maniaControl->config->xpath("server[@id='{$id}']"); $serverTags = $this->maniaControl->config->xpath("server[@id='{$id}']");
if ($serverTags) $serverTag = $serverTags[0]; if ($serverTags)
if (!$serverTag) trigger_error("No Server configured with the ID '{$id}'!", E_USER_ERROR); $serverTag = $serverTags[0];
} if (!$serverTag)
else { trigger_error("No Server configured with the ID '{$id}'!", E_USER_ERROR);
} else {
$serverTags = $this->maniaControl->config->xpath('server'); $serverTags = $this->maniaControl->config->xpath('server');
if ($serverTags) $serverTag = $serverTags[0]; if ($serverTags)
if (!$serverTag) trigger_error('No Server configured!', E_USER_ERROR); $serverTag = $serverTags[0];
if (!$serverTag)
trigger_error('No Server configured!', E_USER_ERROR);
} }
// Host // Host
$host = $serverTag->xpath('host'); $host = $serverTag->xpath('host');
if ($host) $host = (string) $host[0]; if ($host)
if (!$host) trigger_error("Invalid server configuration (host).", E_USER_ERROR); $host = (string)$host[0];
if (!$host)
trigger_error("Invalid server configuration (host).", E_USER_ERROR);
// Port // Port
$port = $serverTag->xpath('port'); $port = $serverTag->xpath('port');
if ($port) $port = (string) $port[0]; if ($port)
if (!$port) trigger_error("Invalid server configuration (port).", E_USER_ERROR); $port = (string)$port[0];
if (!$port)
trigger_error("Invalid server configuration (port).", E_USER_ERROR);
// Login // Login
$login = $serverTag->xpath('login'); $login = $serverTag->xpath('login');
if ($login) $login = (string) $login[0]; if ($login)
if (!$login) trigger_error("Invalid server configuration (login).", E_USER_ERROR); $login = (string)$login[0];
if (!$login)
trigger_error("Invalid server configuration (login).", E_USER_ERROR);
// Pass // Pass
$pass = $serverTag->xpath('pass'); $pass = $serverTag->xpath('pass');
if ($pass) $pass = (string) $pass[0]; if ($pass)
if (!$pass) trigger_error("Invalid server configuration (password).", E_USER_ERROR); $pass = (string)$pass[0];
if (!$pass)
trigger_error("Invalid server configuration (password).", E_USER_ERROR);
// Create config object // Create config object
$this->config = new Config($id, $host, $port, $login, $pass); $this->config = new Config($id, $host, $port, $login, $pass);
} }
@ -118,16 +133,16 @@ class Server implements CallbackListener {
*/ */
private function updateProperties() { private function updateProperties() {
// System info // System info
$systemInfo = $this->maniaControl->client->getSystemInfo(); $systemInfo = $this->maniaControl->client->getSystemInfo();
$this->ip = $systemInfo->publishedIp; $this->ip = $systemInfo->publishedIp;
$this->port = $systemInfo->port; $this->port = $systemInfo->port;
$this->p2pPort = $systemInfo->p2PPort; $this->p2pPort = $systemInfo->p2PPort;
$this->login = $systemInfo->serverLogin; $this->login = $systemInfo->serverLogin;
$this->titleId = $systemInfo->titleId; $this->titleId = $systemInfo->titleId;
// Database index // Database index
$mysqli = $this->maniaControl->database->mysqli; $mysqli = $this->maniaControl->database->mysqli;
$query = "INSERT INTO `" . self::TABLE_SERVERS . "` ( $query = "INSERT INTO `" . self::TABLE_SERVERS . "` (
`login` `login`
) VALUES ( ) VALUES (
? ?
@ -155,8 +170,8 @@ class Server implements CallbackListener {
* @return bool * @return bool
*/ */
private function initTables() { private function initTables() {
$mysqli = $this->maniaControl->database->mysqli; $mysqli = $this->maniaControl->database->mysqli;
$query = "CREATE TABLE IF NOT EXISTS `" . self::TABLE_SERVERS . "` ( $query = "CREATE TABLE IF NOT EXISTS `" . self::TABLE_SERVERS . "` (
`index` int(11) NOT NULL AUTO_INCREMENT, `index` int(11) NOT NULL AUTO_INCREMENT,
`login` varchar(100) NOT NULL, `login` varchar(100) NOT NULL,
PRIMARY KEY (`index`), PRIMARY KEY (`index`),
@ -183,19 +198,19 @@ class Server implements CallbackListener {
*/ */
public function getAllServers() { public function getAllServers() {
$mysqli = $this->maniaControl->database->mysqli; $mysqli = $this->maniaControl->database->mysqli;
$query = "SELECT * FROM `" . self::TABLE_SERVERS . "`"; $query = "SELECT * FROM `" . self::TABLE_SERVERS . "`";
$result = $mysqli->query($query); $result = $mysqli->query($query);
if (!$result) { if (!$result) {
trigger_error($mysqli->error); trigger_error($mysqli->error);
return array(); return array();
} }
$servers = array(); $servers = array();
while ($row = $result->fetch_object()) { while($row = $result->fetch_object()) {
array_push($servers, $row); array_push($servers, $row);
} }
$result->close(); $result->close();
return $servers; return $servers;
} }
@ -212,9 +227,9 @@ class Server implements CallbackListener {
* @param bool $teamMode * @param bool $teamMode
*/ */
public function setTeamMode($teamMode = true) { public function setTeamMode($teamMode = true) {
$oldStatus = $this->teamMode; $oldStatus = $this->teamMode;
$this->teamMode = $teamMode; $this->teamMode = $teamMode;
// Trigger callback // Trigger callback
if ($oldStatus != $this->teamMode) { if ($oldStatus != $this->teamMode) {
$this->maniaControl->callbackManager->triggerCallback(self::CB_TEAM_MODE_CHANGED, $teamMode); $this->maniaControl->callbackManager->triggerCallback(self::CB_TEAM_MODE_CHANGED, $teamMode);
@ -281,18 +296,17 @@ class Server implements CallbackListener {
* Fetch current Game Mode * Fetch current Game Mode
* *
* @param bool $stringValue * @param bool $stringValue
* @param int $parseValue * @param int $parseValue
* @return int | string * @return int | string
*/ */
public function getGameMode($stringValue = false, $parseValue = null) { public function getGameMode($stringValue = false, $parseValue = null) {
if (is_int($parseValue)) { if (is_int($parseValue)) {
$gameMode = $parseValue; $gameMode = $parseValue;
} } else {
else {
$gameMode = $this->maniaControl->client->getGameMode(); $gameMode = $this->maniaControl->client->getGameMode();
} }
if ($stringValue) { if ($stringValue) {
switch ($gameMode) { switch($gameMode) {
case 0: case 0:
return 'Script'; return 'Script';
case 1: case 1:
@ -323,8 +337,10 @@ class Server implements CallbackListener {
public function getValidationReplay($login) { public function getValidationReplay($login) {
try { try {
$replay = $this->maniaControl->client->getValidationReplay($login); $replay = $this->maniaControl->client->getValidationReplay($login);
} } catch(Exception $e) {
catch (Exception $e) { //TODO temp added 19.04.2014
$this->maniaControl->errorHandler->triggerDebugNotice("Exception line 330 Server.php" . $e->getMessage());
trigger_error("Couldn't get validation replay of '{$login}'. " . $e->getMessage()); trigger_error("Couldn't get validation replay of '{$login}'. " . $e->getMessage());
return null; return null;
} }
@ -342,22 +358,24 @@ class Server implements CallbackListener {
if (!$this->checkAccess($dataDir)) { if (!$this->checkAccess($dataDir)) {
return null; return null;
} }
// Build file name // Build file name
$map = $this->maniaControl->mapManager->getCurrentMap(); $map = $this->maniaControl->mapManager->getCurrentMap();
$gameMode = $this->getGameMode(); $gameMode = $this->getGameMode();
$time = time(); $time = time();
$fileName = "GhostReplays/Ghost.{$login}.{$gameMode}.{$time}.{$map->uid}.Replay.Gbx"; $fileName = "GhostReplays/Ghost.{$login}.{$gameMode}.{$time}.{$map->uid}.Replay.Gbx";
// Save ghost replay // Save ghost replay
try { try {
$this->maniaControl->client->saveBestGhostsReplay($login, $fileName); $this->maniaControl->client->saveBestGhostsReplay($login, $fileName);
} } catch(Exception $e) {
catch (Exception $e) { //TODO temp added 19.04.2014
$this->maniaControl->errorHandler->triggerDebugNotice("Exception line 360 Server.php" . $e->getMessage());
trigger_error("Couldn't save ghost replay. " . $e->getMessage()); trigger_error("Couldn't save ghost replay. " . $e->getMessage());
return null; return null;
} }
// Load replay file // Load replay file
$ghostReplay = file_get_contents("{$dataDir}Replays/{$fileName}"); $ghostReplay = file_get_contents("{$dataDir}Replays/{$fileName}");
if (!$ghostReplay) { if (!$ghostReplay) {
@ -380,12 +398,12 @@ class Server implements CallbackListener {
return true; return true;
} }
// Server not yet in given status - Wait for it... // Server not yet in given status - Wait for it...
$waitBegin = time(); $waitBegin = time();
$maxWaitTime = 50; $maxWaitTime = 50;
$lastStatus = $response->name; $lastStatus = $response->name;
$this->maniaControl->log("Waiting for server to reach status {$statusCode}..."); $this->maniaControl->log("Waiting for server to reach status {$statusCode}...");
$this->maniaControl->log("Current Status: {$lastStatus}"); $this->maniaControl->log("Current Status: {$lastStatus}");
while ($response->code !== 4) { while($response->code !== 4) {
sleep(1); sleep(1);
$response = $this->maniaControl->client->getStatus(); $response = $this->maniaControl->client->getStatus();
if ($lastStatus !== $response->name) { if ($lastStatus !== $response->name) {