private static function extend_url($url, $reference)
 {
     $parts = \parse_url($url);
     if (empty($parts['scheme'])) {
         $parts['scheme'] = $reference['scheme'];
     }
     if (empty($parts['host'])) {
         $parts['host'] = $reference['host'];
         if (!empty($reference['port'])) {
             $parts['port'] = $reference['port'];
         }
         if (!empty($reference['user'])) {
             $parts['user'] = $reference['user'];
         }
         if (!empty($reference['pass'])) {
             $parts['pass'] = $reference['pass'];
         }
     }
     foreach (array_keys($parts) as $p) {
         $parts[$p] = \htmlspecialchars($parts[$p]);
     }
     return DataFeed::build_url($parts);
 }
 private function next($item, $mainUrl)
 {
     $url = $this->objectQueryLanguage->query($this->fieldExpr, $item);
     if (empty($url)) {
         return null;
     }
     $parts = parse_url($url);
     if (isset($parts['scheme'])) {
         return $url;
     }
     $mainParts = parse_url($mainUrl);
     $parts['scheme'] = $mainParts['scheme'];
     if (!isset($parts['host']) && isset($mainParts['host'])) {
         $parts['host'] = $mainParts['host'];
         if (!isset($parts['port']) && isset($mainParts['port'])) {
             $parts['port'] = $mainParts['port'];
         }
     }
     if (!isset($parts['path']) && isset($mainParts['path'])) {
         $parts['path'] = $mainParts['path'];
     }
     return DataFeed::build_url($parts);
 }
 /**
  * @return string The URL in effect of this feed.
  */
 public function getEffectiveURL()
 {
     if (!empty($this->o_url)) {
         $eUrl = $this->o_url;
     } else {
         $eUrl = $this->url;
     }
     $key = $this->getKey();
     if (!empty($key)) {
         $parts = \parse_url($eUrl);
         $query = array();
         if (!empty($parts['query'])) {
             \parse_str($parts['query'], $query);
         }
         $parameter = $this->getKeyParameter();
         if (empty($parameter)) {
             $parameter = 'key';
         } else {
             $parameter = $this->getKeyParameter();
         }
         $query[$parameter] = $key;
         $parts['query'] = \http_build_query($query);
         $eUrl = DataFeed::build_url($parts);
     }
     return $eUrl;
 }