/** * Conditional redirect to canonicalized URI. * @return void * @throws NAbortException */ public function canonicalize() { if (!$this->isAjax() && ($this->request->isMethod('get') || $this->request->isMethod('head'))) { $url = $this->createRequest($this, $this->action, $this->getGlobalState() + $this->request->getParameters(), 'redirectX'); if ($url !== NULL && !$this->getHttpRequest()->getUrl()->isEqual($url)) { $this->sendResponse(new NRedirectResponse($url, IHttpResponse::S301_MOVED_PERMANENTLY)); } } }
/** * @return IPresenterResponse */ public function run(NPresenterRequest $request) { $this->request = $request; $httpRequest = $this->context->getByType('IHttpRequest'); if (!$httpRequest->isAjax() && ($request->isMethod('get') || $request->isMethod('head'))) { $refUrl = clone $httpRequest->getUrl(); $url = $this->context->getService('router')->constructUrl($request, $refUrl->setPath($refUrl->getScriptPath())); if ($url !== NULL && !$httpRequest->getUrl()->isEqual($url)) { return new NRedirectResponse($url, IHttpResponse::S301_MOVED_PERMANENTLY); } } $params = $request->getParameters(); if (!isset($params['callback'])) { throw new NBadRequestException("Parameter callback is missing."); } $params['presenter'] = $this; $callback = new NCallback($params['callback']); $response = $callback->invokeArgs(NPresenterComponentReflection::combineArgs($callback->toReflection(), $params)); if (is_string($response)) { $response = array($response, array()); } if (is_array($response)) { if ($response[0] instanceof SplFileInfo) { $response = $this->createTemplate('NFileTemplate') ->setParameters($response[1])->setFile($response[0]); } else { $response = $this->createTemplate('NTemplate') ->setParameters($response[1])->setSource($response[0]); } } if ($response instanceof ITemplate) { return new NTextResponse($response); } else { return $response; } }