/** * Display a wildcard in the back end * * @return string */ public function generate() { if (TL_MODE == 'BE') { /** @var \BackendTemplate|object $objTemplate */ $objTemplate = new \BackendTemplate('be_wildcard'); $objTemplate->wildcard = '### ' . utf8_strtoupper($GLOBALS['TL_LANG']['FMD']['rss_reader'][0]) . ' ###'; $objTemplate->title = $this->headline; $objTemplate->id = $this->id; $objTemplate->link = $this->name; $objTemplate->href = '' . $GLOBALS['TL_CONFIG']['backendPath'] . '/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id; return $objTemplate->parse(); } $this->objFeed = new \SimplePie(); $arrUrls = trimsplit('[\\n\\t ]', trim($this->rss_feed)); if (count($arrUrls) > 1) { $this->objFeed->set_feed_url($arrUrls); } else { $this->objFeed->set_feed_url($arrUrls[0]); } $this->objFeed->set_output_encoding(\Config::get('characterSet')); $this->objFeed->set_cache_location(TL_ROOT . '/system/tmp'); $this->objFeed->enable_cache(false); if ($this->rss_cache > 0) { $this->objFeed->enable_cache(true); $this->objFeed->set_cache_duration($this->rss_cache); } if (!$this->objFeed->init()) { $this->log('Error importing RSS feed "' . $this->rss_feed . '"', __METHOD__, TL_ERROR); return ''; } $this->objFeed->handle_content_type(); return parent::generate(); }
function fetch_feed2($url) { require_once ABSPATH . WPINC . '/class-feed.php'; $feed = new SimplePie(); $feed->set_sanitize_class('WP_SimplePie_Sanitize_KSES'); // We must manually overwrite $feed->sanitize because SimplePie's // constructor sets it before we have a chance to set the sanitization class $feed->sanitize = new WP_SimplePie_Sanitize_KSES(); $feed->set_cache_class('WP_Feed_Cache'); $feed->set_file_class('WP_SimplePie_File'); $feed->set_feed_url($url); $feed->force_feed(true); /** This filter is documented in wp-includes/class-feed.php */ $feed->set_cache_duration(apply_filters('wp_feed_cache_transient_lifetime', 12 * HOUR_IN_SECONDS, $url)); /** * Fires just before processing the SimplePie feed object. * * @since 3.0.0 * * @param object &$feed SimplePie feed object, passed by reference. * @param mixed $url URL of feed to retrieve. If an array of URLs, the feeds are merged. */ do_action_ref_array('wp_feed_options', array(&$feed, $url)); $feed->init(); $feed->handle_content_type(); if ($feed->error()) { return new WP_Error('simplepie-error', $feed->error()); } return $feed; }
function rss_to_activity_streams($data) { // $feed = new SimplePie(); $feed->set_raw_data($data); // unset($data); // $feed->set_stupidly_fast(true); $feed->init(); $feed->handle_content_type(); // $id = md5($url); $title = 'submit'; $link = 'http://' . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; $activityStream = new ActivityStreamsDoc($id, $title, $link); // foreach ($feed->get_items() as $item) { $author = $item->get_author(); if (!$author) { $author = $feed->get_author(); } // $activityStream->entry($item->get_id(), date("r", $item->get_date()), $author ? $author->get_name() : null, $author ? $author->get_link() : null, $item->get_title(), $item->get_permalink(), $item->get_description()); } return $activityStream; }
public function addSystemMessages() { if ($GLOBALS['TL_CONFIG']['be_rss_src'] == '') { return ''; } $feed = new \SimplePie(); $feed->set_feed_url(html_entity_decode($GLOBALS['TL_CONFIG']['be_rss_src'])); $feed->set_output_encoding(\Config::get('characterSet')); $feed->set_cache_location(TL_ROOT . '/system/tmp'); $feed->enable_cache(true); if (!$feed->init()) { $this->log('Error importing RSS feed "' . $this->rss_feed . '"', __METHOD__, TL_ERROR); return ''; } $items = $feed->get_items(0, $GLOBALS['TL_CONFIG']['be_rss_max'] ? $GLOBALS['TL_CONFIG']['be_rss_max'] : 3); $output = ''; if ($items) { $user = \BackendUser::getInstance(); foreach ($items as $item) { $template = new \BackendTemplate('be_rss_item'); $template->title = $item->get_title(); $template->link = $item->get_link(); $template->content = $item->get_content(); $template->date = $item->get_date($GLOBALS['TL_CONFIG']['datimFormat']); $template->class = $item->get_date('U') > $user->lastLogin ? 'new' : 'message'; $output .= $template->parse(); } } $template = new \BackendTemplate('be_rss'); $template->headline = $GLOBALS['TL_CONFIG']['be_rss_headline']; $template->items = $output; return $template->parse(); }
function show_news($newsfeed, $newsitems, $newsprefiximage, $newssuffiximage) { $rss = new SimplePie($newsfeed, dirname(__FILE__) . '/cache'); $rss->force_feed(true); // MAKE IT WORK $rss->set_cache_duration(60 * 5); $rss->init(); $rss->handle_content_type(); // if ($rss->error()) { // echo htmlentities($rss->error()); // return; // } foreach ($rss->get_items(0, $newsitems) as $item) { $title = $item->get_title(); $url = $item->get_permalink(); if ($newsprefiximage != '') { echo "<img src='{$newsprefiximage}'>"; } echo "<a href={$url}>{$title}</a>"; if ($newssuffiximage != '') { echo "<img src='{$newssuffiximage}'>"; } echo "<br />"; } }
public function respond() { $url = trim($this->matches[1]); $index = 0; if (isset($this->matches[2])) { $index = intval(trim($this->matches[2])); $index = $index - 1; $index = max(0, $index); } $error_level = error_reporting(); error_reporting($error_level ^ E_USER_NOTICE); $feed = new \SimplePie(); if ($this->cacheEnabled()) { $feed->set_cache_location($this->config['cache_directory']); $feed->set_cache_duration(600); } $feed->set_feed_url($url); $feed->init(); $feed->handle_content_type(); if ($index > $feed->get_item_quantity() - 1) { $index = $feed->get_item_quantity() - 1; } $item = $feed->get_item($index); $result = null; if ($item) { $title = html_entity_decode($item->get_title()); $link = $item->get_permalink(); $date = $item->get_date(); $i = $index + 1; $result = "[{$i}] {$date} - {$title} - {$link}"; } error_reporting($error_level); return $result; }
/** * Provided a URL, will return an array representing the feed item for that * URL. A feed item contains the content, url, simplepie object, and failure * status for the URL passed. Handles caching of content requests. * * @return array * @author Jared Lang * */ protected static function __new_feed($url) { require_once ABSPATH . '/wp-includes/class-simplepie.php'; $simplepie = null; $failed = False; $cache_key = 'feedmanager-' . md5($url); $content = get_site_transient($cache_key); if ($content === False) { $content = @file_get_contents($url); if ($content === False) { $failed = True; $content = null; error_log('FeedManager failed to fetch data using url of ' . $url); } else { set_site_transient($cache_key, $content, self::$cache_length); } } if ($content) { $simplepie = new SimplePie(); $simplepie->set_raw_data($content); $simplepie->init(); $simplepie->handle_content_type(); if ($simplepie->error) { error_log($simplepie->error); $simplepie = null; $failed = True; } } else { $failed = True; } return array('content' => $content, 'url' => $url, 'simplepie' => $simplepie, 'failed' => $failed); }
function add($render) { $url = $_REQUEST['url']; require_once 'lib/simplepie/simplepie.inc'; $pie = new SimplePie(); $pie->enable_cache(false); $pie->set_autodiscovery_level(SIMPLEPIE_LOCATOR_ALL); $pie->set_feed_url($url); $pie->init(); $feed_url = $pie->feed_url; $feed_title = $pie->get_title(); // Save feed to insert into session variables for later insertion into db // only do this if we found items at the given url. This way we won't // insert broken urls in doadd(). Also prevents inserting a new feed // that never gets subscribed to in the following page. if (count($pie->get_items()) > 0) { $_SESSION['new_feed_url'] = $feed_url; $_SESSION['new_feed_name'] = $feed_title; } else { $_SESSION['new_feed_url'] = NULL; $_SESSION['new_feed_name'] = NULL; } $render->assign('url', $url); $render->assign('feed_url', $feed_url); $render->assign('items', array_slice($pie->get_items(), 0, 5)); $render->assign('feed', $pie); $render->assign('title', 'Adding Feed'); $render->display('feed_search.tpl'); }
function flickr_photos($feed_url, $max_items = 10) { //$items = combine_feeds( array($feed_url), $max_items, '~', false); $feed = new SimplePie(); $feed->set_feed_url($feed_url); $feed->set_cache_location(ABSPATH . '/cache'); $feed->set_output_encoding('ISO-8859-1'); $feed->init(); $html = ''; if ($feed->data) { foreach ($feed->get_items(0, $max_items) as $item) { $image = $item->get_description(); $image = substr($image, strpos($image, 'src=') + 4); // '<img') + 10); $image = trim(substr($image, 0, strpos($image, '.jpg') + 4)); // , "\" width"))); $healthy = array("%3A", "%2F", '"', 'm.jpg'); $yummy = array(":", "/", '', 's.jpg'); $image = str_replace($healthy, $yummy, $image); //$image = str_replace('m.jpg', 's.jpg', $image); $html .= '<a href="' . $item->get_permalink() . '">'; $html .= '<img src="' . $image . '" alt="[flickr photo: ' . $item->get_title() . ']" title="' . $item->get_title() . '" />'; $html .= "</a>\n"; } } return $html; }
function showBlogLastArticles() { $content = ''; $feed = new SimplePie(); $feed->set_feed_url(array('http://bilboplanet.com/feed/')); $feed->set_cache_duration(600); # $feed->enable_xml_dump(isset($_GET['xmldump']) ? true : false); $success = $feed->init(); $feed->handle_content_type(); if ($success) { $content .= '<div class="box-dashboard"><div class="top-box-dashboard">' . T_('BilboPlanet news - Official Website :') . '</div>'; $content .= '<ul>'; $itemlimit = 0; foreach ($feed->get_items() as $item) { if ($itemlimit == 4) { break; } $content .= '<li>' . $item->get_date('j/m/y') . ' : '; $content .= '<a class="tips" rel="' . $item->get_title() . '" href="' . $item->get_permalink() . '" target="_blank">' . $item->get_title() . '</a>'; $content .= '</li>'; $itemlimit = $itemlimit + 1; } $content .= '</ul></div>'; } return $content; }
public function update() { $feed = new SimplePie(); $feed->set_feed_url('http://api.twitter.com/1/statuses/user_timeline.atom?screen_name=' . $this->user); $feed->enable_cache(false); $feed->set_stupidly_fast(true); $feed->init(); foreach ($feed->get_items() as $item) { $title = substr($item->get_title(), strlen($this->user) + 2); $title = sprintf('<blockquote>%s</blockquote>', $title); $data = array( 'id' => $item->get_id(), 'title' => Twitter_Autolink::create($title) ->setTarget(false) ->setExternal(false) ->addLinks(), 'content' => '', 'source' => 'twitter', 'timestamp' => $item->get_date('U') ); Murray_Entry::create($data); } }
public function update() { $feed = new SimplePie(); $feed->set_feed_url('https://github.com/' . $this->user . '.atom'); $feed->enable_cache(false); $feed->set_stupidly_fast(true); $feed->init(); foreach ($feed->get_items() as $item) { $id = $item->get_id(); $title = substr($item->get_title(), strlen($this->user) + 1); $title = sprintf('<a href="%s">%s</a>', $item->get_permalink(), $title); $data = array( 'id' => $id, 'title' => $title, 'content' => $item->get_content(), 'source' => 'github', 'timestamp' => $item->get_date('U') ); /*$type = substr($id, 20, strpos($id, '/')); switch ($type) { case 'PushEvent': case 'IssueCommentEvent': case 'PullRequestEvent': case 'IssuesEvent': default: // no-op, standard stuff will work fine break; }*/ Murray_Entry::create($data); } }
/** * Provided a URL, will return an array representing the feed item for that * URL. A feed item contains the content, url, simplepie object, and failure * status for the URL passed. Handles caching of content requests. * * @return array * @author Jared Lang **/ protected static function __new_feed($url) { $timer = Timer::start(); require_once THEME_DIR . '/third-party/simplepie.php'; $simplepie = null; $failed = False; $cache_key = 'feedmanager-' . md5($url); $content = get_site_transient($cache_key); if ($content === False) { $content = @file_get_contents($url); if ($content === False) { $failed = True; $content = null; error_log('FeedManager failed to fetch data using url of ' . $url); } else { set_site_transient($cache_key, $content, self::$cache_length); } } if ($content) { $simplepie = new SimplePie(); $simplepie->set_raw_data($content); $simplepie->init(); $simplepie->handle_content_type(); if ($simplepie->error) { error_log($simplepie->error); $simplepie = null; $failed = True; } } else { $failed = True; } $elapsed = round($timer->elapsed() * 1000); debug("__new_feed: {$elapsed} milliseconds"); return array('content' => $content, 'url' => $url, 'simplepie' => $simplepie, 'failed' => $failed); }
public function import($forceResync) { if (get_option('goodreads_user_id')) { if (!class_exists('SimplePie')) { require_once ABSPATH . WPINC . '/class-feed.php'; } $rss_source = sprintf(self::$apiurl, get_option('goodreads_user_id')); /* Create the SimplePie object */ $feed = new SimplePie(); /* Set the URL of the feed you're retrieving */ $feed->set_feed_url($rss_source); /* Tell SimplePie to cache the feed using WordPress' cache class */ $feed->set_cache_class('WP_Feed_Cache'); /* Tell SimplePie to use the WordPress class for retrieving feed files */ $feed->set_file_class('WP_SimplePie_File'); /* Tell SimplePie how long to cache the feed data in the WordPress database */ $feed->set_cache_duration(apply_filters('wp_feed_cache_transient_lifetime', get_option('reclaim_update_interval'), $rss_source)); /* Run any other functions or filters that WordPress normally runs on feeds */ do_action_ref_array('wp_feed_options', array(&$feed, $rss_source)); /* Initiate the SimplePie instance */ $feed->init(); /* Tell SimplePie to send the feed MIME headers */ $feed->handle_content_type(); if ($feed->error()) { parent::log(sprintf(__('no %s data', 'reclaim'), $this->shortname)); parent::log($feed->error()); } else { $data = self::map_data($feed); parent::insert_posts($data); update_option('reclaim_' . $this->shortname . '_last_update', current_time('timestamp')); } } else { parent::log(sprintf(__('%s user data missing. No import was done', 'reclaim'), $this->shortname)); } }
public function html() { // Get settings $settings = $this->config; // Define Simplepie $feed = new \SimplePie(); $feed->set_feed_url($settings['feed']); $feed->enable_cache($settings['enable_cache']); $feed->set_cache_location(cache_path()); $feed->set_cache_duration(60 * 60 * 12); $feed->set_output_encoding($settings['charset']); $feed->init(); $title = $settings['title']; $data = []; foreach ($feed->get_items($settings['offset'], $settings['limit']) as $key => $item) { $data[$key]['title'] = $item->get_title(); $data[$key]['permalink'] = $item->get_permalink(); $data[$key]['date'] = $item->get_date(); $data[$key]['updated_date'] = $item->get_updated_date(); $data[$key]['author'] = $item->get_author(); $data[$key]['category'] = $item->get_category(); $data[$key]['description'] = $item->get_description(); $data[$key]['content'] = $item->get_content(); } return $this->view('rssfeed', compact('title', 'data')); }
function getFeeds() { $app = JFactory::getApplication(); $params = JComponentHelper::getParams('com_jce'); $limit = $params->get('feed_limit', 2); $feeds = array(); $options = array('rssUrl' => 'http://www.joomlacontenteditor.net/news/feed/rss/latest-news?format=feed', 'cache_time' => $params->get('feed_cachetime', 86400)); // use this directly instead of JFactory::getXMLParserto avoid the feed data error jimport('simplepie.simplepie'); if (!is_writable(JPATH_BASE . '/cache')) { $options['cache_time'] = 0; } $rss = new SimplePie($options['rssUrl'], JPATH_BASE . '/cache', isset($options['cache_time']) ? $options['cache_time'] : 0); $rss->force_feed(true); $rss->handle_content_type(); if ($rss->init()) { $count = $rss->get_item_quantity(); if ($count) { $count = $count > $limit ? $limit : $count; for ($i = 0; $i < $count; $i++) { $feed = new StdClass(); $item = $rss->get_item($i); $feed->link = $item->get_link(); $feed->title = $item->get_title(); $feed->description = $item->get_description(); $feeds[] = $feed; } } } return $feeds; }
/** * Fetches and parses an RSS or Atom feed, and returns its items. * * Each element in the returned array will have the following keys: * * - **authors** – An array of the item’s authors, where each sub-element has the following keys: * - **name** – The author’s name * - **url** – The author’s URL * - **email** – The author’s email * - **categories** – An array of the item’s categories, where each sub-element has the following keys: * - **term** – The category’s term * - **scheme** – The category’s scheme * - **label** – The category’s label * - **content** – The item’s main content. * - **contributors** – An array of the item’s contributors, where each sub-element has the following keys: * - **name** – The contributor’s name * - **url** – The contributor’s URL * - **email** – The contributor’s email * - **date** – A {@link DateTime} object representing the item’s date. * - **dateUpdated** – A {@link DateTime} object representing the item’s last updated date. * - **permalink** – The item’s URL. * - **summary** – The item’s summary content. * - **title** – The item’s title. * * @param string $url The feed’s URL. * @param int $limit The maximum number of items to return. Default is 0 (no limit). * @param int $offset The number of items to skip. Defaults to 0. * @param string $cacheDuration Any valid [PHP time format](http://www.php.net/manual/en/datetime.formats.time.php). * * @return array|string The list of feed items. */ public function getFeedItems($url, $limit = 0, $offset = 0, $cacheDuration = null) { $items = array(); if (!extension_loaded('dom')) { Craft::log('Craft needs the PHP DOM extension (http://www.php.net/manual/en/book.dom.php) enabled to parse feeds.', LogLevel::Warning); return $items; } if (!$cacheDuration) { $cacheDuration = craft()->config->getCacheDuration(); } else { $cacheDuration = DateTimeHelper::timeFormatToSeconds($cacheDuration); } $feed = new \SimplePie(); $feed->set_feed_url($url); $feed->set_cache_location(craft()->path->getCachePath()); $feed->set_cache_duration($cacheDuration); $feed->init(); // Something went wrong. if ($feed->error()) { Craft: log('There was a problem parsing the feed: ' . $feed->error(), LogLevel::Warning); return array(); } foreach ($feed->get_items($offset, $limit) as $item) { $date = $item->get_date('U'); $dateUpdated = $item->get_updated_date('U'); $items[] = array('authors' => $this->_getItemAuthors($item->get_authors()), 'categories' => $this->_getItemCategories($item->get_categories()), 'content' => $item->get_content(true), 'contributors' => $this->_getItemAuthors($item->get_contributors()), 'date' => $date ? new DateTime('@' . $date) : null, 'dateUpdated' => $dateUpdated ? new DateTime('@' . $dateUpdated) : null, 'permalink' => $item->get_permalink(), 'summary' => $item->get_description(true), 'title' => $item->get_title(), 'enclosures' => $this->_getEnclosures($item->get_enclosures())); } return $items; }
public static function simplepie($feed_url = NULL) { if (!$feed_url) { return false; } $data = new SimplePie(); //******************************* // Convert To GeoRSS feed // To Disable Uncomment these 3 lines //******************************* $geocoder = new Geocoder(); $georss_feed = $geocoder->geocode_feed($feed_url); if ($georss_feed == false or empty($georss_feed)) { // Our RSS feed pull failed, so let's grab the original RSS feed $data->set_feed_url($feed_url); } else { // Converting our feed to GeoRSS was successful, use that data $data->set_raw_data($georss_feed); } // Uncomment Below to disable geocoding //$data->set_feed_url( $feed_url ); //******************************* $data->enable_cache(false); $data->enable_order_by_date(true); $data->init(); $data->handle_content_type(); return $data; }
/** * see http://simplepie.org/wiki/reference/start#simplepie_item * * @return array SimplePie_Item */ static function getFeed($url) { $feed = new SimplePie(); $feed->set_feed_url($url); $feed->enable_cache(false); $feed->init(); return $feed; }
function lire_feed($url, $nb = 3) { $feed = new SimplePie($url, '../client/cache/flux'); $feed->init(); $feed->handle_content_type(); $tab = $feed->get_items(); return count($tab) > 0 ? array_slice($tab, 0, 3) : false; }
function feed() { $feed = new SimplePie(); $feed->set_raw_data($this->data); $feed->enable_cache(false); $feed->init(); return $feed; }
/** * RSS news page * * @param Request $request * @param Application $app */ public function newsRss(Request $request, Application $app) { $simplePie = new \SimplePie(); $simplePie->set_feed_url($app['resources']['news_rss']); $simplePie->init(); $items = $simplePie->get_items(); return $app['twig']->render('main/news-rss.twig', ['items' => $items]); }
/** * Fetches the specified number of feed items from the resource. * * This is a wrapper around \SimplePie::get_items(), except that it also * keys the array by each feed's unique identifier. This method can also be * used to warm the cache in parallel indexing configurations. * * @param int $limit * The maximum number of feeds to process, defaults to no limit which will * pull whatever the resource has published. * * @return array * An array of \SimplePie_Item objects keyed by the feed item's unique * identifier. */ public function fetchFeedItems($limit = CollectionAgentAbstract::NO_LIMIT) { $end = $limit != CollectionAgentAbstract::NO_LIMIT ? $limit : 0; // Get the array of feed items. $this->_feed->init(); $items = $this->_feed->get_items(0, $end); if (null === $items) { // @todo Log the error? $items = array(); } // Key the array by the feed's unique ID. foreach ($items as $key => $item) { $item_id = $item->get_id(); $items[$item_id] = $item; unset($items[$key]); } return $items; }
public function __construct($url) { $simplePie = new \SimplePie(); $simplePie->set_cache_location(getcwd() . '/cache'); $simplePie->set_feed_url($url); $simplePie->init(); $simplePie->handle_content_type(); $this->rawData = $simplePie; }
public function __construct($url) { $simplePie = new \SimplePie(); $simplePie->set_cache_location($_SERVER['DOCUMENT_ROOT'] . '/zowcast/rest/cache'); $simplePie->set_feed_url($url); $simplePie->init(); $simplePie->handle_content_type(); $this->rawData = $simplePie; }
private function loadFromWebService() { $feed = new \SimplePie(); $feed->set_feed_url($this->endPoint); $feed->set_cache_location(THELIA_ROOT . 'cache/feeds'); $feed->init(); $feed->handle_content_type(); $feed->set_timeout(10); $this->data = $feed->get_items(); }
public function setUp() { parent::setUp(); $rss_sample = file_get_contents(dirname(__FILE__) . '/test-assets/rss'); $sampleFeed = new SimplePie(); $sampleFeed->set_raw_data($rss_sample); $sampleFeed->init(); self::$sampleFeed = $sampleFeed; $this->testFeedUrl = 'http://www.theguardian.com/world/rss'; }
private function get_feed($feed_url) { $feed = new SimplePie(); $feed->set_feed_url($feed_url); $feed->enable_order_by_date(true); $feed->set_item_limit(3); $feed->init(); $feed->handle_content_type(); return $feed; }
public function __construct(array $feedUrls) { require_once __DIR__ . '/../autoloader.php'; $feed = new \SimplePie(); $feed->set_cache_location(__DIR__ . '/cache'); $feed->set_feed_url($feedUrls); $feed->init(); $feed->handle_content_type(); $this->feed = $feed; }
public function getNews() { $feed = new SimplePie(); $feed->set_feed_url('http://feeds.rapidfeeds.com/54082/'); $success = $feed->init(); if (!$success) { throw new Exception('couldnt init blog feed'); } return $feed->get_items(); }