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; }