Browse Source

atom: remove rel2abs; use rewrite_relative_url

Andrew Dolgov 7 years ago
parent
commit
3c4dead676
1 changed files with 5 additions and 32 deletions
  1. 5 32
      classes/feeditem/atom.php

+ 5 - 32
classes/feeditem/atom.php

@@ -30,36 +30,8 @@ class FeedItem_Atom extends FeedItem_Common {
 			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() {
 		$links = $this->elem->getElementsByTagName("link");
 
@@ -68,8 +40,9 @@ class FeedItem_Atom extends FeedItem_Common {
 				(!$link->hasAttribute("rel")
 					|| $link->getAttribute("rel") == "alternate"
 					|| $link->getAttribute("rel") == "standout")) {
-				$base = $this->xpath->evaluate("string(ancestor-or-self::*[@xml:base][1]/@xml:base)",$link);
-				return $this->rel2abs($link->getAttribute("href"), $base);
+				$base = $this->xpath->evaluate("string(ancestor-or-self::*[@xml:base][1]/@xml:base)", $link);
+
+				return rewrite_relative_url($base, $link->getAttribute("href"));
 			}
 		}
 	}