/** * @param \Nette\Application\Application $application * @param \Nette\Application\Request $request */ public function __invoke(Application $application, Request $request) { if (PHP_SAPI === 'cli') { newrelic_background_job(TRUE); } $params = $request->getParameters(); $action = $request->getPresenterName(); if (isset($params[$this->actionKey])) { $action = sprintf('%s:%s', $action, $params[$this->actionKey]); } if (!empty($this->map)) { foreach ($this->map as $pattern => $appName) { if ($pattern === '*') { continue; } if (Strings::endsWith($pattern, '*')) { $pattern = Strings::substring($pattern, 0, -1); } if (Strings::startsWith($pattern, ':')) { $pattern = Strings::substring($pattern, 1); } if (Strings::startsWith($action, $pattern)) { \VrtakCZ\NewRelic\Tracy\Bootstrap::setup($appName, $this->license); break; } } } newrelic_name_transaction($action); newrelic_disable_autorum(); }
public function constructUrl(Request $appRequest, Url $refUrl) { // Module prefix not match. if ($this->module && !Strings::startsWith($appRequest->getPresenterName(), $this->module)) { return null; } $params = $appRequest->getParameters(); $urlStack = []; // Module prefix $moduleFrags = explode(":", Strings::lower($appRequest->getPresenterName())); $resourceName = array_pop($moduleFrags); $urlStack += $moduleFrags; // Resource $urlStack[] = Strings::lower($resourceName); // Id if (isset($params['id']) && is_scalar($params['id'])) { $urlStack[] = $params['id']; unset($params['id']); } // Set custom action if (isset($params['action']) && $this->_isApiAction($params['action'])) { unset($params['action']); } $url = $refUrl->getBaseUrl() . implode('/', $urlStack); // Add query parameters if (!empty($params)) { $url .= "?" . http_build_query($params); } return $url; }
/** * Constructs absolute URL from Request object. * @return string|NULL */ public function constructUrl(Application\Request $appRequest, Nette\Http\Url $refUrl) { if ($this->flags & self::ONE_WAY) { return NULL; } $params = $appRequest->getParameters(); // presenter name $presenter = $appRequest->getPresenterName(); if (strncmp($presenter, $this->module, strlen($this->module)) === 0) { $params[self::PRESENTER_KEY] = substr($presenter, strlen($this->module)); } else { return NULL; } // remove default values; NULL values are retain foreach ($this->defaults as $key => $value) { if (isset($params[$key]) && $params[$key] == $value) { // intentionally == unset($params[$key]); } } $url = ($this->flags & self::SECURED ? 'https://' : 'http://') . $refUrl->getAuthority() . $refUrl->getPath(); $sep = ini_get('arg_separator.input'); $query = http_build_query($params, '', $sep ? $sep[0] : '&'); if ($query != '') { // intentionally == $url .= '?' . $query; } return $url; }
/** * Constructs absolute URL from Request object. * @return string|NULL */ public function constructUrl(Nette\Application\Request $appRequest, Nette\Http\Url $refUrl) { if ($this->cachedRoutes === NULL) { $this->warmupCache(); } if ($this->module) { if (strncmp($tmp = $appRequest->getPresenterName(), $this->module, strlen($this->module)) === 0) { $appRequest = clone $appRequest; $appRequest->setPresenterName(substr($tmp, strlen($this->module))); } else { return NULL; } } $presenter = $appRequest->getPresenterName(); if (!isset($this->cachedRoutes[$presenter])) { $presenter = '*'; } foreach ($this->cachedRoutes[$presenter] as $route) { $url = $route->constructUrl($appRequest, $refUrl); if ($url !== NULL) { return $url; } } return NULL; }
/** * @param \Ark8\Security\Authorizators\Request $request * @return array * @throws \Nette\InvalidStateException */ private function getSignal(Request $request) { $params = $request->getParameters(); if ($this->httpRequest->isAjax()) { $params += $request->getPost(); } elseif (($tmp = $request->getPost(Presenter::SIGNAL_KEY)) !== NULL) { $params[self::SIGNAL_KEY] = $tmp; } $signal = NULL; $signalReceiver = ''; if (isset($params[Presenter::SIGNAL_KEY])) { $param = $params[Presenter::SIGNAL_KEY]; $pos = strrpos($param, '-'); if ($pos) { $signalReceiver = substr($param, 0, $pos); $signal = substr($param, $pos + 1); } else { $signalReceiver = $this->getUniqueId(); $signal = $param; } if ($signal == NULL) { // intentionally == $signal = NULL; } } return [$signal, explode('-', $signalReceiver)]; }
/** * @param \Kdyby\Translation\Translator $translator * @return string|NULL */ public function resolve(Kdyby\Translation\Translator $translator) { if ($this->request === NULL) { return NULL; } $params = $this->request->getParameters(); return !empty($params['locale']) ? $params['locale'] : NULL; }
/** * @param Application\Request $appRequest * @param Nette\Http\Url $refUrl * @return NULL|string */ public function constructUrl(Application\Request $appRequest, Nette\Http\Url $refUrl) { $parameters = $appRequest->getParameters(); if (isset($parameters['action']) && $parameters['action'] == FALSE) { $parameters['action'] = NULL; } $appRequest->setParameters($parameters); return parent::constructUrl($appRequest, $refUrl); }
public function handleApplicationRequest(Application\Application $application, Application\Request $request) { if ($request->getPresenterName() === 'Kdyby:Cli') { $parameters = $request->getParameters(); if (isset($parameters['output']) && ($output = $parameters['output']) instanceof OutputInterface) { $this->outputWriter->setOutputInterface($output); } } }
public function run(Nette\Application\Request $request) { $exception = $request->getParameter('exception'); if ($exception instanceof Nette\Application\BadRequestException) { return new Responses\ForwardResponse($request->setPresenterName('Error4xx')); } $this->logger->log($exception, ILogger::EXCEPTION); return new Responses\CallbackResponse(function () { require __DIR__ . '/templates/Error/500.phtml'; }); }
/** * Event thatis firex when particular ApiRoute is matched * @param ApiRoute $route * @param Request $request * @return void */ public function routeMatched(ApiRoute $route, Request $request) { if (NULL !== ($format = $request->getParameter(self::API_DOCU_STARTER_QUERY_KEY_GENERATE))) { $this->generator->generateAll($this->router); exit(0); } if (NULL !== ($format = $request->getParameter(self::API_DOCU_STARTER_QUERY_KEY_TARGET))) { $this->generator->generateTarget($route, $request); exit(0); } }
/** * @param \Nette\Application\Request $appRequest * @param \Nette\Http\Url $refUrl * @return string|null */ public function constructUrl(Request $appRequest, Url $refUrl) { $presenter = $appRequest->getPresenterName(); if (!Strings::startsWith($presenter, self::SUBMODULE_NAME . ':')) { return null; } if (Strings::endsWith($presenter, ':' . self::DEFAULT_PRESENTER)) { $presenter = substr($presenter, 0, -strlen(':' . self::DEFAULT_PRESENTER)); } $appRequest->setPresenterName(substr($presenter, strlen(self::SUBMODULE_NAME . ':'))); return parent::constructUrl($appRequest, $refUrl); }
/** * @param Request $request * @return IResponse * @throws BadRequestException */ public function run(Request $request) { $method = strtolower($request->getMethod()); if (!method_exists($this, $method)) { throw new BadRequestException("Method '{$request->getMethod()}' not supported."); } $response = $this->{$method}($request); if (!$response instanceof IResponse) { throw new InvalidStateException("Presenter '{$request->getPresenterName()}' did not return any response for method '{$request->getMethod()}'."); } return $response; }
/** * @return Nette\Application\IResponse */ public function run(Nette\Application\Request $request) { $e = $request->getParameter('exception'); if ($e instanceof Nette\Application\BadRequestException) { // $this->logger->log("HTTP code {$e->getCode()}: {$e->getMessage()} in {$e->getFile()}:{$e->getLine()}", 'access'); return new Nette\Application\Responses\ForwardResponse($request->setPresenterName('Error4xx')); } $this->logger->log($e, ILogger::EXCEPTION); return new Nette\Application\Responses\CallbackResponse(function () { require __DIR__ . '/templates/Error/500.phtml'; }); }
/** * Constructs absolute URL from Request object * * @param \Nette\Application\Request $appRequest * @param \Nette\Http\Url $refUrl * @return string|NULL */ public function constructUrl(Application\Request $appRequest, \Nette\Http\Url $refUrl) { if ($appRequest->getPresenterName() != $this->getTargetPresenter()) { return NULL; } $params = $appRequest->getParameters(); if (!isset($params['id']) && isset($params[0])) { $params['id'] = $params[0]; unset($params[0]); $appRequest->setParameters($params); } return parent::constructUrl($appRequest, $refUrl); }
/** * This method is usually implemented by the more complex UI\Presenter * But since an unhandled exception might have occurred, * it should be processed as simply as possible to avoid any further problems or even another exception. * * @param Nette\Application\Request $request * @return Responses\CallbackResponse|Responses\ForwardResponse */ public function run(Nette\Application\Request $request) { $exception = $request->getParameter('exception'); // if it's a simple BadRequestException, use the more powerful presenter if ($exception instanceof Nette\Application\BadRequestException) { return new Responses\ForwardResponse($request->setPresenterName('Error4xx')); } $this->logger->log($exception, ILogger::EXCEPTION); // the 500 means unhandled exception, which should translate to the simplest page possible return new Responses\CallbackResponse(function () { require __DIR__ . '/templates/Error/500.phtml'; }); }
public function onRequest(Application $app, Request $request) { if (!extension_loaded('newrelic')) { return; } if (PHP_SAPI === 'cli') { newrelic_name_transaction('$ ' . basename($_SERVER['argv'][0]) . ' ' . implode(' ', array_slice($_SERVER['argv'], 1))); newrelic_background_job(TRUE); return; } $params = $request->getParameters(); newrelic_name_transaction($request->getPresenterName() . (isset($params['action']) ? ':' . $params['action'] : '')); }
/** * @param Nette\Application\Application $app * @param Nette\Application\Request $request */ public function onRequest(Nette\Application\Application $app, Nette\Application\Request $request) { if (Consumerr::isConsole()) { Consumerr::setBackgroundJob(TRUE); Consumerr::setName('$ ' . basename($_SERVER['argv'][0]) . ' ' . implode(' ', array_slice($_SERVER['argv'], 1))); } else { $params = $request->getParameters(); if ($request->method === 'FORWARD' && $request->getPresenterName() === $app->errorPresenter) { return; //do not replace presenter name with error presenter } Consumerr::setName($request->getPresenterName() . (isset($params['action']) ? ':' . $params['action'] : '')); } }
/** * @return Application\IResponse */ public function run(Application\Request $request) { $e = $request->getParameter('exception'); if ($e instanceof Application\BadRequestException) { $code = $e->getCode(); } else { $code = 500; if ($this->logger) { $this->logger->log($e, ILogger::EXCEPTION); } } return new Application\Responses\CallbackResponse(function () use($code) { require __DIR__ . '/templates/error.phtml'; }); }
/** * Template factory. * @param string * @param callable * @return Nette\Templating\ITemplate */ public function createTemplate($class = NULL, $latteFactory = NULL) { $template = $class ? new $class() : new Nette\Templating\FileTemplate(); $template->setParameters($this->request->getParameters()); $template->presenter = $this; $template->context = $context = $this->context; $url = $context->getByType('Nette\\Http\\IRequest')->getUrl(); $template->baseUrl = rtrim($url->getBaseUrl(), '/'); $template->basePath = rtrim($url->getBasePath(), '/'); $template->registerHelperLoader('Nette\\Templating\\Helpers::loader'); $template->setCacheStorage($context->getService('nette.templateCacheStorage')); $template->onPrepareFilters[] = function ($template) use($latteFactory) { $template->registerFilter($latteFactory ? $latteFactory() : new Nette\Latte\Engine()); }; return $template; }
public function onRequest(Application $app, Request $request) { if (!extension_loaded('newrelic')) { return; } if (PHP_SAPI === 'cli') { // uložit v čitelném formátu newrelic_name_transaction('$ ' . basename($_SERVER['argv'][0]) . ' ' . implode(' ', array_slice($_SERVER['argv'], 1))); // označit jako proces na pozadí newrelic_background_job(TRUE); return; } // pojmenování požadavku podle presenteru a akce $params = $request->getParameters(); newrelic_name_transaction($_SERVER['HTTP_HOST'] . " | " . $request->getPresenterName() . (isset($params['action']) ? ':' . $params['action'] : '')); }
/** * @return string */ public function getAction($fullyQualified = false) { if ($this->action === null) { $method = $this->request->getMethod(); $this->action = isset(self::$actionMap[$method]) ? self::$actionMap[$method] : strtolower($method); } return $fullyQualified ? "{$this->request->getPresenterName()}:{$this->action}" : $this->action; }
/** * @return Nette\Application\IResponse */ public function run(Application\Request $request) { $this->request = $request; if ($this->httpRequest && $this->router && !$this->httpRequest->isAjax() && ($request->isMethod('get') || $request->isMethod('head'))) { $refUrl = clone $this->httpRequest->getUrl(); $url = $this->router->constructUrl($request, $refUrl->setPath($refUrl->getScriptPath())); if ($url !== NULL && !$this->httpRequest->getUrl()->isEqual($url)) { return new Responses\RedirectResponse($url, Http\IResponse::S301_MOVED_PERMANENTLY); } } $params = $request->getParameters(); if (!isset($params['callback'])) { throw new Application\BadRequestException('Parameter callback is missing.'); } $params['presenter'] = $this; $callback = $params['callback']; $reflection = Nette\Utils\Callback::toReflection(Nette\Utils\Callback::check($callback)); $params = Application\UI\PresenterComponentReflection::combineArgs($reflection, $params); foreach ($reflection->getParameters() as $param) { if ($param->getClassName()) { unset($params[$param->getPosition()]); } } if ($this->context) { $params = Nette\DI\Helpers::autowireArguments($reflection, $params, $this->context); } $response = call_user_func_array($callback, $params); if (is_string($response)) { $response = array($response, array()); } if (is_array($response)) { $response = $this->createTemplate()->setParameters($response[1]); if ($response[0] instanceof \SplFileInfo) { $response->setFile($response[0]); } else { $response->setSource($response[0]); // TODO } } if ($response instanceof Application\UI\ITemplate) { return new Responses\TextResponse($response); } else { return $response; } }
/** * Constructs absolute URL from Request object. * @return string|NULL */ public function constructUrl(Nette\Application\Request $appRequest, Nette\Http\Url $refUrl) { if ($this->cachedRoutes === NULL) { $routes = array(); $routes['*'] = array(); foreach ($this as $route) { $presenter = $route instanceof Route ? $route->getTargetPresenter() : NULL; if ($presenter === FALSE) { continue; } if (is_string($presenter)) { $presenter = strtolower($presenter); if (!isset($routes[$presenter])) { $routes[$presenter] = $routes['*']; } $routes[$presenter][] = $route; } else { foreach ($routes as $id => $foo) { $routes[$id][] = $route; } } } $this->cachedRoutes = $routes; } if ($this->module) { if (strncasecmp($tmp = $appRequest->getPresenterName(), $this->module, strlen($this->module)) === 0) { $appRequest = clone $appRequest; $appRequest->setPresenterName(substr($tmp, strlen($this->module))); } else { return NULL; } } $presenter = strtolower($appRequest->getPresenterName()); if (!isset($this->cachedRoutes[$presenter])) { $presenter = '*'; } foreach ($this->cachedRoutes[$presenter] as $route) { $url = $route->constructUrl($appRequest, $refUrl); if ($url !== NULL) { return $url; } } return NULL; }
/** * Constructs absolute URL from Request object. * @param Nette\Application\Request * @param Nette\Http\Url * @return string|NULL */ public function constructUrl(Nette\Application\Request $appRequest, Nette\Http\Url $refUrl) { $presenterName = $appRequest->getPresenterName(); $presenterClass = $this->formatPresenterClass($presenterName); if (in_array('Tatami\\Presenters\\IFrontendModulePresenter', class_implements($presenterClass))) { $router = $this->frontRouter; } else { $router = $this->adminRouter; } if ($this->cachedRoutes === NULL) { $routes = array(); $routes['*'] = array(); foreach ($router as $route) { $presenter = $route instanceof Route ? $route->getTargetPresenter() : NULL; if ($presenter === FALSE) { continue; } if (is_string($presenter)) { $presenter = strtolower($presenter); if (!isset($routes[$presenter])) { $routes[$presenter] = $routes['*']; } $routes[$presenter][] = $route; } else { foreach ($routes as $id => $foo) { $routes[$id][] = $route; } } } $this->cachedRoutes = $routes; } $presenter = strtolower($appRequest->getPresenterName()); if (!isset($this->cachedRoutes[$presenter])) { $presenter = '*'; } foreach ($this->cachedRoutes[$presenter] as $route) { $url = $route->constructUrl($appRequest, $refUrl); if ($url !== NULL) { return $url; } } return NULL; }
/** * @param \Nette\Application\Request $request * @return \Nette\Application\IResponse * @throws \Nette\Application\BadRequestException */ public function run(Application\Request $request) { $this->request = $request; if ($this->httpRequest && $this->router && !$this->httpRequest->isAjax() && ($request->isMethod('get') || $request->isMethod('head'))) { $refUrl = clone $this->httpRequest->getUrl(); $url = $this->router->constructUrl($request, $refUrl->setPath($refUrl->getScriptPath())); if ($url !== NULL && !$this->httpRequest->getUrl()->isEqual($url)) { return new Responses\RedirectResponse($url, Http\IResponse::S301_MOVED_PERMANENTLY); } } $params = $request->getParameters(); if (!isset($params['id'])) { throw new Application\BadRequestException('Parameter id is missing.'); } if (NULL === ($item = $this->context->getService('webloader.cache')->getItem(\Nette\Utils\Strings::webalize($params['id'])))) { return new Responses\TextResponse(''); } return new \Lohini\WebLoader\WebLoaderResponse($item[WebLoader::CONTENT], $item[WebLoader::CONTENT_TYPE], $item[WebLoader::ETAG]); }
/** * Conditional redirect to canonicalized URI. * * @return void * @throws Nette\Application\AbortException */ public function canonicalize() { if (!$this->isAjax() && ($this->request->isMethod('get') || $this->request->isMethod('head'))) { try { $url = $this->createRequest($this, $this->action, $this->getGlobalState() + $this->request->getParameters(), 'redirectX'); } catch (InvalidLinkException $e) { } if (isset($url) && !$this->getHttpRequest()->getUrl()->isEqual($url)) { $this->sendResponse(new Responses\RedirectResponse($url, Http\IResponse::S301_MOVED_PERMANENTLY)); } } }
/** * @param Request $request * @return IResponse */ public function run(Request $request) { $e = $request->getParameter('exception'); if ($e instanceof BadRequestException) { $code = $e->getCode(); } else { $code = 500; if ($this->logger) { try { $this->logger->log($e, ILogger::EXCEPTION); } catch (\Exception $e) { // logger may fail as well } } } if (isset(JsonResponse::$messages[$code])) { $message = JsonResponse::$messages[$code]; } else { $message = 'Unknown error'; } return $this->createResponse($message, $code); }
/** * @param FormInterface $form * @param Request $request */ public function handleRequest(FormInterface $form, $request = null) { if (!$request instanceof Request) { throw new UnexpectedTypeException($request, 'Nette\\Application\\Request'); } $name = $form->getName(); if ($name === '') { throw new InvalidArgumentException('Forms are not allowed to have an emtpy string as name.'); } $method = $form->getConfig()->getMethod(); if ($method !== $request->getMethod()) { return; } if ($method === 'GET') { $get = $request->getParameters(); // Don't submit GET requests if the form's name does not exist in the request. if (!isset($get[$name])) { return; } $data = $get[$name]; } else { $post = $request->getPost(); $files = $request->getFiles(); $default = $form->getConfig()->getCompound() ? [] : null; $postData = isset($post[$name]) ? $post[$name] : $default; $filesData = isset($files[$name]) ? $files[$name] : $default; if (is_array($postData) && is_array($filesData)) { $data = array_replace_recursive($postData, $filesData); } else { $data = $postData ?: $filesData; } // Don't submit the form if it is not present in the request. if (!$data) { return; } } $form->submit($data, $method !== 'PATCH'); }
/** * Constructs absolute URL from Request object. * * @return string|NULL */ public function constructUrl(AppRequest $appRequest, Url $refUrl) { if ($this->flags & self::ONE_WAY) { return NULL; } $params = $appRequest->getParameters(); if (!isset($params['action']) || !is_string($params['action'])) { return NULL; } $key = $appRequest->getPresenterName() . ':' . $params['action']; if (!isset($this->tableOut[$key])) { return NULL; } if ($this->lastRefUrl !== $refUrl) { $this->lastBaseUrl = $refUrl->getBaseUrl(); $this->lastRefUrl = $refUrl; } unset($params['action']); $slug = $this->tableOut[$key]; $query = ($tmp = http_build_query($params)) ? '?' . $tmp : ''; $url = $this->lastBaseUrl . $slug . $query; return $url; }
/** * Template factory. * @param string * @return Application\UI\ITemplate */ public function createTemplate($class = NULL, callable $latteFactory = NULL) { $latte = $latteFactory ? $latteFactory() : $this->getContext()->getByType(Nette\Bridges\ApplicationLatte\ILatteFactory::class)->create(); $template = $class ? new $class() : new Nette\Bridges\ApplicationLatte\Template($latte); $template->setParameters($this->request->getParameters()); $template->presenter = $this; $template->context = $this->context; if ($this->httpRequest) { $url = $this->httpRequest->getUrl(); $template->baseUrl = rtrim($url->getBaseUrl(), '/'); $template->basePath = rtrim($url->getBasePath(), '/'); } return $template; }