From f3f063c0dd7fd8b706987b856d79c7b58924acbb Mon Sep 17 00:00:00 2001 From: Friendika Date: Sat, 21 May 2011 19:15:55 -0700 Subject: [PATCH] Drupal doesn't provide absolute URL on feed. Fix to allow importing Drupal "contacts". --- include/Scrape.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/include/Scrape.php b/include/Scrape.php index 21e6bd01ff..7fc0c964bf 100644 --- a/include/Scrape.php +++ b/include/Scrape.php @@ -241,6 +241,17 @@ function scrape_feed($url) { } } + + $head = $dom->getElementsByTagName('base'); + if($head) { + foreach($head as $head0) { + $basename = $head0->getAttribute('href'); + break; + } + } + if(! $basename) + $basename = substr($url,0,strrpos($url,'/')) . '/'; + $items = $dom->getElementsByTagName('link'); // get Atom/RSS link elements, take the first one of either. @@ -259,6 +270,13 @@ function scrape_feed($url) { } } + // Drupal and perhaps others only provide relative URL's. Turn them into absolute. + + if(x($ret,'feed_atom') && (! strstr($ret['feed_atom'],'://'))) + $ret['feed_atom'] = $basename . $ret['feed_atom']; + if(x($ret,'feed_rss') && (! strstr($ret['feed_rss'],'://'))) + $ret['feed_rss'] = $basename . $ret['feed_rss']; + return $ret; }}