From 4df0def63b6a5f2509813e77d8b145bcd76776fc Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Thu, 12 Jun 2008 23:39:47 +0000 Subject: [PATCH] Merged revisions 56170 via svnmerge from svn://svn.silverstripe.com/silverstripe/modules/blog/branches/trunk-dnc ........ r56170 | ischommer | 2008-06-13 11:25:35 +1200 (Fri, 13 Jun 2008) | 1 line BUGFIX Adding getAbsoluteRssURL() to RSSWidget to avoid SimplePie confusion on relative URLs (causes timeouts) ........ --- code/RSSWidget.php | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/code/RSSWidget.php b/code/RSSWidget.php index 1b1ebf5..306865c 100644 --- a/code/RSSWidget.php +++ b/code/RSSWidget.php @@ -14,6 +14,23 @@ class RSSWidget extends Widget { static $cmsTitle = "RSS Feed"; static $description = "Shows the latest entries of a RSS feed."; + /** + * If the RssUrl is relative, convert it to absolute with the + * current baseURL to avoid confusing simplepie. + * Passing relative URLs to simplepie will result + * in strange DNS lookups and request timeouts. + * + * @return string + */ + function getAbsoluteRssUrl() { + $urlParts = parse_url($this->RssUrl); + if(!isset($urlParts['host']) || !$urlParts['host']) { + return Director::absoluteBaseURL() . $this->RssUrl; + } else { + return $this->RssUrl; + } + } + function getCMSFields() { return new FieldSet( new TextField("RSSTitle", _t('RSSWidget.CT', "Custom title for the feed")), @@ -27,7 +44,7 @@ class RSSWidget extends Widget { function FeedItems() { $output = new DataObjectSet(); - $this->feed = new SimplePie($this->RssUrl); + $this->feed = new SimplePie($this->AbsoluteRssUrl); $this->feed->init(); if($items = $this->feed->get_items(0, $this->NumberToShow)) { foreach($items as $item) {