/** * @return HttpUrl **/ protected function getPath(HttpUrl $url) { $reducedUrl = clone $url; $base = RouterRewrite::me()->getBaseUrl(); if (!$base instanceof HttpUrl) { throw new RouterException('Setup base url'); } if (!$base->getScheme()) { $reducedUrl->setScheme(null)->setAuthority(null); } $reducedUrl->setQuery(null); if ($reducedUrl->getScheme() && $base->getScheme() != $reducedUrl->getScheme() || $reducedUrl->getAuthority() && $base->getAuthority() != $reducedUrl->getAuthority()) { return $reducedUrl; } $result = HttpUrl::create(); $baseSegments = explode('/', $base->getPath()); $segments = explode('/', $reducedUrl->getPath()); $originalSegments = $segments; array_pop($baseSegments); while ($baseSegments && $segments && $baseSegments[0] == $segments[0]) { array_shift($baseSegments); array_shift($segments); } if ($baseSegments && $baseSegments[0]) { $segments = $originalSegments; } $result->setPath(implode('/', $segments)); return $result; }
public function testGetPath() { foreach (self::$fixtures as $base => $cases) { $rewriter = RouterRewrite::me()->setBaseUrl(HttpUrl::create()->parse($base)); foreach ($cases as $requestUri => $pathResult) { $actualResult = RouterBaseRuleStub::create()->getPath(HttpUrl::create()->parse($requestUri))->toString(); $this->assertEquals($pathResult, $actualResult, "base url: {$base}\nrequest uri: {$requestUri}"); } } }
public function setUp() { ServerVarUtils::unsetVars($_SERVER); RouterRewrite::me()->setBaseUrl(new HttpUrl()); }
/** * @return string **/ public static function url(array $urlOptions = array(), $name, $reset = false, $encode = true) { return RouterRewrite::me()->assembly($urlOptions, $name, $reset, $encode); }
/** * @return Router */ protected function getRouter() { return RouterRewrite::me()->addRoute(self::DEFAULT_ROUTE_NAME, RouterRegexpRule::create(self::ROUTE_REGEXP)->setMap(array(1 => 'area', 4 => 'id', 6 => 'action', 8 => 'format'))->setDefaults(array('area' => self::DEFAULT_CONTROLLER, 'action' => self::DEFAULT_ACTION, 'id' => 0, 'format' => self::DEFAULT_FORMAT))); }
public function setUp() { $this->router = RouterRewrite::me()->resetAll()->setBaseUrl(HttpUrl::create()); ServerVarUtils::unsetVars($_SERVER); }
$view = $modelAndView->getView(); $model = $modelAndView->getModel(); $prefix = PATH_WEB . '?area='; if (!$view) { $view = $controllerName; } elseif (is_string($view) && $view == 'error') { $view = new RedirectView($prefix); } elseif ($view instanceof RedirectToView) { $view->setPrefix($prefix); } if (!$view instanceof View) { $viewName = $view; $view = PhpViewResolver::create(PATH_TEMPLATES, EXT_TPL)->resolveViewName($viewName); } if (!$view instanceof RedirectView) { $model->set('selfUrl', RouterUrlHelper::url(array('area' => $controllerName), RouterRewrite::me()->getCurrentRouteName(), true))->set('baseUrl', $_SERVER['PHP_SELF']); } $view->render($model); } catch (Exception $e) { $uri = $_SERVER['HTTP_HOST'] . $_SERVER["REQUEST_URI"]; $msg = 'class: ' . get_class($e) . "\n" . 'code: ' . $e->getCode() . "\n" . 'message: ' . $e->getMessage() . "\n\n" . $e->getTraceAsString() . "\n" . "\n_POST=" . var_export($_POST, true) . "\n_GET=" . var_export($_GET, true) . (isset($_SERVER['HTTP_REFERER']) ? "\nREFERER=" . var_export($_SERVER['HTTP_REFERER'], true) : null) . (isset($_SESSION) ? "\n_SESSION=" . var_export($_SESSION, true) : null); if (defined('__LOCAL_DEBUG__')) { echo '<pre>' . $msg . '</pre>'; } else { mail(BUGLOVERS, $uri, $msg); sleep(10); if (!HeaderUtils::redirectBack()) { HeaderUtils::redirectRaw('/'); } } }
protected function resolvePath() { if (($base = RouterRewrite::me()->getBaseUrl()) && $this->scheme == $base->getScheme()) { return rtrim($base->getPath(), '/'); } else { return ''; } }