--- /dev/null
+<?php defined('IN_CMS') or die('No direct access allowed.');\r
+\r
+class Request {\r
+\r
+ public static function uri_segment($index, $default = false) {\r
+ $index--;\r
+ $segments = explode('/', static::uri());\r
+ return isset($segments[$index]) ? $segments[$index] : $default;\r
+ }\r
+ \r
+ public static function uri() {\r
+ if(isset($_SERVER['PATH_INFO'])) {\r
+ $uri = $_SERVER['PATH_INFO'];\r
+ }\r
+ // try request uri\r
+ elseif(isset($_SERVER['REQUEST_URI'])) {\r
+ // make sure we can parse URI\r
+ if(($uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)) === false) {\r
+ throw new Exception('Malformed request URI');\r
+ }\r
+ }\r
+ // cannot process request\r
+ else {\r
+ throw new Exception('Unable to determine the request URI');\r
+ }\r
+\r
+ // remove base url\r
+ $base_url = parse_url(Config::get('application.base_url'), PHP_URL_PATH);\r
+\r
+ if(strlen($base_url)) {\r
+ if(strpos($uri, $base_url) === 0) {\r
+ $uri = substr($uri, strlen($base_url));\r
+ }\r
+ }\r
+\r
+ // remove index file\r
+ $index = '/' . Config::get('application.index_page');\r
+\r
+ if(strpos($uri, $index) === 0) {\r
+ $uri = substr($uri, strlen($index));\r
+ }\r
+\r
+ return trim($uri, '/');\r
+ } \r
+ \r
+}\r