예제 #1
0
 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);
 }
예제 #2
0
 /**
  * @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;
 }
예제 #3
0
 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;
         }
     }
 }