Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba

External RSS Feed Page


Go to End
Reply


475 Views

Avatar
socks

Community Member, 191 Posts

11 November 2013 at 12:33pm

I'm upgrading to SS3.1 from 2.4 and am using code from the blog module, but it's not working.

I get an "Uncaught LogicException: 0" error.

If I uncomment the include_once (which is what I had in my 2.4 version), I just get a white page.

class FeedPage extends Page {

...

	function getAbsoluteRssUrl() {
		$urlParts = parse_url($this->RssUrl);
		if(!isset($urlParts['host']) || !$urlParts['host']) {
			return Director::absoluteBaseURL() . $this->RssUrl;
		} else {
			return $this->RssUrl;
		}
	}
	
   function Title() {
      return ($this->RssTitle) ? $this->RssTitle : 'RSS Feed';
   }

function getFeedItems() {
      $output = new ArrayList();
      
      // include_once(Director::getAbsFile(FRAMEWORK_DIR . '/thirdparty/simplepie/simplepie.inc'));
       
      // Protection against infinite loops when an RSS widget pointing to this page is added to this page 
         if(stristr($_SERVER['HTTP_USER_AGENT'], 'SimplePie')) { 
            return $output;
         }
         
         if(!class_exists('SimplePie')) {
            throw new LogicException(
               'Please install the "simplepie/simplepie" library by adding it to the "require" '
               + 'section of your composer.json'
            );
         }
      
      $t1 = microtime(true);
      $feed = new SimplePie();
      $feed->set_feed_url($this->AbsoluteRssUrl);
      $feed->set_cache_location(TEMP_FOLDER);
      $feed->init();
      if($items = $feed->get_items(0, $this->NumberToShow)) {
         foreach($items as $item) {
            
             // Cast the Title
            $title = new Text('Title');
            $title->setValue($item->get_title());
   
            $output->push(new ArrayData(array(
               'Title' => $title,
               'Content' => $item->get_content(),
               'Date' => $item->get_date(),
               'Link' => $item->get_link()
            )));
         }
         return $output;
      }
   }

}

Any help appreciated