/** * Initialize the URI class with a url passed via parameter. * Used for testing purposes. * * @param string $url the URL to use in the class * * @return string */ public function initializeWithUrl($url = '') { if (!$url) { return $this; } $this->paths = []; $this->params = []; $this->query = []; $this->name = []; $this->env = []; $this->port = []; $this->uri = []; $this->base = []; $this->host = []; $this->root = []; $this->url = []; $this->fragment = []; $grav = Grav::instance(); $language = $grav['language']; $uri_bits = Uri::parseUrl($url); $this->name = $uri_bits['host']; $this->port = isset($uri_bits['port']) ? $uri_bits['port'] : '80'; $this->uri = $uri_bits['path']; // set active language $uri = $language->setActiveFromUri($this->uri); if (isset($uri_bits['params'])) { $this->params = $uri_bits['params']; } if (isset($uri_bits['query'])) { $this->uri .= '?' . $uri_bits['query']; parse_str($uri_bits['query'], $this->query); } if (isset($uri_bits['fragment'])) { $this->fragment = $uri_bits['fragment']; } $this->base = $this->buildBaseUrl(); $this->host = $this->buildHost(); $this->env = $this->buildEnvironment(); $this->root_path = $this->buildRootPath(); $this->root = $this->base . $this->root_path; $this->url = $this->root . $uri; $this->path = $uri; return $this; }