From 904b4eb6e1307efdfd6277aece8764de41f56d10 Mon Sep 17 00:00:00 2001 From: kremsy Date: Fri, 27 Dec 2013 21:10:53 +0100 Subject: [PATCH] map add over mx fixed --- application/core/FileUtil.php | 5 +++-- application/core/Maps/Map.php | 2 +- application/core/Maps/MapManager.php | 27 ++++++++++++++++--------- application/core/Players/PlayerList.php | 2 +- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/application/core/FileUtil.php b/application/core/FileUtil.php index 46f8e33c..65c820c4 100644 --- a/application/core/FileUtil.php +++ b/application/core/FileUtil.php @@ -12,9 +12,10 @@ abstract class FileUtil { * Load a remote file * * @param string $url + * @param string $contentType * @return string || null */ - public static function loadFile($url) { + public static function loadFile($url, $contentType = 'UTF-8') { if (!$url) { return null; } @@ -26,7 +27,7 @@ abstract class FileUtil { $query = 'GET ' . $urlData['path'] . ' HTTP/1.0' . PHP_EOL; $query .= 'Host: ' . $urlData['host'] . PHP_EOL; - $query .= 'Content-Type: UTF-8' . PHP_EOL; + $query .= 'Content-Type: ' . $contentType . PHP_EOL; $query .= 'User-Agent: ManiaControl v' . ManiaControl::VERSION . PHP_EOL; $query .= PHP_EOL; diff --git a/application/core/Maps/Map.php b/application/core/Maps/Map.php index f211f15f..c4ecca81 100644 --- a/application/core/Maps/Map.php +++ b/application/core/Maps/Map.php @@ -83,7 +83,7 @@ class Map { $this->comment = $this->mapFetcher->comment; } - // TODO: define timeout if mx is down + // TODO: define timeout if mx is down,todo fetch all map infos at once (maybe way faster) $serverInfo = $this->maniaControl->server->getSystemInfo(); $title = strtoupper(substr($serverInfo['TitleId'], 0, 2)); $this->mx = new \MXInfoFetcher($title, $this->uid, false); diff --git a/application/core/Maps/MapManager.php b/application/core/Maps/MapManager.php index 7e5e8de5..8dd045a9 100644 --- a/application/core/Maps/MapManager.php +++ b/application/core/Maps/MapManager.php @@ -9,6 +9,7 @@ use ManiaControl\FileUtil; use ManiaControl\ManiaControl; use ManiaControl\Callbacks\CallbackListener; use ManiaControl\Callbacks\CallbackManager; +use MXInfoFetcher; /** @@ -21,7 +22,7 @@ class MapManager implements CallbackListener { * Constants */ const TABLE_MAPS = 'mc_maps'; - + /** * Private properties */ @@ -34,14 +35,14 @@ class MapManager implements CallbackListener { /** * Construct map manager * - * @param \ManiaControl\ManiaControl $maniaControl + * @param \ManiaControl\ManiaControl $maniaControl */ public function __construct(ManiaControl $maniaControl) { $this->maniaControl = $maniaControl; - + // Init database tables $this->initTables(); - + // Create map commands instance $this->mapCommands = new MapCommands($maniaControl); @@ -81,7 +82,7 @@ class MapManager implements CallbackListener { /** * Save map to the database * - * @param \ManiaControl\Maps\Map $map + * @param \ManiaControl\Maps\Map $map * @return boolean */ private function saveMap(Map &$map) { @@ -117,7 +118,7 @@ class MapManager implements CallbackListener { /** * Add a map to the MapList * - * @param \ManiaControl\Maps\Map $map + * @param \ManiaControl\Maps\Map $map * @return bool */ private function addMap(Map $map) { //TODO needed? @@ -192,7 +193,7 @@ class MapManager implements CallbackListener { /** * Handle OnInit callback * - * @param array $callback + * @param array $callback */ public function handleOnInit(array $callback) { $this->updateFullMapList(); @@ -211,7 +212,7 @@ class MapManager implements CallbackListener { /** * Handle BeginMap callback * - * @param array $callback + * @param array $callback */ public function handleBeginMap(array $callback) { if(array_key_exists($callback[1][0]["UId"], $this->mapListUids)){ //Map already exists, only update index @@ -272,13 +273,18 @@ class MapManager implements CallbackListener { // Check if map exists $url = "http://api.mania-exchange.com/{$title}/maps/{$mapId}?format=json"; - $mapInfo = FileUtil::loadFile($url); + + $mapInfo = FileUtil::loadFile($url, "application/json"); + if (!$mapInfo || strlen($mapInfo) <= 0) { // Invalid id $this->maniaControl->chat->sendError('Invalid MX-Id!', $login); return; } + $mapInfo = json_decode($mapInfo, true); + $mapInfo = $mapInfo[0]; + $url = "http://{$title}.mania-exchange.com/tracks/download/{$mapId}"; $file = FileUtil::loadFile($url); if (!$file) { @@ -287,7 +293,7 @@ class MapManager implements CallbackListener { return; } // Save map - $fileName = $mapInfo['TrackID'] . '_' . $mapInfo['Name'] . '.Map.Gbx'; + $fileName = $mapId . '_' . $mapInfo['Name'] . '.Map.Gbx'; $fileName = FileUtil::getClearedFileName($fileName); if (!file_put_contents($mapDir . $fileName, $file)) { // Save error @@ -296,6 +302,7 @@ class MapManager implements CallbackListener { } // Check for valid map $mapFileName = $downloadDirectory . '/' . $fileName; + if (!$this->maniaControl->client->query('CheckMapForCurrentServerParams', $mapFileName)) { trigger_error("Couldn't check if map is valid ('{$mapFileName}'). " . $this->maniaControl->getClientErrorText()); $this->maniaControl->chat->sendError('Error checking map!', $login); diff --git a/application/core/Players/PlayerList.php b/application/core/Players/PlayerList.php index bd19b456..245e0d3c 100644 --- a/application/core/Players/PlayerList.php +++ b/application/core/Players/PlayerList.php @@ -213,7 +213,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { case authenticationManager::AUTH_LEVEL_MASTERADMIN: case authenticationManager::AUTH_LEVEL_SUPERADMIN: $rightLabel->setText("MA"); break; case authenticationManager::AUTH_LEVEL_ADMIN: $rightLabel->setText("AD"); break; - case authenticationManager::AUTH_LEVEL_OPERATOR: $rightLabel->setText("OP"); + case authenticationManager::AUTH_LEVEL_OPERATOR: $rightLabel->setText("MOD"); } $rightLabel->setTextColor("fff");