]> git.wh0rd.org - tt-rss.git/blobdiff - classes/feeditem/atom.php
atom: remove rel2abs; use rewrite_relative_url
[tt-rss.git] / classes / feeditem / atom.php
index 532c599cc858033da4ed3c371d1f87103f525b22..f82c582da922bbe558672589e8267c6eb733a71d 100644 (file)
@@ -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"));
                        }
                }
        }