FileUtil::loadConfig now returns a DOMDocument
improved config loading & error output
This commit is contained in:
		| @@ -68,22 +68,37 @@ abstract class FileUtil { | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * Load config xml-file | 	 * Load the Config XML-File with the given Name | ||||||
| 	 * | 	 * | ||||||
| 	 * @param string $fileName | 	 * @param string $fileName | ||||||
| 	 * @return \SimpleXMLElement | 	 * @return \DOMElement | ||||||
| 	 */ | 	 */ | ||||||
| 	public static function loadConfig($fileName) { | 	public static function loadConfig($fileName) { | ||||||
| 		$fileLocation = ManiaControlDir . 'configs' . DIRECTORY_SEPARATOR . $fileName; | 		$fileLocation = ManiaControlDir . 'configs' . DIRECTORY_SEPARATOR . $fileName; | ||||||
| 		if (!file_exists($fileLocation)) { | 		if (!file_exists($fileLocation)) { | ||||||
| 			logMessage("Config File doesn't exist! ({$fileName})"); | 			logMessage("Config file doesn't exist! ('{$fileName}')"); | ||||||
| 			return null; | 			return null; | ||||||
| 		} | 		} | ||||||
| 		if (!is_readable($fileLocation)) { | 		if (!is_readable($fileLocation)) { | ||||||
| 			logMessage("Config File isn't readable! Please check the File Permissions. ({$fileName})"); | 			logMessage("Config file isn't readable! Please check the file permissions. ('{$fileName}')"); | ||||||
| 			return null; | 			return null; | ||||||
| 		} | 		} | ||||||
| 		return simplexml_load_file($fileLocation); | 		$configFileContent = @file_get_contents($fileLocation); | ||||||
|  | 		if (!$configFileContent) { | ||||||
|  | 			trigger_error("Couldn't load config file! ('{$fileName}')"); | ||||||
|  | 			return null; | ||||||
|  | 		} | ||||||
|  | 		$domDocument = new \DOMDocument(); | ||||||
|  | 		if (!@$domDocument->loadXML($configFileContent)) { | ||||||
|  | 			$message = "Config file isn't maintained properly! ('{$fileName}')"; | ||||||
|  | 			$error   = error_get_last(); | ||||||
|  | 			if ($error && stripos($error['message'], 'DOMDocument::loadXML()') === 0) { | ||||||
|  | 				$message .= PHP_EOL . $error['message']; | ||||||
|  | 			} | ||||||
|  | 			trigger_error($message); | ||||||
|  | 			return null; | ||||||
|  | 		} | ||||||
|  | 		return $domDocument->firstChild; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
|   | |||||||
| @@ -65,7 +65,7 @@ class ManiaControl implements CommandListener, TimerListener { | |||||||
| 	public $authenticationManager = null; | 	public $authenticationManager = null; | ||||||
| 	public $callbackManager = null; | 	public $callbackManager = null; | ||||||
| 	public $chat = null; | 	public $chat = null; | ||||||
| 	/** @var \SimpleXMLElement $config */ | 	/** @var \DOMElement $config */ | ||||||
| 	public $config = null; | 	public $config = null; | ||||||
| 	public $configurator = null; | 	public $configurator = null; | ||||||
| 	/** @var Connection $client */ | 	/** @var Connection $client */ | ||||||
| @@ -160,7 +160,7 @@ class ManiaControl implements CommandListener, TimerListener { | |||||||
| 		if (!$this->config) { | 		if (!$this->config) { | ||||||
| 			$this->quit("Error loading Configuration XML-File! ('{$configFileName}')", true); | 			$this->quit("Error loading Configuration XML-File! ('{$configFileName}')", true); | ||||||
| 		} | 		} | ||||||
| 		if ($this->config->count() < 3) { | 		if ($this->config->childNodes->length < 3) { | ||||||
| 			$this->quit("Your Configuration File ('{$configFileName}') doesn't seem to be maintained properly. Please check it again!", true); | 			$this->quit("Your Configuration File ('{$configFileName}') doesn't seem to be maintained properly. Please check it again!", true); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user