function parse($caching = true) { $feed = new SimplePie(); $feed->feed_url($this->uri); $feed->cache_location(SIMPLEPIE_CACHE_DIR); $feed->enable_caching($caching); // parse $parse_result = @$feed->init(); if ($parse_result === false) { trigger_error("FeedParser::parse(): Failed to parse feed. uri: {$this->uri}", E_USER_NOTICE); return false; } $feed->handle_content_type(); $link = $feed->get_feed_link(); $channel = array('title' => $feed->get_feed_title(), 'link' => $link, 'uri' => $this->uri, 'last_modified' => SimplePie_Sanitize::parse_date($feed->data['last-modified']), 'description' => $feed->get_feed_description()); // url $url = new Net_URL($feed->get_feed_link()); $items = array(); $feed_items = @$feed->get_items(); if (is_array($feed_items)) { foreach ($feed_items as $item) { // category $categories = $item->get_category(); if ($categories != '') { $category = split(" ", $categories); $category = array_trim($category); } else { $category = ''; } // author $author = ''; if (is_array($authors = $item->get_authors())) { $men = array(); foreach ($item->get_authors() as $man) { $men[] = $man->get_name(); } $author = join(', ', $men); } // description $description = $item->get_description(); if (empty($description)) { $description = ''; } $items[] = array('title' => $item->get_title(), 'uri' => $item->get_permalink(), 'description' => $description, 'date' => $item->get_date('U'), 'author' => $author, 'category' => $category); } } $this->data = array('channel' => $channel, 'items' => $items); $this->parser =& $feed; unset($feed); return true; }
function kingRssOutput($data) { $feed = new SimplePie(); $feed->feed_url($data['rss_url']); $path = explode($_SERVER["SERVER_NAME"], get_bloginfo('wpurl')); $feed->cache_location($_SERVER['DOCUMENT_ROOT'] . $path[1] . "/wp-content/cache"); if (!empty($data['cache_time'])) { $feed->max_minutes = $data['cache_time']; } if (!empty($data['nosort'])) { $feed->order_by_date = false; } if (!empty($data['stripads'])) { $feed->strip_ads(1); } $feed->bypass_image_hotlink(); $feed->bypass_image_hotlink_page($path[1] . "/index.php"); #if images in feed are protected $success = $feed->init(); if ($success && $feed->data) { $output = ''; $replace_title_vars[0] = $feed->get_feed_link(); $replace_title_vars[1] = $feed->get_feed_title(); $replace_title_vars[2] = $feed->get_feed_description(); $replace_title_vars[3] = $data['rss_url']; $replace_title_vars[4] = get_settings('siteurl') . '/wp-content/plugins/king-framework/images/rss.png'; if ($feed->get_image_exist() == true) { $replace_title_vars[5] = $feed->get_image_url(); } $search_title_vars = array('%link%', '%title%', '%descr%', '%rssurl%', '%rssicon%', '%feedimg%'); #parse template placeholders $output .= str_replace($search_title_vars, $replace_title_vars, $data['titlehtml']); $max = $feed->get_item_quantity(); if (!empty($data['max_items'])) { $max = min($data['max_items'], $feed->get_item_quantity()); } for ($x = 0; $x < $max; $x++) { $item = $feed->get_item($x); $replace_vars[0] = stupifyEntities($item->get_title()); $replace_vars[1] = $item->get_permalink(); $replace_vars[2] = $item->get_date($data['showdate']); $replace_vars[3] = stupifyEntities($item->get_description()); if ($item->get_categories() != false) { $categories = $item->get_categories(); $replace_vars[4] = implode(" | ", $categories); } if ($item->get_author(0) != false) { $author = $item->get_author(0); $replace_vars[5] = $author->get_name(); } # cut article text to length ... do the butcher if (!empty($data['shortdesc'])) { $suffix = '...'; $short_desc = trim(str_replace("\n", ' ', str_replace("\r", ' ', strip_tags(stupifyEntities($item->get_description()))))); $desc = substr($short_desc, 0, $data['shortdesc']); $lastchar = substr($desc, -1, 1); if ($lastchar == '.' || $lastchar == '!' || $lastchar == '?') { $suffix = ''; } $desc .= $suffix; $replace_vars[3] = $desc; } $search_vars = array('%title%', '%link%', '%date%', '%text%', '%category%', '%author%'); #parse template placeholders $output .= str_replace($search_vars, $replace_vars, $data['rsshtml']); } } else { if (!empty($data['error'])) { $output = $data['error']; } else { if (isset($feed->error)) { $output = $feed->error; } } } return $output; }
function plan_read_sources_feed($url) { $url = str_replace("feed://", "http://", $url); if (!strstr($url, '://')) { $url = plan_get_real_location($url); } $feed = new SimplePie(); $feed->feed_url($url); $feed->output_encoding('utf-8'); $feed->init(); $feed->handle_content_type(); $title = $feed->get_feed_title(); $items = $feed->get_items(); foreach ($items as $item) { $timecode = $item->get_date(); $item_title = $item->get_title(); $item_description = $item->get_description(); if ($item_title == $item_description) { $item_title = ''; } if ($item_description != $last_description) { if ($last_timecode - $timecode > 300 || !$last_timecode) { $entries["{$timecode}"] = "<a href='/read/{$url}'>{$title}</a>: <h4>" . $item_title . "</h4>" . $item_description; $last_timecode = $timecode; } else { $entries["{$last_timecode}"] .= "<br />\n" . $item_description; } } $last_description = $item_description; } return $entries; }