예제 #1
0
 /**
  * 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);
 }
예제 #2
0
 /**
  * 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);
 }