atom: remove rel2abs; use rewrite_relative_url
This commit is contained in:
parent
940e29a637
commit
3c4dead676
|
@ -30,36 +30,8 @@ class FeedItem_Atom extends FeedItem_Common {
|
||||||
return strtotime($date->nodeValue);
|
return strtotime($date->nodeValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function rel2abs($rel, $base)
|
|
||||||
{
|
|
||||||
/* return if already absolute URL */
|
|
||||||
if (parse_url($rel, PHP_URL_SCHEME) != '') return $rel;
|
|
||||||
|
|
||||||
/* queries and anchors */
|
|
||||||
if ($rel[0]=='#' || $rel[0]=='?') return $base.$rel;
|
|
||||||
|
|
||||||
/* parse base URL and convert to local variables:
|
|
||||||
$scheme, $host, $path */
|
|
||||||
extract(parse_url($base));
|
|
||||||
|
|
||||||
/* remove non-directory element from path */
|
|
||||||
$path = preg_replace('#/[^/]*$#', '', $path);
|
|
||||||
|
|
||||||
/* destroy path if relative url points to root */
|
|
||||||
if ($rel[0] == '/') $path = '';
|
|
||||||
|
|
||||||
/* dirty absolute URL */
|
|
||||||
$abs = "$host$path/$rel";
|
|
||||||
|
|
||||||
/* replace '//' or '/./' or '/foo/../' with '/' */
|
|
||||||
$re = array('#(/\.?/)#', '#/(?!\.\.)[^/]+/\.\./#');
|
|
||||||
for($n=1; $n>0; $abs=preg_replace($re, '/', $abs, -1, $n)) {}
|
|
||||||
|
|
||||||
/* absolute URL is ready! */
|
|
||||||
return $scheme.'://'.$abs;
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_link() {
|
function get_link() {
|
||||||
$links = $this->elem->getElementsByTagName("link");
|
$links = $this->elem->getElementsByTagName("link");
|
||||||
|
|
||||||
|
@ -68,8 +40,9 @@ class FeedItem_Atom extends FeedItem_Common {
|
||||||
(!$link->hasAttribute("rel")
|
(!$link->hasAttribute("rel")
|
||||||
|| $link->getAttribute("rel") == "alternate"
|
|| $link->getAttribute("rel") == "alternate"
|
||||||
|| $link->getAttribute("rel") == "standout")) {
|
|| $link->getAttribute("rel") == "standout")) {
|
||||||
$base = $this->xpath->evaluate("string(ancestor-or-self::*[@xml:base][1]/@xml:base)",$link);
|
$base = $this->xpath->evaluate("string(ancestor-or-self::*[@xml:base][1]/@xml:base)", $link);
|
||||||
return $this->rel2abs($link->getAttribute("href"), $base);
|
|
||||||
|
return rewrite_relative_url($base, $link->getAttribute("href"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue