_feedUrl = $config[$feed]; } else { throw new Exception('RSS feed "' . $feed . '" undefined'); } } protected function _getCachePath() { return '../cache/rss.%s'; } protected function _fetchItems() { $this->_feedXml = new \SimpleXMLElement($this->_feedUrl, 0, TRUE); $feedItems = $this->_feedXml->channel->item ?: $this->_feedXml->entry; $items = []; foreach ($feedItems as $item) { $items[] = $item->asXML(); } return $items; } protected function _mapItems($content) { $items = []; foreach ($content as $contentString) { $item = new \SimpleXMLElement(str_replace('content:encoded>', 'content>', $contentString)); $itemObject = new Item(); $itemObject->ID = strval($item->id ?: $item->guid); $itemObject->Title = strval($item->title); $itemObject->Time = strval($item->published ?: $item->pubDate); $itemObject->Text = strval($item->summary ?: $item->description ?: $item->content); $itemObject->Link = strval(isset($item->link['href']) ? $item->link->attributes()['href'] : $item->link); $itemObject->Author = strval(is_string($item->author) ? $item->author : $item->author->name); $items[] = $itemObject; } return $items; } protected function _spamFilter($content) { return $content; } protected function _sortContent($content) { return $content; } public function title() { $cacheFile = sprintf($this->_getCachePath() . '.title', $this->_feed); if (!file_exists($cacheFile)) { $this->_fetchItems(); } if ($this->_feedXml) { $title = strval($this->_feedXml->title ?: $this->_feedXml->channel->title); file_put_contents($cacheFile, $title); return $title; } else { return file_get_contents($cacheFile); } } } ?>