/** * Returns the url path leading up to the current script. * Used to make the webapp portable to other locations. * * @return string uri */ public function getBaseUri(Request $request) { // Get URI from URL $uri = $request->getUri()->getPath(); // Detect and remove subfolder from URI $server = $request->getServerParams(); $scriptName = $server['SCRIPT_NAME']; if (isset($scriptName)) { $dirname = dirname($scriptName); $dirname = dirname($dirname); $len = strlen($dirname); if ($len > 0 && $dirname != '/') { $uri = substr($uri, $len); } } return $uri; }
/** * @return mixed|null */ public function getRoute() { $this->_routeMap->sortRoutes(); foreach ($this->_routeMap as $route) { if ($this->_request->getMethod() !== $route->getRequestMethod()) { continue; } $route->replaceTokens(); if (preg_match(sprintf("#^%s\$#i", $route->getPattern()), $this->_request->getUri()->getPath(), $matches)) { $this->_request = $this->_request->withAttribute('match', $route->getPattern()); foreach ($matches as $key => $value) { if (!is_int($key)) { $this->_request = $this->_request->withAttribute($key, $value); } } return $route; } } return null; }
/** * Create * * @return Request Request */ public static function fromRequest(ServerRequest $request) { return new HttpMessages_CraftRequest($request->getServerParams(), $request->getUploadedFiles(), $request->getUri(), $request->getMethod(), $request->getBody(), $request->getHeaders(), $request->getCookieParams(), $request->getQueryParams(), $request->getParsedBody(), $request->getProtocolVersion()); }