split up tools class in FileUtil and ManialinkUtil
This commit is contained in:
		
							
								
								
									
										6
									
								
								application/ManiaControl_64077.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								application/ManiaControl_64077.log
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | [10-Nov-2013 12:57:05 UTC] Loading ManiaControl v0.1... | ||||||
|  | [10-Nov-2013 12:57:05 UTC] Starting ManiaControl v0.1! | ||||||
|  | [10-Nov-2013 12:57:05 UTC] Connecting to server at 144.76.158.111:18070... | ||||||
|  | [10-Nov-2013 12:57:06 UTC] Server connection succesfully established! | ||||||
|  | [10-Nov-2013 12:57:06 UTC] Script callbacks successfully enabled. | ||||||
|  | [10-Nov-2013 12:57:06 UTC] Loading completed! | ||||||
| @@ -28,7 +28,7 @@ class Authentication { | |||||||
| 		$this->mc = $mc; | 		$this->mc = $mc; | ||||||
| 		 | 		 | ||||||
| 		// Load config | 		// Load config | ||||||
| 		$this->config = Tools::loadConfig('authentication.xml'); | 		$this->config = FileUtil::loadConfig('authentication.xml'); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
|   | |||||||
| @@ -31,7 +31,7 @@ class Commands { | |||||||
| 		$this->mc = $mc; | 		$this->mc = $mc; | ||||||
| 		 | 		 | ||||||
| 		// Load config | 		// Load config | ||||||
| 		$this->config = Tools::loadConfig('commands.xml'); | 		$this->config = FileUtil::loadConfig('commands.xml'); | ||||||
| 		 | 		 | ||||||
| 		// Register for callbacks | 		// Register for callbacks | ||||||
| 		$this->mc->callbacks->registerCallbackHandler(Callbacks::CB_MC_5_SECOND, $this, 'each5Seconds'); | 		$this->mc->callbacks->registerCallbackHandler(Callbacks::CB_MC_5_SECOND, $this, 'each5Seconds'); | ||||||
| @@ -531,7 +531,7 @@ class Commands { | |||||||
| 				$title = strtolower(substr($serverInfo['TitleId'], 0, 2)); | 				$title = strtolower(substr($serverInfo['TitleId'], 0, 2)); | ||||||
| 				// Check if map exists | 				// Check if map exists | ||||||
| 				$url = 'http://' . $title . '.mania-exchange.com/api/tracks/get_track_info/id/' . $params[1] . '?format=json'; | 				$url = 'http://' . $title . '.mania-exchange.com/api/tracks/get_track_info/id/' . $params[1] . '?format=json'; | ||||||
| 				$mapInfo = Tools::loadFile($url); | 				$mapInfo = FileUtil::loadFile($url); | ||||||
| 				if (!$mapInfo || strlen($mapInfo) <= 0) { | 				if (!$mapInfo || strlen($mapInfo) <= 0) { | ||||||
| 					// Invalid id | 					// Invalid id | ||||||
| 					$this->mc->chat->sendError('Invalid MX-Id!', $login); | 					$this->mc->chat->sendError('Invalid MX-Id!', $login); | ||||||
| @@ -539,7 +539,7 @@ class Commands { | |||||||
| 				} | 				} | ||||||
| 				$mapInfo = json_decode($mapInfo, true); | 				$mapInfo = json_decode($mapInfo, true); | ||||||
| 				$url = 'http://' . $title . '.mania-exchange.com/tracks/download/' . $params[1]; | 				$url = 'http://' . $title . '.mania-exchange.com/tracks/download/' . $params[1]; | ||||||
| 				$file = Tools::loadFile($url); | 				$file = FileUtil::loadFile($url); | ||||||
| 				if (!$file) { | 				if (!$file) { | ||||||
| 					// Download error | 					// Download error | ||||||
| 					$this->mc->chat->sendError('Download failed!', $login); | 					$this->mc->chat->sendError('Download failed!', $login); | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ class Database { | |||||||
| 		$this->maniaControl = $maniaControl; | 		$this->maniaControl = $maniaControl; | ||||||
| 		 | 		 | ||||||
| 		// Load config | 		// Load config | ||||||
| 		$this->config = Tools::loadConfig('database.xml'); | 		$this->config = FileUtil::loadConfig('database.xml'); | ||||||
| 		 | 		 | ||||||
| 		// Get mysql server information | 		// Get mysql server information | ||||||
| 		$host = $this->config->xpath('host'); | 		$host = $this->config->xpath('host'); | ||||||
|   | |||||||
							
								
								
									
										79
									
								
								application/core/fileUtil.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								application/core/fileUtil.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,79 @@ | |||||||
|  | <?php | ||||||
|  |  | ||||||
|  | namespace ManiaControl; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * File utility class | ||||||
|  |  * | ||||||
|  |  * @author steeffeen & kremsy | ||||||
|  |  */ | ||||||
|  | class FileUtil { | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * Load a remote file | ||||||
|  | 	 * | ||||||
|  | 	 * @param string $url        	 | ||||||
|  | 	 * @return string || null | ||||||
|  | 	 */ | ||||||
|  | 	public static function loadFile($url) { | ||||||
|  | 		if (!$url) { | ||||||
|  | 			return null; | ||||||
|  | 		} | ||||||
|  | 		$urlData = parse_url($url); | ||||||
|  | 		$port = (isset($urlData['port']) ? $urlData['port'] : 80); | ||||||
|  | 		 | ||||||
|  | 		$fsock = fsockopen($urlData['host'], $port); | ||||||
|  | 		stream_set_timeout($fsock, 3); | ||||||
|  | 		 | ||||||
|  | 		$query = 'GET ' . $urlData['path'] . ' HTTP/1.0' . PHP_EOL; | ||||||
|  | 		$query .= 'Host: ' . $urlData['host'] . PHP_EOL; | ||||||
|  | 		$query .= 'Content-Type: UTF-8' . PHP_EOL; | ||||||
|  | 		$query .= 'User-Agent: ManiaControl v' . ManiaControl::VERSION . PHP_EOL; | ||||||
|  | 		$query .= PHP_EOL; | ||||||
|  | 		 | ||||||
|  | 		fwrite($fsock, $query); | ||||||
|  | 		 | ||||||
|  | 		$buffer = ''; | ||||||
|  | 		$info = array('timed_out' => false); | ||||||
|  | 		while (!feof($fsock) && !$info['timed_out']) { | ||||||
|  | 			$buffer .= fread($fsock, 1024); | ||||||
|  | 			$info = stream_get_meta_data($fsock); | ||||||
|  | 		} | ||||||
|  | 		fclose($fsock); | ||||||
|  | 		 | ||||||
|  | 		if ($info['timed_out'] || !$buffer) { | ||||||
|  | 			return null; | ||||||
|  | 		} | ||||||
|  | 		if (substr($buffer, 9, 3) != "200") { | ||||||
|  | 			return null; | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		$result = explode("\r\n\r\n", $buffer, 2); | ||||||
|  | 		 | ||||||
|  | 		if (count($result) < 2) { | ||||||
|  | 			return null; | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return $result[1]; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * Load config xml-file | ||||||
|  | 	 * | ||||||
|  | 	 * @param string $fileName        	 | ||||||
|  | 	 * @return \SimpleXMLElement | ||||||
|  | 	 */ | ||||||
|  | 	public static function loadConfig($fileName) { | ||||||
|  | 		if (!$fileName) { | ||||||
|  | 			return null; | ||||||
|  | 		} | ||||||
|  | 		$fileLocation = ManiaControlDir . '/configs/' . $fileName; | ||||||
|  | 		if (!file_exists($fileLocation)) { | ||||||
|  | 			trigger_error("Config file doesn't exist! ({$fileName})"); | ||||||
|  | 			return null; | ||||||
|  | 		} | ||||||
|  | 		return simplexml_load_file($fileLocation); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | ?> | ||||||
| @@ -10,12 +10,12 @@ require_once __DIR__ . '/callbacks.php'; | |||||||
| require_once __DIR__ . '/chat.php'; | require_once __DIR__ . '/chat.php'; | ||||||
| require_once __DIR__ . '/commands.php'; | require_once __DIR__ . '/commands.php'; | ||||||
| require_once __DIR__ . '/database.php'; | require_once __DIR__ . '/database.php'; | ||||||
|  | require_once __DIR__ . '/fileUtil.php'; | ||||||
| require_once __DIR__ . '/manialinkIdHandler.php'; | require_once __DIR__ . '/manialinkIdHandler.php'; | ||||||
| require_once __DIR__ . '/playerHandler.php'; | require_once __DIR__ . '/playerHandler.php'; | ||||||
| require_once __DIR__ . '/pluginHandler.php'; | require_once __DIR__ . '/pluginHandler.php'; | ||||||
| require_once __DIR__ . '/server.php'; | require_once __DIR__ . '/server.php'; | ||||||
| require_once __DIR__ . '/settingManager.php'; | require_once __DIR__ . '/settingManager.php'; | ||||||
| require_once __DIR__ . '/tools.php'; |  | ||||||
| list($endiantest) = array_values(unpack('L1L', pack('V', 1))); | list($endiantest) = array_values(unpack('L1L', pack('V', 1))); | ||||||
| if ($endiantest == 1) { | if ($endiantest == 1) { | ||||||
| 	require_once __DIR__ . '/PhpRemote/GbxRemote.inc.php'; | 	require_once __DIR__ . '/PhpRemote/GbxRemote.inc.php'; | ||||||
| @@ -61,7 +61,7 @@ class ManiaControl { | |||||||
| 	 * Construct ManiaControl | 	 * Construct ManiaControl | ||||||
| 	 */ | 	 */ | ||||||
| 	public function __construct() { | 	public function __construct() { | ||||||
| 		$this->config = Tools::loadConfig('core.xml'); | 		$this->config = FileUtil::loadConfig('core.xml'); | ||||||
| 		$this->database = new Database($this); | 		$this->database = new Database($this); | ||||||
| 		$this->settingManager = new SettingManager($this); | 		$this->settingManager = new SettingManager($this); | ||||||
| 		$this->chat = new Chat($this); | 		$this->chat = new Chat($this); | ||||||
| @@ -160,10 +160,6 @@ class ManiaControl { | |||||||
| 	 * Connect to ManiaPlanet server | 	 * Connect to ManiaPlanet server | ||||||
| 	 */ | 	 */ | ||||||
| 	private function connect() { | 	private function connect() { | ||||||
| 		$enable = $this->server->config->xpath('enable'); |  | ||||||
| 		$enable = Tools::toBool($enable[0]); |  | ||||||
| 		if (!$enable) return; |  | ||||||
| 		 |  | ||||||
| 		// Load remote client | 		// Load remote client | ||||||
| 		$this->client = new \IXR_ClientMulticall_Gbx(); | 		$this->client = new \IXR_ClientMulticall_Gbx(); | ||||||
| 		 | 		 | ||||||
|   | |||||||
| @@ -7,6 +7,36 @@ | |||||||
|  */ |  */ | ||||||
| class ManialinkUtil { | class ManialinkUtil { | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * Send the given manialink to players | ||||||
|  | 	 * | ||||||
|  | 	 * @param string $manialink        	 | ||||||
|  | 	 * @param array $logins        	 | ||||||
|  | 	 * @return bool | ||||||
|  | 	 */ | ||||||
|  | 	public static function sendManialinkPage($client, $manialinkText, $logins = null, $timeout = 0, $hideOnClick = false) { | ||||||
|  | 		if (!$client || !$manialinkText) { | ||||||
|  | 			return false; | ||||||
|  | 		} | ||||||
|  | 		if (!$logins) { | ||||||
|  | 			return $client->query('SendDisplayManialinkPage', $manialinkText, $timeout, $hideOnClick); | ||||||
|  | 		} | ||||||
|  | 		if (is_string($logins)) { | ||||||
|  | 			return $client->query('SendDisplayManialinkPageToLogin', $logins, $manialinkText, $timeout, $hideOnClick); | ||||||
|  | 		} | ||||||
|  | 		if (is_array($logins)) { | ||||||
|  | 			$success = true; | ||||||
|  | 			foreach ($logins as $login) { | ||||||
|  | 				$subSuccess = $client->query('SendDisplayManialinkPageToLogin', $login, $manialinkText, $timeout, $hideOnClick); | ||||||
|  | 				if (!$subSuccess) { | ||||||
|  | 					$success = false; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			return $success; | ||||||
|  | 		} | ||||||
|  | 		return false; | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * Build new simple xml element | 	 * Build new simple xml element | ||||||
| 	 * | 	 * | ||||||
|   | |||||||
| @@ -31,7 +31,7 @@ class Server { | |||||||
| 		$this->mc = $mc; | 		$this->mc = $mc; | ||||||
| 		 | 		 | ||||||
| 		// Load config | 		// Load config | ||||||
| 		$this->config = Tools::loadConfig('server.xml'); | 		$this->config = FileUtil::loadConfig('server.xml'); | ||||||
| 		 | 		 | ||||||
| 		// Register for callbacks | 		// Register for callbacks | ||||||
| 		$this->mc->callbacks->registerCallbackHandler(Callbacks::CB_MC_1_SECOND, $this, 'eachSecond'); | 		$this->mc->callbacks->registerCallbackHandler(Callbacks::CB_MC_1_SECOND, $this, 'eachSecond'); | ||||||
|   | |||||||
| @@ -1,149 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace ManiaControl; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class for basic tools |  | ||||||
|  * |  | ||||||
|  * @author steeffeen |  | ||||||
|  */ |  | ||||||
| class Tools { |  | ||||||
|  |  | ||||||
| 	/** |  | ||||||
| 	 * Check if the given setting is enabled |  | ||||||
| 	 * |  | ||||||
| 	 * @param simple_xml_element $config        	 |  | ||||||
| 	 * @param string $setting        	 |  | ||||||
| 	 */ |  | ||||||
| 	public static function checkSetting($config, $setting) { |  | ||||||
| 		$settings = $config->xpath('//' . $setting); |  | ||||||
| 		if (empty($settings)) { |  | ||||||
| 			return false; |  | ||||||
| 		} |  | ||||||
| 		else { |  | ||||||
| 			foreach ($settings as $setting) { |  | ||||||
| 				return self::toBool((string) $setting[0]); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	/** |  | ||||||
| 	 * Load a remote file |  | ||||||
| 	 * |  | ||||||
| 	 * @param string $url        	 |  | ||||||
| 	 * @return string || null |  | ||||||
| 	 */ |  | ||||||
| 	public static function loadFile($url) { |  | ||||||
| 		if (!$url) return false; |  | ||||||
| 		$urlData = parse_url($url); |  | ||||||
| 		$port = (isset($urlData['port']) ? $urlData['port'] : 80); |  | ||||||
| 		 |  | ||||||
| 		$fsock = fsockopen($urlData['host'], $port); |  | ||||||
| 		stream_set_timeout($fsock, 3); |  | ||||||
| 		 |  | ||||||
| 		$query = 'GET ' . $urlData['path'] . ' HTTP/1.0' . PHP_EOL; |  | ||||||
| 		$query .= 'Host: ' . $urlData['host'] . PHP_EOL; |  | ||||||
| 		$query .= 'Content-Type: UTF-8' . PHP_EOL; |  | ||||||
| 		$query .= 'User-Agent: ManiaControl v' . ManiaControl::VERSION . PHP_EOL; |  | ||||||
| 		$query .= PHP_EOL; |  | ||||||
| 		 |  | ||||||
| 		fwrite($fsock, $query); |  | ||||||
| 		 |  | ||||||
| 		$buffer = ''; |  | ||||||
| 		$info = array('timed_out' => false); |  | ||||||
| 		while (!feof($fsock) && !$info['timed_out']) { |  | ||||||
| 			$buffer .= fread($fsock, 1024); |  | ||||||
| 			$info = stream_get_meta_data($fsock); |  | ||||||
| 		} |  | ||||||
| 		fclose($fsock); |  | ||||||
| 		 |  | ||||||
| 		if ($info['timed_out'] || !$buffer) { |  | ||||||
| 			return null; |  | ||||||
| 		} |  | ||||||
| 		if (substr($buffer, 9, 3) != "200") { |  | ||||||
| 			return null; |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		$result = explode("\r\n\r\n", $buffer, 2); |  | ||||||
| 		 |  | ||||||
| 		if (count($result) < 2) { |  | ||||||
| 			return null; |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		return $result[1]; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	/** |  | ||||||
| 	 * Convert given data to real boolean |  | ||||||
| 	 * |  | ||||||
| 	 * @param |  | ||||||
| 	 *        	mixed data |  | ||||||
| 	 */ |  | ||||||
| 	public static function toBool($var) { |  | ||||||
| 		if ($var === true) return true; |  | ||||||
| 		if ($var === false) return false; |  | ||||||
| 		if ($var === null) return false; |  | ||||||
| 		if (is_object($var)) { |  | ||||||
| 			$var = (string) $var; |  | ||||||
| 		} |  | ||||||
| 		if (is_int($var)) { |  | ||||||
| 			return ($var > 0); |  | ||||||
| 		} |  | ||||||
| 		else if (is_string($var)) { |  | ||||||
| 			$text = strtolower($var); |  | ||||||
| 			if ($text === 'true' || $text === 'yes') { |  | ||||||
| 				return true; |  | ||||||
| 			} |  | ||||||
| 			else if ($text === 'false' || $text === 'no') { |  | ||||||
| 				return false; |  | ||||||
| 			} |  | ||||||
| 			else { |  | ||||||
| 				return ((int) $text > 0); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		else { |  | ||||||
| 			return (bool) $var; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	/** |  | ||||||
| 	 * Load config xml-file |  | ||||||
| 	 * |  | ||||||
| 	 * @param string $fileName        	 |  | ||||||
| 	 * @return \SimpleXMLElement |  | ||||||
| 	 */ |  | ||||||
| 	public static function loadConfig($fileName) { |  | ||||||
| 		// Load config file from configs folder |  | ||||||
| 		$fileLocation = ManiaControlDir . '/configs/' . $fileName; |  | ||||||
| 		if (!file_exists($fileLocation)) { |  | ||||||
| 			trigger_error("Config file doesn't exist! (" . $fileName . ")", E_USER_ERROR); |  | ||||||
| 		} |  | ||||||
| 		return simplexml_load_file($fileLocation); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	/** |  | ||||||
| 	 * Send the given manialink to players |  | ||||||
| 	 * |  | ||||||
| 	 * @param string $manialink        	 |  | ||||||
| 	 * @param array $logins        	 |  | ||||||
| 	 */ |  | ||||||
| 	public static function sendManialinkPage($client, $manialink, $logins = null, $timeout = 0, $hideOnClick = false) { |  | ||||||
| 		if (!$client || !$manialink) return; |  | ||||||
| 		if (!$logins) { |  | ||||||
| 			// Send manialink to all players |  | ||||||
| 			$client->query('SendDisplayManialinkPage', $manialink, $timeout, $hideOnClick); |  | ||||||
| 		} |  | ||||||
| 		else if (is_array($logins)) { |  | ||||||
| 			// Send manialink to players |  | ||||||
| 			foreach ($logins as $login) { |  | ||||||
| 				$client->query('SendDisplayManialinkPageToLogin', $login, $manialink, $timeout, $hideOnClick); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		else if (is_string($logins)) { |  | ||||||
| 			// Send manialink to player |  | ||||||
| 			$client->query('SendDisplayManialinkPageToLogin', $logins, $manialink, $timeout, $hideOnClick); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| ?> |  | ||||||
		Reference in New Issue
	
	Block a user