/**
  * @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 testAssemblingWithHostnameAndTransparentWithBaseUrl()
 {
     $base = 'http://www.example.com/~users/public/www/';
     $hostname = RouterHostnameRule::create(':subdomain.example.com')->setDefaults(array('subdomain' => 'www'));
     $transparent = RouterTransparentRule::create('/company/:id')->setRequirements(array('id' => '\\d+'));
     $chain = RouterChainRule::create()->chain($hostname)->chain($transparent);
     $this->router->setBaseUrl(HttpUrl::create()->parse($base));
     $this->router->addRoute('chain', $chain);
     $this->assertEquals('http://test.example.com/~users/public/www/company/123', $this->router->assembly(array('subdomain' => 'test', 'id' => 123), 'chain'));
 }
 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)));
 }
Ejemplo n.º 7
0
    $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 '';
     }
 }