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 callbackAddRssFeeds($hookName, $args) { if ($this->getEnabled()) { $current = $args[0]; $output =& $args[1]; $journal =& Request::getJournal(); $journalId = $journal->getJournalId(); $templateMgr =& TemplateManager::getManager(); $this->import('SimplePie'); $urls = $this->getSetting($journalId, 'urls'); $months = $this->getSetting($journalId, 'months'); $aggregate = $this->getSetting($journalId, 'aggregate'); $feeds = array(); foreach ($urls as $feedInfo) { $webSafe = array(); foreach (explode(":", $feedInfo['pageName']) as $pageName) { $webSafe[] = ContentManager::websafe($pageName); } $webSafe = implode(":", $webSafe); // skip all the ones that wont go on this page if (strcmp($webSafe, $current) != 0) { continue; } $feed = new SimplePie(); $feed->feed_url($feedInfo['url']); $feed->cache_location(Core::getBaseDir() . DIRECTORY_SEPARATOR . 'cache'); $feed->replace_headers(true); $feed->init(); if ($feed->data) { $max = $feed->get_item_quantity(0); $templateMgr->assign('feed', $feed); for ($x = 0; $x < $max; $x++) { $item = $feed->get_item($x); $templateMgr->assign('item', $item); $items[$item->get_date('U')] = trim($templateMgr->fetch($this->getTemplatePath() . 'rss.tpl')); } } } if (is_array($items) && count($items) > 0) { if ($aggregate) { krsort($items); } foreach ($items as $time => $post) { if ($months > 0) { if ($time > strtotime("-" . $months . " month")) { $output .= $post; } } else { $output .= $post; } } } } return false; }