public function testHost() { $address = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '::1'; if ($this->uri->host() == 'localhost' || $address == '::1' || $address == '127.0.0.1') { $address = 'localhost'; } $this->uri->initializeWithURL('http://localhost/a-page')->init(); $this->assertSame($address, $this->uri->host()); $this->uri->initializeWithURL('http://localhost/')->init(); $this->assertSame($address, $this->uri->host()); }
public function testEnvironment() { $address = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '::1'; if ($this->uri->host() == 'localhost' || $address == '::1' || $address == '127.0.0.1') { $address = 'localhost'; } $this->uri->initializeWithURL('http://localhost/a-page')->init(); $this->assertSame($address, $this->uri->environment()); $this->uri->initializeWithURL('http://localhost:8080/a-page')->init(); $this->assertSame($address, $this->uri->environment()); $this->uri->initializeWithURL('http://foobar.it:443/a-page')->init(); $this->assertSame($address, $this->uri->environment()); $this->uri->initializeWithURL('https://google.com/a-page')->init(); $this->assertSame($address, $this->uri->environment()); }
protected function inlineImage($excerpt) { if (preg_match($this->twig_link_regex, $excerpt['text'], $matches)) { $excerpt['text'] = str_replace($matches[1], '/', $excerpt['text']); $excerpt = parent::inlineImage($excerpt); $excerpt['element']['attributes']['src'] = $matches[1]; $excerpt['extent'] = $excerpt['extent'] + strlen($matches[1]) - 1; return $excerpt; } else { $excerpt['type'] = 'image'; $excerpt = parent::inlineImage($excerpt); } // Some stuff we will need $actions = []; $media = null; // if this is an image if (isset($excerpt['element']['attributes']['src'])) { $alt = $excerpt['element']['attributes']['alt'] ?: ''; $title = $excerpt['element']['attributes']['title'] ?: ''; $class = isset($excerpt['element']['attributes']['class']) ? $excerpt['element']['attributes']['class'] : ''; //get the url and parse it $url = parse_url(htmlspecialchars_decode($excerpt['element']['attributes']['src'])); $this_host = isset($url['host']) && $url['host'] == $this->uri->host(); // if there is no host set but there is a path, the file is local if ((!isset($url['host']) || $this_host) && isset($url['path'])) { $path_parts = pathinfo($url['path']); // get the local path to page media if possible if ($path_parts['dirname'] == $this->page->url(false, false, false)) { // get the media objects for this page $media = $this->page->media(); } else { // see if this is an external page to this one $base_url = rtrim(Grav::instance()['base_url_relative'] . Grav::instance()['pages']->base(), '/'); $page_route = '/' . ltrim(str_replace($base_url, '', $path_parts['dirname']), '/'); $ext_page = $this->pages->dispatch($page_route, true); if ($ext_page) { $media = $ext_page->media(); } } // if there is a media file that matches the path referenced.. if ($media && isset($media->all()[$path_parts['basename']])) { // get the medium object $medium = $media->all()[$path_parts['basename']]; // if there is a query, then parse it and build action calls if (isset($url['query'])) { $url['query'] = htmlspecialchars_decode(urldecode($url['query'])); $actions = array_reduce(explode('&', $url['query']), function ($carry, $item) { $parts = explode('=', $item, 2); $value = isset($parts[1]) ? $parts[1] : null; $carry[] = ['method' => $parts[0], 'params' => $value]; return $carry; }, []); } // loop through actions for the image and call them foreach ($actions as $action) { $medium = call_user_func_array([$medium, $action['method']], explode(',', urldecode($action['params']))); } if (isset($url['fragment'])) { $medium->urlHash($url['fragment']); } $excerpt['element'] = $medium->parseDownElement($title, $alt, $class, true); } else { // not a current page media file, see if it needs converting to relative $excerpt['element']['attributes']['src'] = Uri::buildUrl($url); } } } return $excerpt; }