/** * Constructs absolute URL from PresenterRequest object. * @param PresenterRequest * @param Nette\Web\Uri * @return string|NULL */ public function constructUrl(PresenterRequest $appRequest, Nette\Web\Uri $refUri) { $params = $appRequest->getParams(); // presenter name $presenter = $appRequest->getPresenterName(); if (strncasecmp($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]); } } $uri = ($this->flags & self::SECURED ? 'https://' : 'http://') . $refUri->getAuthority() . $refUri->getPath(); $sep = ini_get('arg_separator.input'); $query = http_build_query($params, '', $sep ? $sep[0] : '&'); if ($query != '') { // intentionally == $uri .= '?' . $query; } return $uri; }