|  |  |  | @@ -7,13 +7,13 @@ namespace ManiaControl; | 
		
	
		
			
				|  |  |  |  |  * | 
		
	
		
			
				|  |  |  |  |  * @author steeffeen & kremsy | 
		
	
		
			
				|  |  |  |  |  */ | 
		
	
		
			
				|  |  |  |  | // TODO: settings for command auth levels | 
		
	
		
			
				|  |  |  |  | class Commands { | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Private properties | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private $maniaControl = null; | 
		
	
		
			
				|  |  |  |  | 	private $config = null; | 
		
	
		
			
				|  |  |  |  | 	private $commandHandlers = array(); | 
		
	
		
			
				|  |  |  |  | 	private $openBills = array(); | 
		
	
		
			
				|  |  |  |  | 	private $serverShutdownTime = -1; | 
		
	
	
		
			
				
					
					|  |  |  | @@ -25,17 +25,14 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 	public function __construct(ManiaControl $maniaControl) { | 
		
	
		
			
				|  |  |  |  | 		$this->maniaControl = $maniaControl; | 
		
	
		
			
				|  |  |  |  | 		 | 
		
	
		
			
				|  |  |  |  | 		// Load config | 
		
	
		
			
				|  |  |  |  | 		$this->config = FileUtil::loadConfig('commands.xml'); | 
		
	
		
			
				|  |  |  |  | 		 | 
		
	
		
			
				|  |  |  |  | 		// Register for callbacks | 
		
	
		
			
				|  |  |  |  | 		$this->maniaControl->callbacks->registerCallbackHandler(Callbacks::CB_MC_5_SECOND, $this, 'each5Seconds'); | 
		
	
		
			
				|  |  |  |  | 		$this->maniaControl->callbacks->registerCallbackHandler(Callbacks::CB_MP_BILLUPDATED, $this, 'handleBillUpdated'); | 
		
	
		
			
				|  |  |  |  | 		$this->maniaControl->callbacks->registerCallbackHandler(Callbacks::CB_MP_PLAYERCHAT, $this, 'handleChatCallback'); | 
		
	
		
			
				|  |  |  |  | 		 | 
		
	
		
			
				|  |  |  |  | 		// Register basic commands | 
		
	
		
			
				|  |  |  |  | 		$commands = array('help', 'version', 'shutdown', 'shutdownserver', 'networkstats', 'systeminfo', 'setservername', 'getplanets',  | 
		
	
		
			
				|  |  |  |  | 			'donate', 'pay', 'kick', 'nextmap', 'restartmap', 'addmap', 'removemap', 'startwarmup', 'stopwarmup'); | 
		
	
		
			
				|  |  |  |  | 		$commands = array('help', 'version', 'shutdown', 'shutdownserver', 'systeminfo', 'setservername', 'getplanets', 'donate',  | 
		
	
		
			
				|  |  |  |  | 			'pay', 'kick', 'nextmap', 'restartmap', 'addmap', 'removemap'); | 
		
	
		
			
				|  |  |  |  | 		foreach ($commands as $command) { | 
		
	
		
			
				|  |  |  |  | 			$this->registerCommandHandler($command, $this, 'command_' . $command); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
	
		
			
				
					
					|  |  |  | @@ -77,7 +74,8 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		// Check for valid player | 
		
	
		
			
				|  |  |  |  | 		if ($chat[0] <= 0 || strlen($chat[1]) <= 0) { | 
		
	
		
			
				|  |  |  |  | 		$player = $this->maniaControl->playerHandler->getPlayer($login); | 
		
	
		
			
				|  |  |  |  | 		if (!$player) { | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		// Handle command | 
		
	
	
		
			
				
					
					|  |  |  | @@ -89,7 +87,7 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		// Inform command handlers | 
		
	
		
			
				|  |  |  |  | 		foreach ($this->commandHandlers[$command] as $handler) { | 
		
	
		
			
				|  |  |  |  | 			call_user_func(array($handler[0], $handler[1]), $callback); | 
		
	
		
			
				|  |  |  |  | 			call_user_func(array($handler[0], $handler[1]), $callback, $player); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		return true; | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
	
		
			
				
					
					|  |  |  | @@ -134,33 +132,6 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 		return true; | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Retrieve the needed rights level to perform the given command | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
		
			
				|  |  |  |  | 	 * @param string $commandName        	 | 
		
	
		
			
				|  |  |  |  | 	 * @param string $defaultLevel        	 | 
		
	
		
			
				|  |  |  |  | 	 * @return string | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function getRightsLevel($commandName, $defaultLevel) { | 
		
	
		
			
				|  |  |  |  | 		$command_rights = $this->config->xpath('//' . strtolower($commandName) . '/..'); | 
		
	
		
			
				|  |  |  |  | 		if (empty($command_rights)) { | 
		
	
		
			
				|  |  |  |  | 			return $defaultLevel; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$rights = $this->maniaControl->authentication->RIGHTS_LEVELS; | 
		
	
		
			
				|  |  |  |  | 		$highest_level = null; | 
		
	
		
			
				|  |  |  |  | 		foreach ($command_rights as $right) { | 
		
	
		
			
				|  |  |  |  | 			$levelName = $right->getName(); | 
		
	
		
			
				|  |  |  |  | 			$levelInt = array_search($levelName, $rights); | 
		
	
		
			
				|  |  |  |  | 			if ($levelInt !== false && ($highest_level === null || $highest_level < $levelInt)) { | 
		
	
		
			
				|  |  |  |  | 				$highest_level = $levelInt; | 
		
	
		
			
				|  |  |  |  | 			} | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		if ($highest_level === null || !array_key_exists($highest_level, $rights)) { | 
		
	
		
			
				|  |  |  |  | 			return $defaultLevel; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		return $rights[$highest_level]; | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Send ManiaControl version | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
	
		
			
				
					
					|  |  |  | @@ -169,11 +140,6 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_version(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('version', 'all'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$message = 'This server is using ManiaControl v' . ManiaControl::VERSION . '!'; | 
		
	
		
			
				|  |  |  |  | 		return $this->maniaControl->chat->sendInformation($message, $login); | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
	
		
			
				
					
					|  |  |  | @@ -186,11 +152,6 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_help(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('help', 'all'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		// TODO: improve help command | 
		
	
		
			
				|  |  |  |  | 		// TODO: enable help for specific commands | 
		
	
		
			
				|  |  |  |  | 		$list = 'Available commands: '; | 
		
	
	
		
			
				
					
					|  |  |  | @@ -217,13 +178,12 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 	 * Handle getplanets command | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
		
			
				|  |  |  |  | 	 * @param array $chat        	 | 
		
	
		
			
				|  |  |  |  | 	 * @param Player $player        	 | 
		
	
		
			
				|  |  |  |  | 	 * @return bool | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_getplanets(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('getplanets', 'admin'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 	private function command_getplanets(array $chat, Player $player) { | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($player, Authentication::AUTH_LEVEL_ADMIN)) { | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($player); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->client->query('GetServerPlanets')) { | 
		
	
	
		
			
				
					
					|  |  |  | @@ -232,22 +192,17 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$planets = $this->maniaControl->client->getResponse(); | 
		
	
		
			
				|  |  |  |  | 		$message = "This Server has {$planets} Planets!"; | 
		
	
		
			
				|  |  |  |  | 		return $this->maniaControl->chat->sendInformation($message, $login); | 
		
	
		
			
				|  |  |  |  | 		return $this->maniaControl->chat->sendInformation($message, $player->login); | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Handle donate command | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
		
			
				|  |  |  |  | 	 * @param array $chat        	 | 
		
	
		
			
				|  |  |  |  | 	 * @param Player $player        	 | 
		
	
		
			
				|  |  |  |  | 	 * @return bool | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_donate(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('donate', 'all'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 			return; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 	private function command_donate(array $chat, Player $player) { | 
		
	
		
			
				|  |  |  |  | 		$params = explode(' ', $chat[1][2]); | 
		
	
		
			
				|  |  |  |  | 		if (count($params) < 2) { | 
		
	
		
			
				|  |  |  |  | 			// TODO: send usage information | 
		
	
	
		
			
				
					
					|  |  |  | @@ -260,7 +215,7 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		if (count($params) >= 3) { | 
		
	
		
			
				|  |  |  |  | 			$receiver = $params[2]; | 
		
	
		
			
				|  |  |  |  | 			$receiverPlayer = $this->maniaControl->database->getPlayer($receiver); | 
		
	
		
			
				|  |  |  |  | 			$receiverPlayer = $this->maniaControl->playerHandler->getPlayer($receiver); | 
		
	
		
			
				|  |  |  |  | 			$receiverName = ($receiverPlayer ? $receiverPlayer['NickName'] : $receiver); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		else { | 
		
	
	
		
			
				
					
					|  |  |  | @@ -268,16 +223,15 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 			$receiverName = $this->maniaControl->server->getName(); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$message = 'Donate ' . $amount . ' Planets to $<' . $receiverName . '$>?'; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->client->query('SendBill', $login, $amount, $message, $receiver)) { | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->client->query('SendBill', $pl, $amount, $message, $receiver)) { | 
		
	
		
			
				|  |  |  |  | 			trigger_error( | 
		
	
		
			
				|  |  |  |  | 					"Couldn't create donation of {$amount} planets from '{$login}' for '{$receiver}'. " . | 
		
	
		
			
				|  |  |  |  | 					"Couldn't create donation of {$amount} planets from '{$player->login}' for '{$receiver}'. " . | 
		
	
		
			
				|  |  |  |  | 							 $this->maniaControl->getClientErrorText()); | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendError("Creating donation failed.", $login); | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendError("Creating donation failed.", $player->login); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		 | 
		
	
		
			
				|  |  |  |  | 		$bill = $this->maniaControl->client->getResponse(); | 
		
	
		
			
				|  |  |  |  | 		$this->openBills[$bill] = $login; | 
		
	
		
			
				|  |  |  |  | 		$this->openBills[$bill] = $player->login; | 
		
	
		
			
				|  |  |  |  | 		return true; | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -285,13 +239,12 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 	 * Handle pay command | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
		
			
				|  |  |  |  | 	 * @param array $chat        	 | 
		
	
		
			
				|  |  |  |  | 	 * @param Player $player        	 | 
		
	
		
			
				|  |  |  |  | 	 * @return bool | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_pay(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('pay', 'superadmin'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 	private function command_pay(array $chat, Player $player) { | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($player, Authentication::AUTH_LEVEL_SUPERADMIN)) { | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($player); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$params = explode(' ', $chat[1][2]); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -308,119 +261,64 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 			$receiver = $params[2]; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		else { | 
		
	
		
			
				|  |  |  |  | 			$receiver = $login; | 
		
	
		
			
				|  |  |  |  | 			$receiver = $player->login; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$message = 'Payout from $<' . $this->maniaControl->server->getName() . '$>.'; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->client->query('Pay', $receiver, $amount, $message)) { | 
		
	
		
			
				|  |  |  |  | 			trigger_error( | 
		
	
		
			
				|  |  |  |  | 					"Couldn't create payout of {$amount} planets by '{$login}' for '{$receiver}'. " . | 
		
	
		
			
				|  |  |  |  | 					"Couldn't create payout of {$amount} planets by '{$player->login}' for '{$receiver}'. " . | 
		
	
		
			
				|  |  |  |  | 							 $this->maniaControl->getClientErrorText()); | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendError("Creating payout failed.", $login); | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendError("Creating payout failed.", $player->login); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$bill = $this->maniaControl->client->getResponse(); | 
		
	
		
			
				|  |  |  |  | 		$this->openBills[$bill] = $login; | 
		
	
		
			
				|  |  |  |  | 		$this->openBills[$bill] = $player->login; | 
		
	
		
			
				|  |  |  |  | 		return true; | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Handle networkstats command | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
		
			
				|  |  |  |  | 	 * @param array $chat        	 | 
		
	
		
			
				|  |  |  |  | 	 * @return bool | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_networkstats(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('networkstats', 'superadmin'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$networkStats = $this->maniaControl->server->getNetworkStats(); | 
		
	
		
			
				|  |  |  |  | 		$message = 'NetworkStats: uptime=' . $networkStats['Uptime'] . ', nbConn=' . $networkStats['NbrConnection'] . ', recvRate=' . | 
		
	
		
			
				|  |  |  |  | 				 $networkStats['RecvNetRate'] . ', sendRate=' . $networkStats['SendNetRate'] . ', recvTotal=' . | 
		
	
		
			
				|  |  |  |  | 				 $networkStats['SendNetRate'] . ', sentTotal=' . $networkStats['SendNetRate']; | 
		
	
		
			
				|  |  |  |  | 		return $this->maniaControl->chat->sendInformation($message, $login); | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Handle systeminfo command | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
		
			
				|  |  |  |  | 	 * @param array $chat        	 | 
		
	
		
			
				|  |  |  |  | 	 * @param Player $player        	 | 
		
	
		
			
				|  |  |  |  | 	 * @return bool | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_systeminfo(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('systeminfo', 'superadmin'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 	private function command_systeminfo(array $chat, Player $player) { | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($player, Authentication::AUTH_LEVEL_SUPERADMIN)) { | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($player); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$systemInfo = $this->maniaControl->server->getSystemInfo(); | 
		
	
		
			
				|  |  |  |  | 		$message = 'SystemInfo: ip=' . $systemInfo['PublishedIp'] . ', port=' . $systemInfo['Port'] . ', p2pPort=' . | 
		
	
		
			
				|  |  |  |  | 				 $systemInfo['P2PPort'] . ', title=' . $systemInfo['TitleId'] . ', login=' . $systemInfo['ServerLogin'] . ', '; | 
		
	
		
			
				|  |  |  |  | 		return $this->maniaControl->chat->sendInformation($message, $login); | 
		
	
		
			
				|  |  |  |  | 		return $this->maniaControl->chat->sendInformation($message, $player->login); | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Handle shutdown command | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
		
			
				|  |  |  |  | 	 * @param array $chat        	 | 
		
	
		
			
				|  |  |  |  | 	 * @param Player $player        	 | 
		
	
		
			
				|  |  |  |  | 	 * @return bool | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_shutdown(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('shutdown', 'superadmin'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 	private function command_shutdown(array $chat, Player $player) { | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($player, Authentication::AUTH_LEVEL_SUPERADMIN)) { | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($player); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		return $this->maniaControl->quit("ManiaControl shutdown requested by '{$login}'"); | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Handle startwarmup command | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
		
			
				|  |  |  |  | 	 * @param array $chat        	 | 
		
	
		
			
				|  |  |  |  | 	 * @return bool | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_startwarmup(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('startwarmup', 'operator'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		return $this->maniaControl->client->query("SetWarmUp", true); | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Handle stopwarmup command | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
		
			
				|  |  |  |  | 	 * @param array $chat        	 | 
		
	
		
			
				|  |  |  |  | 	 * @return bool | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_stopwarmup(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('stopwarmup', 'operator'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		return $this->maniaControl->client->query("SetWarmUp", false); | 
		
	
		
			
				|  |  |  |  | 		return $this->maniaControl->quit("ManiaControl shutdown requested by '{$player->login}'"); | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Handle server shutdown command | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
		
			
				|  |  |  |  | 	 * @param array $chat        	 | 
		
	
		
			
				|  |  |  |  | 	 * @param Player $player        	 | 
		
	
		
			
				|  |  |  |  | 	 * @return bool | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_shutdownserver(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('shutdownserver', 'superadmin'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 	private function command_shutdownserver(array $chat, Player $player) { | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($player, Authentication::AUTH_LEVEL_SUPERADMIN)) { | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($player); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		// Check for delayed shutdown | 
		
	
	
		
			
				
					
					|  |  |  | @@ -430,38 +328,37 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 			if ($param == 'empty') { | 
		
	
		
			
				|  |  |  |  | 				$this->serverShutdownEmpty = !$this->serverShutdownEmpty; | 
		
	
		
			
				|  |  |  |  | 				if ($this->serverShutdownEmpty) { | 
		
	
		
			
				|  |  |  |  | 					$this->maniaControl->chat->sendInformation("The server will shutdown as soon as it's empty!", $login); | 
		
	
		
			
				|  |  |  |  | 					$this->maniaControl->chat->sendInformation("The server will shutdown as soon as it's empty!", $player->login); | 
		
	
		
			
				|  |  |  |  | 					return true; | 
		
	
		
			
				|  |  |  |  | 				} | 
		
	
		
			
				|  |  |  |  | 				$this->maniaControl->chat->sendInformation("Empty-shutdown cancelled!", $login); | 
		
	
		
			
				|  |  |  |  | 				$this->maniaControl->chat->sendInformation("Empty-shutdown cancelled!", $player->login); | 
		
	
		
			
				|  |  |  |  | 				return true; | 
		
	
		
			
				|  |  |  |  | 			} | 
		
	
		
			
				|  |  |  |  | 			$delay = (int) $param; | 
		
	
		
			
				|  |  |  |  | 			if ($delay <= 0) { | 
		
	
		
			
				|  |  |  |  | 				// Cancel shutdown | 
		
	
		
			
				|  |  |  |  | 				$this->serverShutdownTime = -1; | 
		
	
		
			
				|  |  |  |  | 				$this->maniaControl->chat->sendInformation("Delayed shutdown cancelled!", $login); | 
		
	
		
			
				|  |  |  |  | 				$this->maniaControl->chat->sendInformation("Delayed shutdown cancelled!", $player->login); | 
		
	
		
			
				|  |  |  |  | 				return true; | 
		
	
		
			
				|  |  |  |  | 			} | 
		
	
		
			
				|  |  |  |  | 			// Trigger delayed shutdown | 
		
	
		
			
				|  |  |  |  | 			$this->serverShutdownTime = time() + $delay * 60.; | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendInformation("The server will shut down in " . $delay . " minutes!", $login); | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendInformation("The server will shut down in {$delay} minutes!", $player->login); | 
		
	
		
			
				|  |  |  |  | 			return true; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		return $this->shutdownServer($login); | 
		
	
		
			
				|  |  |  |  | 		return $this->shutdownServer($player->login); | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Handle kick command | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
		
			
				|  |  |  |  | 	 * @param array $chat        	 | 
		
	
		
			
				|  |  |  |  | 	 * @param Player $player        	 | 
		
	
		
			
				|  |  |  |  | 	 * @return bool | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_kick(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('kick', 'operator'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 	private function command_kick(array $chat, Player $player) { | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($player, Authentication::AUTH_LEVEL_OPERATOR)) { | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($player); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$params = explode(' ', $chat[1][2], 3); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -470,49 +367,44 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$target = $params[1]; | 
		
	
		
			
				|  |  |  |  | 		$players = $this->maniaControl->server->getPlayers(); | 
		
	
		
			
				|  |  |  |  | 		foreach ($players as $player) { | 
		
	
		
			
				|  |  |  |  | 			if ($player['Login'] != $target) { | 
		
	
		
			
				|  |  |  |  | 				continue; | 
		
	
		
			
				|  |  |  |  | 		$target = $this->maniaControl->playerHandler->getPlayer($target); | 
		
	
		
			
				|  |  |  |  | 		if (!$target) { | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendError("Invalid player login.", $player->login); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 			// Kick player | 
		
	
		
			
				|  |  |  |  | 		$message = ''; | 
		
	
		
			
				|  |  |  |  | 		if (isset($params[2])) { | 
		
	
		
			
				|  |  |  |  | 			$message = $params[2]; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 			return $this->maniaControl->client->query('Kick', $target, $message); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$this->maniaControl->chat->sendError("Invalid player login.", $login); | 
		
	
		
			
				|  |  |  |  | 		return false; | 
		
	
		
			
				|  |  |  |  | 		return $this->maniaControl->client->query('Kick', $target->login, $message); | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Handle removemap command | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
		
			
				|  |  |  |  | 	 * @param array $chat        	 | 
		
	
		
			
				|  |  |  |  | 	 * @param Player $player        	 | 
		
	
		
			
				|  |  |  |  | 	 * @return bool | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_removemap(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('kick', 'operator'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 	private function command_removemap(array $chat, Player $player) { | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($player, Authentication::AUTH_LEVEL_OPERATOR)) { | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($player); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		// TODO: allow params | 
		
	
		
			
				|  |  |  |  | 		// Get map name | 
		
	
		
			
				|  |  |  |  | 		$map = $this->maniaControl->server->getMap(); | 
		
	
		
			
				|  |  |  |  | 		if (!$map) { | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendError("Couldn't remove map.", $login); | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendError("Couldn't remove map.", $player->login); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$mapName = $map['FileName']; | 
		
	
		
			
				|  |  |  |  | 		// Remove map | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->client->query('RemoveMap', $mapName)) { | 
		
	
		
			
				|  |  |  |  | 			trigger_error("Couldn't remove current map. " . $this->maniaControl->getClientErrorText()); | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendError("Couldn't remove map.", $player->login); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$this->maniaControl->chat->sendSuccess('Map removed.', $login); | 
		
	
		
			
				|  |  |  |  | 		$this->maniaControl->chat->sendSuccess('Map removed.', $player->login); | 
		
	
		
			
				|  |  |  |  | 		return true; | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -520,13 +412,12 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 	 * Handle addmap command | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
		
			
				|  |  |  |  | 	 * @param array $chat        	 | 
		
	
		
			
				|  |  |  |  | 	 * @param Player $player        	 | 
		
	
		
			
				|  |  |  |  | 	 * @return bool | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_addmap(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('addmap', 'operator'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 	private function command_addmap(array $chat, Player $player) { | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($player, Authentication::AUTH_LEVEL_OPERATOR)) { | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($player); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$params = explode(' ', $chat[1][2], 2); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -537,20 +428,20 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 		// Check if ManiaControl can even write to the maps dir | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->client->query('GetMapsDirectory')) { | 
		
	
		
			
				|  |  |  |  | 			trigger_error("Couldn't get map directory. " . $this->maniaControl->getClientErrorText()); | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendError("ManiaControl couldn't retrieve the maps directory.", $login); | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendError("ManiaControl couldn't retrieve the maps directory.", $player->login); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$mapDir = $this->maniaControl->client->getResponse(); | 
		
	
		
			
				|  |  |  |  | 		if (!is_dir($mapDir)) { | 
		
	
		
			
				|  |  |  |  | 			trigger_error("ManiaControl doesn't have have access to the maps directory in '{$mapDir}'."); | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendError("ManiaControl doesn't have access to the maps directory.", $login); | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendError("ManiaControl doesn't have access to the maps directory.", $player->login); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$downloadDirectory = $this->maniaControl->settingManager->getSetting($this, 'MapDownloadDirectory', 'mx'); | 
		
	
		
			
				|  |  |  |  | 		// Create download directory if necessary | 
		
	
		
			
				|  |  |  |  | 		if (!is_dir($mapDir . $downloadDirectory) && !mkdir($mapDir . $downloadDirectory)) { | 
		
	
		
			
				|  |  |  |  | 			trigger_error("ManiaControl doesn't have to rights to save maps in '{$mapDir}{$downloadDirectory}'."); | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendError("ManiaControl doesn't have the rights to save maps.", $login); | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendError("ManiaControl doesn't have the rights to save maps.", $player->login); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$mapDir .= $downloadDirectory . '/'; | 
		
	
	
		
			
				
					
					|  |  |  | @@ -565,7 +456,7 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 			$mapInfo = FileUtil::loadFile($url); | 
		
	
		
			
				|  |  |  |  | 			if (!$mapInfo || strlen($mapInfo) <= 0) { | 
		
	
		
			
				|  |  |  |  | 				// Invalid id | 
		
	
		
			
				|  |  |  |  | 				$this->maniaControl->chat->sendError('Invalid MX-Id!', $login); | 
		
	
		
			
				|  |  |  |  | 				$this->maniaControl->chat->sendError('Invalid MX-Id!', $player->login); | 
		
	
		
			
				|  |  |  |  | 				return false; | 
		
	
		
			
				|  |  |  |  | 			} | 
		
	
		
			
				|  |  |  |  | 			$mapInfo = json_decode($mapInfo, true); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -573,34 +464,34 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 			$file = FileUtil::loadFile($url); | 
		
	
		
			
				|  |  |  |  | 			if (!$file) { | 
		
	
		
			
				|  |  |  |  | 				// Download error | 
		
	
		
			
				|  |  |  |  | 				$this->maniaControl->chat->sendError('Download failed!', $login); | 
		
	
		
			
				|  |  |  |  | 				$this->maniaControl->chat->sendError('Download failed!', $player->login); | 
		
	
		
			
				|  |  |  |  | 				return false; | 
		
	
		
			
				|  |  |  |  | 			} | 
		
	
		
			
				|  |  |  |  | 			// Save map | 
		
	
		
			
				|  |  |  |  | 			$fileName = $mapDir . $mapInfo['TrackID'] . '_' . $mapInfo['Name'] . '.Map.Gbx'; | 
		
	
		
			
				|  |  |  |  | 			if (!file_put_contents($fileName, $file)) { | 
		
	
		
			
				|  |  |  |  | 				// Save error | 
		
	
		
			
				|  |  |  |  | 				$this->maniaControl->chat->sendError('Saving map failed!', $login); | 
		
	
		
			
				|  |  |  |  | 				$this->maniaControl->chat->sendError('Saving map failed!', $player->login); | 
		
	
		
			
				|  |  |  |  | 				return false; | 
		
	
		
			
				|  |  |  |  | 			} | 
		
	
		
			
				|  |  |  |  | 			// Check for valid map | 
		
	
		
			
				|  |  |  |  | 			if (!$this->maniaControl->client->query('CheckMapForCurrentServerParams', $fileName)) { | 
		
	
		
			
				|  |  |  |  | 				trigger_error("Couldn't check if map is valid. " . $this->maniaControl->getClientErrorText()); | 
		
	
		
			
				|  |  |  |  | 				$this->maniaControl->chat->sendError('Error checking map!', $login); | 
		
	
		
			
				|  |  |  |  | 				$this->maniaControl->chat->sendError('Error checking map!', $player->login); | 
		
	
		
			
				|  |  |  |  | 				return false; | 
		
	
		
			
				|  |  |  |  | 			} | 
		
	
		
			
				|  |  |  |  | 			$response = $this->maniaControl->client->getResponse(); | 
		
	
		
			
				|  |  |  |  | 			if (!$response) { | 
		
	
		
			
				|  |  |  |  | 				// Inalid map type | 
		
	
		
			
				|  |  |  |  | 				$this->maniaControl->chat->sendError("Invalid map type.", $login); | 
		
	
		
			
				|  |  |  |  | 				$this->maniaControl->chat->sendError("Invalid map type.", $player->login); | 
		
	
		
			
				|  |  |  |  | 				return false; | 
		
	
		
			
				|  |  |  |  | 			} | 
		
	
		
			
				|  |  |  |  | 			// Add map to map list | 
		
	
		
			
				|  |  |  |  | 			if (!$this->maniaControl->client->query('InsertMap', $fileName)) { | 
		
	
		
			
				|  |  |  |  | 				$this->maniaControl->chat->sendError("Couldn't add map to match settings!", $login); | 
		
	
		
			
				|  |  |  |  | 				$this->maniaControl->chat->sendError("Couldn't add map to match settings!", $player->login); | 
		
	
		
			
				|  |  |  |  | 				return false; | 
		
	
		
			
				|  |  |  |  | 			} | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendSuccess('Map $<' . $mapInfo['Name'] . '$> successfully added!'); | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendSuccess('Map $<' . $mapInfo['Name'] . '$> added!'); | 
		
	
		
			
				|  |  |  |  | 			return true; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		// TODO: add local map by filename | 
		
	
	
		
			
				
					
					|  |  |  | @@ -611,13 +502,12 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 	 * Handle nextmap command | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
		
			
				|  |  |  |  | 	 * @param array $chat        	 | 
		
	
		
			
				|  |  |  |  | 	 * @param Player $player        	 | 
		
	
		
			
				|  |  |  |  | 	 * @return bool | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_nextmap(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('nextmap', 'operator'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 	private function command_nextmap(array $chat, Player $player) { | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($player, Authentication::AUTH_LEVEL_OPERATOR)) { | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($player); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		return $this->maniaControl->client->query('NextMap'); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -627,13 +517,12 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 	 * Handle retartmap command | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
		
			
				|  |  |  |  | 	 * @param array $chat        	 | 
		
	
		
			
				|  |  |  |  | 	 * @param Player $player        	 | 
		
	
		
			
				|  |  |  |  | 	 * @return bool | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_restartmap(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('restartmap', 'operator'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 	private function command_restartmap(array $chat, Player $player) { | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($player, Authentication::AUTH_LEVEL_OPERATOR)) { | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($player); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		return $this->maniaControl->client->query('RestartMap'); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -643,13 +532,12 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 	 * Handle setservername command | 
		
	
		
			
				|  |  |  |  | 	 * | 
		
	
		
			
				|  |  |  |  | 	 * @param array $chat        	 | 
		
	
		
			
				|  |  |  |  | 	 * @param Player $player        	 | 
		
	
		
			
				|  |  |  |  | 	 * @return bool | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function command_setservername(array $chat) { | 
		
	
		
			
				|  |  |  |  | 		$login = $chat[1][1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($login, $this->getRightsLevel('setservername', 'admin'))) { | 
		
	
		
			
				|  |  |  |  | 			// Not allowed! | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($login); | 
		
	
		
			
				|  |  |  |  | 	private function command_setservername(array $chat, Player $player) { | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->authentication->checkRight($player, Authentication::AUTH_LEVEL_ADMIN)) { | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->authentication->sendNotAllowed($player); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$params = explode(' ', $chat[1][2], 2); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -660,11 +548,11 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 		$serverName = $params[1]; | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->client->query('SetServerName', $serverName)) { | 
		
	
		
			
				|  |  |  |  | 			trigger_error("Couldn't set server name. " . $this->maniaControl->getClientErrorText()); | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendError("Error!", $login); | 
		
	
		
			
				|  |  |  |  | 			$this->maniaControl->chat->sendError("Error setting server name!", $player->login); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$serverName = $this->maniaControl->server->getName(); | 
		
	
		
			
				|  |  |  |  | 		$this->maniaControl->chat->sendInformation("New Name: " . $serverName, $login); | 
		
	
		
			
				|  |  |  |  | 		$this->maniaControl->chat->sendInformation("New Name: " . $serverName, $player->login); | 
		
	
		
			
				|  |  |  |  | 		return true; | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -699,7 +587,7 @@ class Commands { | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	private function shutdownServer($login = '#') { | 
		
	
		
			
				|  |  |  |  | 		if (!$this->maniaControl->client->query('StopServer')) { | 
		
	
		
			
				|  |  |  |  | 			trigger_error("Server shutdown command from '{$login}' failed. " . $this->maniaControl->getClientErrorText()); | 
		
	
		
			
				|  |  |  |  | 			trigger_error("Server shutdown command from '{login}' failed. " . $this->maniaControl->getClientErrorText()); | 
		
	
		
			
				|  |  |  |  | 			return false; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		$this->maniaControl->quit("Server shutdown requested by '{$login}'"); | 
		
	
	
		
			
				
					
					|  |  |  |   |