/** * @param Nette\Application\Request * @return Nette\Application\IResponse */ public function run(Application\Request $request) { $this->request = $request; $httpRequest = $this->context->getByType('Nette\\Http\\IRequest'); if (!$httpRequest->isAjax() && ($request->isMethod('get') || $request->isMethod('head'))) { $refUrl = clone $httpRequest->getUrl(); $url = $this->context->router->constructUrl($request, $refUrl->setPath($refUrl->getScriptPath())); if ($url !== NULL && !$httpRequest->getUrl()->isEqual($url)) { return new Responses\RedirectResponse($url, Http\IResponse::S301_MOVED_PERMANENTLY); } } $params = $request->getParameters(); if (!isset($params['callback'])) { return; } $params['presenter'] = $this; $method = callback($params['callback'])->toReflection(); $response = $method->invokeArgs(Application\UI\PresenterComponentReflection::combineArgs($method, $params)); if (is_string($response)) { $response = array($response, array()); } if (is_array($response)) { if ($response[0] instanceof \SplFileInfo) { $response = $this->createTemplate('Nette\\Templating\\FileTemplate')->setParameters($response[1])->setFile($response[0]); } else { $response = $this->createTemplate('Nette\\Templating\\Template')->setParameters($response[1])->setSource($response[0]); } } if ($response instanceof Nette\Templating\ITemplate) { return new Responses\TextResponse($response); } else { return $response; } }
/** * Returns current authorization handler. * @return IAuthorizator */ public final function getAuthorizator() { return $this->authorizator ?: $this->context->getByType('Nette\\Security\\IAuthorizator'); }
/** * @return Nette\Security\User */ public function getUser() { return $this->context->getByType('Nette\\Security\\User'); }