/** * Apply proxy prefix to URL (if configured). * * @param string $url The raw URL to adjust * * @return string */ public function __invoke($url) { // Shortcut if (!isset($this->config->EZproxy->host)) { return $url; } $config = $this->config->EZproxy; if (isset($config->proxy_known_ip_addresses) && !$config->proxy_known_ip_addresses && $this->getIpInRange()) { return $url; } if (isset($config->include_url) || isset($config->include_url_re)) { $pass = false; if (isset($config->include_url)) { foreach ($config->include_url as $mask) { if (strstr($url, $mask)) { $pass = true; break; } } } if (!$pass && isset($config->include_url_re)) { foreach ($config->include_url_re as $mask) { if (preg_match($mask, $url)) { $pass = true; break; } } } if (!$pass) { return $url; } } if (isset($config->exclude_url)) { foreach ($config->exclude_url->toArray() as $mask) { if (strstr($url, $mask)) { return $url; } } } if (isset($config->exclude_url_re)) { foreach ($config->exclude_url_re->toArray() as $mask) { if (preg_match($mask, $url)) { return $url; } } } // Check for source specific filters if (!empty($config->include_source) || !empty($config->include_datasource) || !empty($config->exclude_datasource)) { $driver = $this->getView()->driver; if (null !== $driver) { if (!empty($config->include_source)) { $source = $driver->getSourceIdentifier(); if (!in_array($source, $config->include_source->toArray())) { return $url; } } $datasources = $driver->tryMethod('getSource'); if (!empty($datasources)) { foreach (is_array($datasources) ? $datasources : [$datasources] as $datasource) { if (!empty($config->include_datasource)) { $sources = $config->include_datasource->toArray(); if (!in_array($datasource, $sources)) { return $url; } } if (!empty($config->exclude_datasource)) { $sources = $config->exclude_datasource->toArray(); if (in_array($datasource, $sources)) { return $url; } } } } } } return parent::__invoke($url); }
/** * Apply proxy prefix to URL (if configured). * * @param string $url The raw URL to adjust * * @return string */ public function __invoke($url) { // Shortcut if (!isset($this->config->EZproxy->host)) { return $url; } $config = $this->config->EZproxy; if (isset($config->proxy_known_ip_addresses) && !$config->proxy_known_ip_addresses && $this->getIpInRange()) { return $url; } if (isset($config->include_url) || isset($config->include_url_re)) { $pass = false; if (isset($config->include_url)) { foreach ($config->include_url as $mask) { if (strstr($url, $mask)) { $pass = true; break; } } } if (!$pass && isset($config->include_url_re)) { foreach ($config->include_url_re as $mask) { if (preg_match($mask, $url)) { $pass = true; break; } } } if (!$pass) { return $url; } } if (isset($config->exclude_url)) { foreach ($config->exclude_url->toArray() as $mask) { if (strstr($url, $mask)) { return $url; } } } if (isset($config->exclude_url_re)) { foreach ($config->exclude_url_re->toArray() as $mask) { if (preg_match($mask, $url)) { return $url; } } } return parent::__invoke($url); }