static function exceptionHandler(\Exception $exception) { self::$exception = $exception; $request = Request::getInstance(); $refererURL = $request->getReferer(); $requestURI = \ManiaLib\Utils\URI::getCurrent(); $debug = \ManiaLib\Application\Config::getInstance()->debug; if ($exception instanceof SilentUserException) { $message = static::computeShortMessage($exception) . ' ' . $requestURI; $userMessage = $exception->getMessage(); } elseif ($exception instanceof UserException) { $message = static::computeShortMessage($exception) . ' ' . $requestURI; \ManiaLib\Utils\Logger::user($message); $userMessage = $exception->getMessage(); } else { $requestURILine = sprintf(static::$messageConfigs['default']['line'], 'Request URI', $requestURI); $message = static::computeMessage($exception, static::$messageConfigs['default'], array($requestURILine)); \ManiaLib\Utils\Logger::error($message); $userMessage = null; } $response = Response::getInstance(); if ($message) { $response->message = $debug ? $message : $userMessage; } if ($debug) { $response->width = 300; $response->height = 150; } $response->backLink = $refererURL; $response->registerErrorView(); $response->registerException($exception); }
/** * @param string $path * @param bool $recursive * @param bool $isLaps * @param string[] $mapTypes * @param string $environment * @param int $offset * @param int $length * @return Map[] */ function getList($path, $recursive = false, $isLaps = false, array $mapTypes = array(), $environment = '', $offset = null, $length = null) { $workPath = DedicatedFileService::securePath($this->mapDirectory . $path); $mapTypes = array_map('strtolower', $mapTypes); $maps = array(); $path = str_ireplace('\\', '/', $path); $files = scandir($workPath); foreach ($files as $filename) { if (is_dir($workPath . '/' . $filename)) { if ($filename == '.' || $filename == '..') { continue; } $file = new Directory(); $file->filename = $filename; $file->path = $path; if ($recursive) { $file->children = $this->getList($path . $filename . '/', $recursive, $isLaps, $mapTypes, $environment); if ($file->children) { $maps[] = $file; } } else { $maps[] = $file; } } else { if (preg_match('/\\.map\\.gbx$/ui', substr($filename, -8))) { try { $file = $this->get($filename, $path); if ((!$isLaps || $isLaps && $file->nbLaps != 0) && (!$environment || $environment && $environment == $file->environment) && (!$mapTypes || $mapTypes && in_array(strtolower($file->type), $mapTypes, true))) { $maps[] = $file; } } catch (\Exception $e) { \ManiaLib\Utils\Logger::user('Cannot parse `' . $path . $filename . '`'); } } } } usort($maps, array(__CLASS__, 'compareFiles')); if ($offset !== null) { return array_slice($maps, $offset, $length); } return $maps; }
function preFilter() { $version = self::getVersion(); $minVersion = Config::getInstance()->minVersion; if ($version !== null && $minVersion !== null) { $versionTimestamp = self::version2timestamp($version); $minVersionTimestamp = self::version2timestamp($minVersion); if ($versionTimestamp < $minVersionTimestamp) { \ManiaLib\Utils\Logger::user('Maniaplanet not up-to-date: ' . $version); call_user_func(self::$errorPageCallback); exit; } } }