Пример #1
0
 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;
 }
Пример #2
0
 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);
 }
Пример #3
0
 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;
 }
Пример #4
0
 /**
  * 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();
 }
Пример #5
0
 /**
  * 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());
         }
     }
 }
Пример #6
0
 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();
         }
     }
 }
Пример #7
0
 /**
  * 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;
 }
Пример #8
0
 /**
  * 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();
 }
Пример #9
0
 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');
 }
Пример #10
0
 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;
 }
Пример #12
0
 /**
  * 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;
 }
Пример #13
0
 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;
 }
Пример #14
0
 /**
  * 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);
 }
Пример #15
0
 /**
  * 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;
                 }
             }
         }
     }
 }
Пример #16
0
 /**
  * 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;
 }
Пример #17
0
 /**
  * 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;
 }
Пример #18
0
 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;
 }
Пример #19
0
 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));
     }
 }
Пример #20
0
 /**
  * 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;
 }
Пример #21
0
 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;
 }
Пример #22
0
 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');
 }
Пример #23
0
 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;
 }
Пример #24
0
 /**
  * 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);
 }
Пример #25
0
 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]);
 }
Пример #26
0
 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;
                 }
             }
         }
     }
 }
Пример #27
0
 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));
 }
Пример #28
0
 /**
  * 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;
 }
Пример #29
0
 /**
  * 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;
 }
Пример #30
0
<?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());