public function getVideos($offset) { if (!$this->_videos) { $this->_videos = array(); try { $this->_setYoutubeUrl($offset); $feed = Zend_Feed_Reader::import($this->getLink()); } catch (Exception $e) { $feed = array(); } foreach ($feed as $entry) { $params = Zend_Uri::factory($entry->getLink())->getQueryAsArray(); $image = null; $link = null; if (!empty($params['v'])) { $image = "http://img.youtube.com/vi/{$params['v']}/0.jpg"; $link = "http://www.youtube.com/embed/{$params['v']}"; } else { $link = $entry->getLink(); } $video = new Core_Model_Default(array('video_id' => $params['v'], 'title' => $entry->getTitle(), 'description' => $entry->getContent(), 'link' => $link, 'image' => $image)); $this->_videos[] = $video; } } return $this->_videos; }
public function getVideos($offset) { $cache = Zend_Registry::get('cache'); // if(($this->_videos = $cache->load('MEDIA_VIDEOS_ITUNES_'.sha1($this->getGalleryId().$this->getParam()))) === false ) { $this->_videos = array(); try { $flux = Zend_Feed_Reader::import($this->getParam()); if ($flux) { foreach ($flux as $entry) { $image = $flux->getImage(); $podcast = $entry->getExtension('Podcast'); $extension = ""; if ($entry->getEnclosure()->url) { $extension = explode(".", $entry->getEnclosure()->url); $extension = $extension[count($extension) - 1]; } $video = new Core_Model_Default(array('video_id' => $entry->getEnclosure()->url, 'title' => $entry->getTitle(), 'description' => $entry->getContent(), 'link' => $entry->getEnclosure()->url, 'extension' => $extension, 'image' => $podcast->getImage() ? $podcast->getImage() : $image['uri'])); $this->_videos[] = $video; } } $cache->save($this->_videos, 'MEDIA_VIDEOS_ITUNES_' . sha1($this->getGalleryId() . $this->getParam())); } catch (Exception $e) { } // } return array_slice($this->_videos, $offset - 1, self::DISPLAYED_PER_PAGE); }
protected function _parse() { $feed = Zend_Feed_Reader::import($this->getLink()); $this->_news = new Core_Model_Default(array('title' => $feed->getTitle(), 'link' => $feed->getLink(), 'dateModified' => $feed->getDateModified(), 'description' => $feed->getDescription(), 'language' => $feed->getLanguage(), 'entries' => array())); $data = array(); foreach ($feed as $entry) { $picture = null; if ($entry->getEnclosure() && $entry->getEnclosure()->url) { $picture = $entry->getEnclosure()->url; } if ($entry->getDescription()) { $content = new Dom_SmartDOMDocument(); $content->loadHTML($entry->getDescription()); $content->encoding = 'utf-8'; $description = $content->documentElement; $imgs = $description->getElementsByTagName('img'); if ($imgs->length > 0) { $img = $imgs->item(0); if ($img->getAttribute('src')) { $picture = $img->getAttribute('src'); } } } $edata = new Core_Model_Default(array('title' => $entry->getTitle(), 'description' => strip_tags($entry->getDescription()), 'dateModified' => $entry->getDateModified(), 'authors' => $entry->getAuthors(), 'link' => $entry->getLink(), 'content' => strip_tags($entry->getContent()), 'enclosure' => $entry->getEnclosure(), 'timestamp' => $entry->getDateCreated()->getTimestamp(), 'picture' => $picture)); $data[] = $edata; } $this->_news->setEntries($data); return $this; }
/** * Add feed to system * * @param Feed $feed */ private function updateFeed(Feed $feed) { require_once 'Ifphp/models/Posts.php'; $feedSource = Zend_Feed_Reader::import($feed->url); $posts = new Posts(); $tdate = $feedSource->current()->getDateModified(); $tdate = new Zend_Date($tdate); while ($feedSource->valid() && $tdate->toValue() > $feed->lastPing && !$posts->getByLink($feedSource->current()->getPermaLink())) { $tdate = $feedSource->current()->getDateModified(); $tdate = new Zend_Date($tdate); $defaultFilterChain = new Zend_Filter(); $defaultFilterChain->addFilter(new Ifphp_Filter_XSSClean()); $defaultFilterChain->addFilter(new Zend_Filter_StringTrim()); $defaultFilterChain->addFilter(new Zend_Filter_StripTags()); $post = $posts->createRow(); $post->title = $defaultFilterChain->filter($feedSource->current()->getTitle()); $post->description = $defaultFilterChain->filter($feedSource->current()->getDescription()); $post->feedId = $defaultFilterChain->filter($feed->id); $post->link = $defaultFilterChain->filter($feedSource->current()->getPermaLink()); $post->publishDate = $tdate->toValue(); $post->save(); Ifphp_Controller_Front::getInstance()->getPluginBroker()->addPost($post, $feed); $feedSource->next(); } $feed->lastPing = time(); $feed->save(); }
/** * Checks the feeds for new news. */ protected function check() { foreach ($this->uris as $uri) { $feed = Zend_Feed_Reader::import($uri); foreach ($feed as $entry) { $content = $this->getFixedContent($entry); NewsEditor::create($entry->getTitle(), $content, $entry->getLink()); } } }
public function indexAction() { $feedUrl = 'http://feeds.feedburner.com/ZendScreencastsVideoTutorialsAboutTheZendPhpFrameworkForDesktop'; $feed = Zend_Feed_Reader::import($feedUrl); $this->view->gettingStarted = array(); foreach ($feed as $entry) { if (array_search('Getting Started', $entry->getCategories()->getValues())) { $this->view->gettingStarted[$entry->getLink()] = $entry->getTitle(); } } }
/** * Defined by Zend_Validate_Interface * * Returns true if and only if $value is a valid IP address * * @param mixed $value * @return boolean */ public function isValid($value) { $valueString = (string) $value; $this->_setValue($valueString); try { Zend_Feed_Reader::import($valueString); } catch (Zend_Feed_Exception $e) { $this->_error(self::NOT_URL); return false; } return true; }
/** * Simple utility function which imports any feed URL and * determines the existence of Hub Server endpoints. This works * best if directly given an instance of Zend_Feed_Reader_Atom|Rss * to leverage off. * * @param Zend_Feed_Reader_FeedAbstract|Zend_Feed_Abstract|string $source * @return array */ public static function detectHubs($source) { if (is_string($source)) { $feed = Zend_Feed_Reader::import($source); } elseif (is_object($source) && $source instanceof Zend_Feed_Reader_FeedAbstract) { $feed = $source; } elseif (is_object($source) && $source instanceof Zend_Feed_Abstract) { $feed = Zend_Feed_Reader::importFeed($source); } else { throw new Zend_Feed_Pubsubhubbub_Exception('The source parameter was' . ' invalid, i.e. not a URL string or an instance of type' . ' Zend_Feed_Reader_FeedAbstract or Zend_Feed_Abstract'); } return $feed->getHubs(); }
public function processAction() { $form = new Admin_Form_AddBlog(); if (!$this->getRequest()->isPost()) { return $this->_forward('admin/index'); } $flashMessenger = $this->_helper->getHelper('FlashMessenger'); if (!$form->isValid($_POST)) { $flashMessenger->addMessage('Form data invalid: recheck details and try again.'); $flashMessenger->addMessage('error'); $this->_redirect('/admin/blog/create'); } $values = $form->getValues(); $blog = new Zfplanet_Model_Blog(); $blog->contactName = $values['contactName']; if (isset($values['contactEmail'])) { $blog->contactEmail = $values['contactEmail']; } $blog->uri = $values['uri']; try { $data = Zend_Feed_Reader::import($values['feedUri']); } catch (Exception $e) { $flashMessenger->addMessage('Problem fetching feed: ' . $e->getMessage()); $flashMessenger->addMessage('error'); $this->_redirect('/admin/blog/create'); } $blog->feedId = $data->getId(); $feed = new Zfplanet_Model_Feed(); $feedMeta = new Zfplanet_Model_FeedMeta(); $feed->id = $data->getId(); $feed->uri = $data->getFeedLink(); if (isset($feed->uri)) { $feed->uri = $values['feedUri']; } $feed->blogId = $blog->id; $feed->title = Zfplanet_Model_Feed::getHtmlPurifier()->purify($data->getTitle()); $feed->type = $this->_getFeedVersion($data->getType()); $feed->isActive = 1; $feedMeta->feedId = $data->getId(); $feedMeta->title = $data->getTitle(); $feedMeta->description = $data->getDescription(); $feedMeta->link = $data->getLink(); $feedMeta->feedLink = $data->getFeedLink(); $blog->save(); $feed->save(); $feedMeta->save(); $this->_checkPubsubEnabled($data); $flashMessenger->addMessage('Blog successfully added!'); $flashMessenger->addMessage('success'); $this->_redirect('/admin/blog/create'); }
protected function _parse() { $feed = Zend_Feed_Reader::import($this->getLink()); $this->_news = new Core_Model_Default(array('title' => $feed->getTitle(), 'link' => $feed->getLink(), 'dateModified' => $feed->getDateModified(), 'description' => $feed->getDescription(), 'language' => $feed->getLanguage(), 'entries' => array())); $data = array(); foreach ($feed as $entry) { $picture = null; if ($entry->getEnclosure() && $entry->getEnclosure()->url) { $picture = $entry->getEnclosure()->url; } $description = ""; if ($entry->getContent()) { $content = new Dom_SmartDOMDocument(); $content->loadHTML($entry->getContent()); $content->encoding = 'utf-8'; $description = $content->documentElement; $imgs = $description->getElementsByTagName('img'); if ($imgs->length > 0) { foreach ($imgs as $k => $img) { if ($k == 0) { $img = $imgs->item(0); if ($img->getAttribute('src') and stripos($img->getAttribute('src'), ".gif") === false) { $picture = $img->getAttribute('src'); $img->parentNode->removeChild($img); } } $img->removeAttribute('width'); $img->removeAttribute('height'); } } $as = $description->getElementsByTagName('a'); if ($as->length > 0) { foreach ($as as $a) { $a->setAttribute('target', '_self'); } } $description = $content->saveHTMLExact(); } $timestamp = $entry->getDateCreated() ? $entry->getDateCreated()->getTimestamp() : null; $updated_at = null; if ($timestamp) { $updated_at = $this->_getUpdatedAt($timestamp); } $edata = new Core_Model_Default(array('entry_id' => $entry->getId(), 'title' => $entry->getTitle(), 'description' => $description, 'short_description' => strip_tags($description), 'dateModified' => $entry->getDateModified(), 'authors' => $entry->getAuthors(), 'link' => $entry->getLink(), 'content' => $description, 'enclosure' => $entry->getEnclosure(), 'timestamp' => $timestamp, 'updated_at' => $updated_at, 'picture' => $picture)); $data[] = $edata; } $this->_news->setEntries($data); return $this; }
private function _orderRssNews($rss_list) { $feeds = array(); $errors = array(); $id_source = 0; if (isset($_COOKIE['id_' . $this->_id_page])) { $id_source = $_COOKIE['detail_source_' . $this->_id_page]; } $flag = false; $cache = $this->_getCache(); foreach ($rss_list as $rss_key => $rss) { try { $cache_key = PREFIXED_CACHE_RSS_URL . md5($rss['link']); $rss_news = $cache->load($cache_key); if (!$rss_news) { $feed = Zend_Feed_Reader::import($rss['link']); $arrFeeds = array(); foreach ($feed as $entry) { $itemRSS = array("title" => $entry->getTitle(), "dateModified" => $entry->getDateModified(), "description" => $entry->getDescription(), "link" => $entry->getLink(), "commentLink" => $entry->getCommentLink()); $arrFeeds[] = $itemRSS; } $rss_news = array('link' => $feed->getLink(), 'entries' => $arrFeeds); $cache->save($rss_news, $cache_key, array(), TIMELIFE_CACHE_RSS_URL); } if (!$flag && $id_source == $rss['id']) { $flag = true; } $entries = array(); $index = 0; foreach ($rss_news["entries"] as $entry) { if ($index >= $rss['num_stories']) { break; } $news = array("title" => $entry["title"], "dateModified" => $entry["dateModified"], "description" => $entry["description"], "link" => $entry["link"], "commentLink" => $entry["commentLink"]); $entries[$index] = $news; $index++; } $rss_feeds = array('title' => $rss['title'], 'link' => $rss_news["link"], 'entries' => $entries, 'is_allow_comment' => $rss["is_allow_comment"]); $feeds[$rss['id']] = $rss_feeds; } catch (Exception $e) { $feeds[$rss['id']] = array('title' => $rss['title'], 'entries' => $this->translate('ERR_CANNOT_LOAD_DATA_FROM_RSS_LINK')); $errors[] = $rss['link']; } } if (!$flag) { setcookie('detail_source_' . $this->_id_page, "all", time() + 7 * 24 * 60 * 60, '/'); } return $feeds; }
/** * Overwrite the function define in the SiteMapInterface implement in Cible_Controller_Action * * This function return the sitemap specific for this module * * @access public * * @return a string containing xml sitemap */ public function homepagelistAction() { $_blockID = $this->_request->getParam('BlockID'); $languageID = Zend_Registry::get('languageID'); $link = Cible_FunctionsBlocks::getBlockParameter($_blockID, $languageID); $linkMax = Cible_FunctionsBlocks::getBlockParameter($_blockID, 3); $block_info = Cible_FunctionsBlocks::getBlockDetails($_blockID); $db = Zend_Registry::get("db"); $feed = Zend_Feed_Reader::import($link); $data = array('block_title' => $block_info["BI_BlockTitle"], 'linkMax' => $linkMax, 'title' => $feed->getTitle(), 'link' => $feed->getLink(), 'dateModified' => $feed->getDateModified(), 'description' => $feed->getDescription(), 'language' => $feed->getLanguage(), 'entries' => array()); foreach ($feed as $entry) { $edata = array('title' => $entry->getTitle(), 'description' => $entry->getDescription(), 'dateModified' => $entry->getDateModified(), 'authors' => $entry->getAuthors(), 'link' => $entry->getLink(), 'content' => $entry->getContent()); $data['entries'][] = $edata; } $this->view->data = $data; }
protected function _subscribe($topic) { try { $feed = Zend_Feed_Reader::import($topic); } catch (Zend_Exception $e) { return false; } /** * Must use the URI of the feed contained in the feed itself in * case the original is no longer valid (e.g. feed moved and we just * followed a redirect to the new URI) */ $feedTopicUri = $feed->getFeedLink(); if (empty($feedTopicUri)) { $feedTopicUri = $topic; } /** * The feed may advertise one or more Hub Endpoints we can use. * We may subscribe to the Topic using one or more of the Hub * Endpoints advertised (good idea in case a Hub goes down). */ $feedHubs = $feed->getHubs(); if (is_null($feedHubs) || empty($feedHubs)) { return false; } /** * Carry out subscription operation... */ $storage = new Zend_Feed_Pubsubhubbub_Storage_Filesystem(); $storage->setDirectory(APPLICATION_ROOT . '/store/subscriptions'); $options = array('topicUrl' => $feedTopicUri, 'hubUrls' => $feedHubs, 'storage' => $storage, 'callbackUrl' => 'http://hub.survivethedeepend.com/callback', 'usePathParameter' => true, 'authentications' => array('http://superfeedr.com/hubbub' => array('padraicb', 'password'))); $subscriber = new Zend_Feed_Pubsubhubbub_Subscriber($options); $subscriber->subscribeAll(); /** * Do some checking for errors... */ if (!$subscriber->isSuccess()) { var_dump($subscriber->getErrors()); exit; } return true; }
/** * Retrieve items from content source. * @return int Number of items retrieved */ function fetch() { if ($this->_disabled) { return 0; } $this->_items = array(); // reset $frontendOptions = array('lifetime' => 7200, 'automatic_serialization' => true); $backendOptions = array('cache_dir' => $this->_config->cacheDir); $cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions); Zend_Feed_Reader::setCache($cache); Zend_Feed_Reader::useHttpConditionalGet(); $classname = $this->_getItemClass(); foreach (Zend_Feed_Reader::import($this->_config->url) as $entry) { $this->_items[] = new $classname($entry, $this->_config->items); } uasort($this->_items, array('Polycast_Stalker', 'sortItems')); $this->_items = array_slice($this->_items, 0, $this->_config->limit, true); return count($this->_items); }
/** * Fetch blogs content from rss/atom feed * */ public function fetchBlogs() { foreach (Default_Model_BlogTable::getInstance()->findByLive(true) as $blog) { echo PHP_EOL . 'fetching blog: ' . $blog->feed . PHP_EOL; try { $rss = Zend_Feed_Reader::import($blog->feed); } catch (Exception $e) { echo ' ! cannot read feed' . PHP_EOL; $rss = array(); } foreach ($rss as $item) { $tags = $this->getTags($item->getTitle() . ' ' . $item->getContent()); if (empty($tags)) { continue; } //FIXME we sometime have empty content, just drop these post while it's fixed (this is not a mission critical project :) $content = $this->cleanContent($item->getContent()); if (strlen($content) < 20) { continue; } $post = new Default_Model_BlogPost(); $post['blog_id'] = $blog->id; $post['title'] = $item->getTitle(); $post['content'] = $this->cleanContent($item->getContent()); $post['url'] = $item->getLink(); $post['posted_on'] = date('Y-m-d H:i:s', $item->getDateCreated()->getTimestamp()); $post['guid'] = $item->getId(); $post['tags'] = Zend_Json::encode($tags); try { $post->save(); echo ' > ' . $post['title'] . PHP_EOL; } catch (Exception $e) { if (preg_match('/^(SQLSTATE\\[23000\\]|SQLSTATE\\[HY000\\])/i', $e->getMessage())) { //noop don't stop on duplicate } else { throw $e; } } } } }
/** * Simple utility function which imports any feed URL and * determines the existence of Hub Server endpoints. This works * best if directly given an instance of Zend_Feed_Reader_Atom|Rss * to leverage off. * * @param Zend_Feed_Reader_FeedAbstract|Zend_Feed_Abstract|string $source */ public static function detectHubs($source) { if (is_string($source)) { $feed = Zend_Feed_Reader::import($source); } elseif (is_object($source) && $source instanceof Zend_Feed_Reader_FeedAbstract) { $feed = $source; } elseif (is_object($source) && $source instanceof Zend_Feed_Abstract) { $feed = Zend_Feed_Reader::importFeed($source); } else { require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; throw new Zend_Feed_Pubsubhubbub_Exception('The source parameter was' . ' invalid, i.e. not a URL string or an instance of type' . ' Zend_Feed_Reader_FeedAbstract or Zend_Feed_Abstract'); } $atom = $feed->getExtension('Atom'); $hubs = array(); $list = $atom->getXpath()->evaluate($atom->getXpathPrefix() . '//atom:link[@rel="hub"]/@href'); if ($list->length) { foreach ($list as $url) { $hubs[] = $url->nodeValue; } } return $hubs; }
/** * Récupère les vidéos youtube * * @param string $search * @return array */ public function getList($search) { if (!$this->_videos) { $this->_videos = array(); try { $video_id = $search; if (Zend_Uri::check($search)) { $params = Zend_Uri::factory($search)->getQueryAsArray(); if (!empty($params['v'])) { $video_id = $params['v']; } } $api_key = Api_Model_Key::findKeysFor('youtube')->getApiKey(); $url = "https://www.googleapis.com/youtube/v3/videos?id={$video_id}&key={$api_key}&part=snippet,contentDetails,status"; $datas = @file_get_contents($url); if ($datas && !empty($datas['pageInfo']['totalResults'])) { $datas = Zend_Json::decode($datas); $feed = array(); foreach ($datas['items'] as $item) { $feed[] = new Core_Model_Default(array('title' => !empty($item['snippet']['title']) ? $item['snippet']['title'] : null, 'content' => !empty($item['snippet']['description']) ? $item['snippet']['description'] : null, 'link' => "http://www.youtube.com/watch?v={$video_id}")); } } else { $this->_setYoutubeUrl($search); $feed = Zend_Feed_Reader::import($this->getLink()); } } catch (Exception $e) { $feed = array(); } foreach ($feed as $entry) { $params = Zend_Uri::factory($entry->getLink())->getQueryAsArray(); if (empty($params['v'])) { continue; } $video = new Core_Model_Default(array('id' => $params['v'], 'title' => $entry->getTitle(), 'description' => $entry->getContent(), 'link' => "http://www.youtube.com/embed/{$params['v']}", 'image' => "http://img.youtube.com/vi/{$params['v']}/0.jpg")); $this->_videos[] = $video; } } return $this->_videos; }
public function getImages($offset) { if (!$this->_images) { $this->_images = array(); try { if (empty($offset)) { $offset = 0; } else { $offset += 1; } // $orig_offset = $offset; $this->_setPicasaUrl($offset); $feed = Zend_Feed_Reader::import($this->getLink()); } catch (Exception $e) { $feed = array(); } $images = array(); foreach ($feed as $key => $entry) { /** * @bug Solution provisoire en attendant que Google règle le problème du start-index */ // if($key < $offset) continue; $author = $entry->getAuthor(); $image = ''; foreach ($entry->getElement()->getElementsByTagName('content') as $content) { $src = (string) $content->getAttribute('src'); if (!empty($src)) { $image = $src; } } $this->_images[] = new Core_Model_Default(array('offset' => ++$offset, 'title' => $entry->getTitle(), 'description' => $entry->getDescription(), 'author' => $author['name'], 'image' => $image)); /** * @bug Solution provisoire en attendant que Google règle le problème du start-index */ // if($offset >= $orig_offset + self::DISPLAYED_PER_PAGE) break; } } return $this->_images; }
public function searchAction() { if ($datas = $this->getRequest()->getPost()) { $html = ''; try { if (empty($datas['link']) or !Zend_Uri::check($datas['link'])) { throw new Exception($this->_('Please enter a valid url')); } $result = Zend_Feed_Reader::findFeedLinks($datas['link']); //On a soit un flux directement, soit une URL sans flux trouvable if (count($result) == 0) { try { $feed = Zend_Feed_Reader::import($datas['link']); $html = $this->_saveFeed($datas); } catch (Exception $e) { $html = array('message' => $this->_("No RSS feed could be found"), 'message_button' => 1, 'message_loader' => 1); } //On a une adresse avec des flux } else { $feeds = array(); foreach ($result as $feed) { if (!empty($feed['href'])) { $feeds[] = $feed['href']; } } if (!isset($datas['feed_id'])) { $id = 'new'; } else { $id = $datas['feed_id']; } $html = array('links' => $feeds, 'id' => $id); } } catch (Exception $e) { $html = array('message' => $this->_("No RSS feed could be found"), 'message_button' => 1, 'message_loader' => 1); } $this->getLayout()->setHtml(Zend_Json::encode($html)); } }
/** * Récupère les podcasts * * @param string $search * @return array */ public function getList($flux) { if (!$this->_podcasts) { $this->_podcasts = array(); try { if ($flux) { $feed = Zend_Feed_Reader::import($flux); } } catch (Exception $e) { $feed = array(); } foreach ($feed as $entry) { $enclosure = $entry->getEnclosure(); if (strpos($enclosure->type, 'video') !== false) { $image = $feed->getImage(); $podcastExt = $entry->getExtension('Podcast'); $podcast = new Core_Model_Default(array('id' => $entry->getId(), 'title' => $entry->getTitle(), 'description' => $entry->getContent(), 'link' => $entry->getEnclosure()->url, 'image' => $podcastExt->getImage() ? $podcastExt->getImage() : $image['uri'])); $this->_podcasts[] = $podcast; } } } return $this->_podcasts; }
public function read($id, $type) { $rssModel = new Default_Model_RssFeeds(); $pageTypeModel = new Default_Model_PageTypes(); $type = $pageTypeModel->getId($type); $urls = $rssModel->getUrls($id, $type); $feeds = array(); foreach ($urls as $url) { try { $feed = Zend_Feed_Reader::import($url['url_rss']); //echo $feed->getEncoding(); $feeds[] = $feed; } catch (Exception $e) { echo "Error with feed"; } } if (count($feeds) != 0) { $data = $this->sortFeed($feeds); } else { return false; } return $data; }
protected function _load() { if (!isset($this->_options[0])) { throw new Exceptions_SeotoasterWidgetException('Rss feed url should be specified'); } $scheme = 'http'; $feeds = array(); //little hack for options, needs to be somthing better if (preg_match('~^https?$~', $this->_options[0])) { $scheme = array_shift($this->_options); $this->_options[0] = ltrim($this->_options[0], '/'); } $feedUrl = $scheme . '://' . str_replace(' ', '+', html_entity_decode($this->_options[0])); $maxResult = isset($this->_options[1]) ? $this->_options[1] : self::RSS_RESULT_COUNT; Zend_Uri::setConfig(array('allow_unwise' => true)); if (!Zend_Uri::check($feedUrl)) { throw new Exceptions_SeotoasterWidgetException('Rss feed url is not valid.'); } Zend_Feed_Reader::setCache(Zend_Registry::get('cache')); Zend_Feed_Reader::useHttpConditionalGet(); try { $rss = Zend_Feed_Reader::import($feedUrl); } catch (Exception $e) { return $e->getMessage(); } $i = 0; foreach ($rss as $item) { if ($i == $maxResult) { break; } $feeds[] = array('title' => $item->getTitle(), 'link' => $item->getLink(), 'description' => Tools_Text_Tools::cutText(strip_tags($item->getDescription()), isset($this->_options[2]) ? $this->_options[2] : self::RSS_DESC_LENGTH), 'pubDate' => $item->getDateCreated(), 'content' => $item->getContent(), 'authors' => $item->getAuthors(), 'image' => $this->_getRssEntryImage($item->getContent())); $i++; } $this->_view->useImage = isset($this->_options[3]) && $this->_options[3] == 'img' ? true : false; $this->_view->feed = $feeds; return $this->_view->render('rss.phtml'); }
public function read($id, $type) { $rssModel = new Default_Model_RssFeeds(); $pageTypeModel = new Default_Model_PageTypes(); $type = $pageTypeModel->getId($type); $this->type = $type; if (null == $type) { return false; } $this->typename = $pageTypeModel->getName($type); $this->id = $id; if (!($urls = $rssModel->getUrls($id, $type))) { return false; } $feeds = array(); $cache = Zend_Registry::get('short_cache'); $cacheTag = 'rss_feed_' . $this->typename . "_" . $this->id; if (!($data = $cache->load($cacheTag))) { foreach ($urls as $url) { try { $feed = Zend_Feed_Reader::import($url['url_rss']); $feeds[] = $feed; } catch (Exception $e) { echo "Error with feed: " . $url['url_rss']; echo $e->getMessage(); } } if (count($feeds) != 0) { $data = $this->sortFeed($feeds); } else { return false; } $cache->save($data, $cacheTag); } return $data; }
/** * Supports lazy loading of feeds using Zend_Feed_Reader::import() but * delegates any other operations to the parent class. * * @param string $offset * @return mixed * @uses Zend_Feed_Reader */ public function offsetGet($offset) { if ($offset == 'feed' && !$this->offsetExists('feed')) { if (!$this->offsetExists('href')) { return null; } $feed = Zend_Feed_Reader::import($this->offsetGet('href')); $this->offsetSet('feed', $feed); return $feed; } return parent::offsetGet($offset); }
public function portletFeedAction() { $dashboard = $this->getCurrentConfiguration(); $id = $this->getParam("id"); $cache = \Pimcore\Cache::getInstance(); if ($cache) { $cache->setLifetime(10); \Zend_Feed_Reader::setCache($cache); } $portlet = []; foreach ($dashboard["positions"] as $col) { foreach ($col as $row) { if ($row['id'] == $id) { $portlet = $row; } } } $feedUrl = $portlet['config']; $feed = null; if (!empty($feedUrl)) { try { $feed = \Zend_Feed_Reader::import($feedUrl); } catch (\Exception $e) { \Logger::error($e); } } $count = 0; $entries = []; if ($feed) { foreach ($feed as $entry) { // display only the latest 11 entries $count++; if ($count > 10) { break; } $entry = ["title" => $entry->getTitle(), "description" => $entry->getDescription(), 'authors' => $entry->getAuthors(), 'link' => $entry->getLink(), 'content' => $entry->getContent()]; foreach ($entry as &$content) { $content = strip_tags($content, "<h1><h2><h3><h4><h5><p><br><a><img><div><b><strong><i>"); $content = preg_replace('/on([a-z]+)([ ]+)?=/i', "data-on\$1=", $content); } $entries[] = $entry; } } $this->_helper->json(["entries" => $entries]); }
public function synchronise(Zend_Feed_Reader_FeedAbstract $feed = null) { if (is_null($feed)) { Zend_Feed_Reader::setHttpClient($this->getHttpClient()); try { $feed = Zend_Feed_Reader::import($this->uri); } catch (Exception $e) { $message = 'Failed Feed Import (' . $this->uri . '): ' . get_class($e) . ': ' . $e->getMessage() . PHP_EOL . 'Stack Trace: ' . PHP_EOL . $e->getTraceAsString(); $this->getLogger()->log($message, Zend_Log::ERR); return; } } if ($this->uri !== $feed->getFeedLink() && !is_null($feed->getFeedLink())) { $this->uri = $feed->getFeedLink(); $this->save(); } foreach ($feed as $entry) { $entryHash = md5(trim($entry->getTitle()) . trim($entry->getDescription()) . trim($entry->getContent())); $currentEntry = Doctrine_Query::create()->from('Zfplanet_Model_Entry')->where('feedId = ?', $this->id)->andWhere('id = ?', $entry->getId())->fetchone(); if ($currentEntry && $entryHash == $currentEntry->signatureHash) { continue; } elseif ($currentEntry) { $this->_setCommonData($currentEntry, $entry, $entryHash); $currentEntry->save(); if ($lindexer = $this->getLuceneIndexer()) { try { $lindexer->update($currentEntry); } catch (Exception $e) { $message = 'Failed Lucene Indexing (' . $this->uri . '): ' . get_class($e) . ': ' . $e->getMessage() . PHP_EOL . 'Stack Trace: ' . PHP_EOL . $e->getTraceAsString(); $this->getLogger()->log($message, Zend_Log::ERR); return; } } } else { $newEntry = new Zfplanet_Model_Entry(); $newEntry->id = $entry->getId(); $newEntry->feedId = $this->id; $newEntry->uri = $entry->getLink(); $this->_setCommonData($newEntry, $entry, $entryHash); $newEntry->publishedDate = $entry->getDateCreated()->get(Zend_Date::ISO_8601); $newEntry->isActive = 1; $newEntry->save(); if ($tnotifier = $this->getTwitterNotifier()) { try { $tnotifier->notify($newEntry); } catch (Exception $e) { $message = 'Failed Twitter Notification: ' . get_class($e) . ': ' . $e->getMessage() . PHP_EOL . 'Stack Trace: ' . PHP_EOL . $e->getTraceAsString(); $this->getLogger()->log($message, Zend_Log::ERR); } } if ($lindexer = $this->getLuceneIndexer()) { try { $lindexer->index($newEntry); } catch (Exception $e) { $message = 'Failed Lucene Indexing (' . $this->uri . '): ' . get_class($e) . ': ' . $e->getMessage() . PHP_EOL . 'Stack Trace: ' . PHP_EOL . $e->getTraceAsString(); $this->getLogger()->log($message, Zend_Log::ERR); return; } } } } }
public function portletFeedAction() { $config = $this->getCurrentConfiguration(); $cache = Pimcore_Model_Cache::getInstance(); if ($cache) { $cache->setLifetime(10); Zend_Feed_Reader::setCache($cache); } $feedUrl = self::$defaultFeed; if ($config["settings"]["pimcore.layout.portlets.feed"]["url"]) { $feedUrl = $config["settings"]["pimcore.layout.portlets.feed"]["url"]; } $feed = Zend_Feed_Reader::import($feedUrl); $count = 0; foreach ($feed as $entry) { // display only the latest 11 entries $count++; if ($count > 10) { break; } $entries[] = array("title" => $entry->getTitle(), "description" => $entry->getDescription(), 'authors' => $entry->getAuthors(), 'link' => $entry->getLink(), 'content' => $entry->getContent()); } $this->_helper->json(array("entries" => $entries)); }
/** * Get feed items from specified url * * @param string $p_url * @return Iterator */ private function getItems($p_url) { // get cache $cache = Zend_Cache::factory('Core', 'File', array('lifetime' => 300, 'automatic_serialization' => true), array('cache_dir' => APPLICATION_PATH . '/../cache')); // set reader Zend_Feed_Reader::setCache($cache); Zend_Feed_Reader::useHttpConditionalGet(); // get feed $feed = Zend_Feed_Reader::import($p_url); return $feed; }
/** * Fetch the latest data for a feed from its specified URL. * Individual entries are returned in the 'entries' key of the return array. * * @param string $url * @param Exception|null $e Exception that occurs when reading feed * * @return array */ public function getFeedData($url, Exception &$e = null) { try { $feed = Zend_Feed_Reader::import($url); } catch (Exception $feedEx) { $e = $feedEx; return array(); } $data = array('id' => $feed->getId(), 'title' => $feed->getTitle(), 'link' => $feed->getLink(), 'date_modified' => $feed->getDateModified(), 'description' => $feed->getDescription(), 'language' => $feed->getLanguage(), 'image' => $feed->getImage(), 'generator' => $feed->getGenerator(), 'entries' => array()); foreach ($feed as $entry) { /** @var $entry Zend_Feed_Reader_EntryInterface */ $entryData = array('id' => $entry->getId(), 'title' => html_entity_decode($entry->getTitle(), ENT_COMPAT, 'utf-8'), 'description' => html_entity_decode($entry->getDescription(), ENT_COMPAT, 'utf-8'), 'date_modified' => null, 'authors' => $entry->getAuthors(), 'link' => $entry->getLink(), 'content_html' => $entry->getContent()); $enclosure = $entry->getEnclosure(); if ($enclosure) { $entryData['enclosure_url'] = $enclosure->url; $entryData['enclosure_length'] = $enclosure->length; $entryData['enclosure_type'] = $enclosure->type; } if (utf8_strlen($entryData['id']) > 250) { $entryData['id'] = md5($entryData['id']); } try { $entryData['date_modified'] = $entry->getDateModified(); } catch (Zend_Exception $e) { } // triggered with invalid date format if (!empty($entryData['date_modified']) && $entryData['date_modified'] instanceof Zend_Date) { $entryData['date_modified'] = $entryData['date_modified']->getTimeStamp(); } else { $entryData['date_modified'] = XenForo_Application::$time; } $entryData['date_modified'] = XenForo_Locale::dateTime($entryData['date_modified'], 'absolute'); $data['entries'][] = $entryData; } $data = XenForo_Input::cleanStringArray($data); return $data; }
<?php $_SERVER['HTTP_HOST'] = 'v1.chregu.tv'; define("R2T_PROJECT_DIR", dirname(__FILE__)); ini_set("include_path", R2T_PROJECT_DIR . "/inc/:/var/www/zf-trunk/:" . ini_get("include_path")); require_once 'Zend/Feed/Reader.php'; //$topic = 'http://chregu.tv/blog/atom.xml'; $topic = 'http://www.planet-php.net/atom/'; $feed = Zend_Feed_Reader::import($topic); $feedTopicUri = $feed->getFeedLink(); /** * The feed may advertise one or more Hub Endpoints we can use. * We may subscribe to the Topic using one or more of the Hub * Endpoints advertised (good idea in case a Hub goes down). */ $feedHubs = $feed->getHubs(); /** * Carry out subscription operation... */ require_once "Zend/Feed/Pubsubhubbub/Storage/Filesystem.php"; $storage = new Zend_Feed_Pubsubhubbub_Storage_Filesystem(); $storage->setDirectory(R2T_PROJECT_DIR . "/tmp"); $options = array('topicUrl' => $feedTopicUri, 'hubUrls' => $feedHubs, 'storage' => $storage, 'callbackUrl' => 'http://' . $_SERVER['HTTP_HOST'] . '/rss2twi/callback.php', 'usePathParameter' => true, 'authentications' => array()); require_once "Zend/Feed/Pubsubhubbub/Subscriber.php"; $subscriber = new Zend_Feed_Pubsubhubbub_Subscriber($options); $subscriber->subscribeAll(); /** * Do some checking for errors... */ if (!$subscriber->isSuccess()) { var_dump($subscriber->getErrors());