diff options
Diffstat (limited to 'kohana/helpers/feed.php')
| -rw-r--r-- | kohana/helpers/feed.php | 122 | 
1 files changed, 0 insertions, 122 deletions
| diff --git a/kohana/helpers/feed.php b/kohana/helpers/feed.php deleted file mode 100644 index 74bb2f6b..00000000 --- a/kohana/helpers/feed.php +++ /dev/null @@ -1,122 +0,0 @@ -<?php defined('SYSPATH') OR die('No direct access allowed.'); -/** - * Feed helper class. - * - * $Id: feed.php 4152 2009-04-03 23:26:23Z ixmatus $ - * - * @package    Core - * @author     Kohana Team - * @copyright  (c) 2007-2008 Kohana Team - * @license    http://kohanaphp.com/license.html - */ -class feed_Core { - -	/** -	 * Parses a remote feed into an array. -	 * -	 * @param   string   remote feed URL -	 * @param   integer  item limit to fetch -	 * @return  array -	 */ -	public static function parse($feed, $limit = 0) -	{ -		// Check if SimpleXML is installed -		if( ! function_exists('simplexml_load_file')) -			throw new Kohana_User_Exception('Feed Error', 'SimpleXML must be installed!'); -		 -		// Make limit an integer -		$limit = (int) $limit; - -		// Disable error reporting while opening the feed -		$ER = error_reporting(0); - -		// Allow loading by filename or raw XML string -		$load = (is_file($feed) OR valid::url($feed)) ? 'simplexml_load_file' : 'simplexml_load_string'; - -		// Load the feed -		$feed = $load($feed, 'SimpleXMLElement', LIBXML_NOCDATA); - -		// Restore error reporting -		error_reporting($ER); - -		// Feed could not be loaded -		if ($feed === FALSE) -			return array(); - -		// Detect the feed type. RSS 1.0/2.0 and Atom 1.0 are supported. -		$feed = isset($feed->channel) ? $feed->xpath('//item') : $feed->entry; - -		$i = 0; -		$items = array(); - -		foreach ($feed as $item) -		{ -			if ($limit > 0 AND $i++ === $limit) -				break; - -			$items[] = (array) $item; -		} - -		return $items; -	} - -	/** -	 * Creates a feed from the given parameters. -	 * -	 * @param   array   feed information -	 * @param   array   items to add to the feed -	 * @param   string  define which format to use -	 * @param   string  define which encoding to use -	 * @return  string -	 */ -	public static function create($info, $items, $format = 'rss2', $encoding = 'UTF-8') -	{ -		$info += array('title' => 'Generated Feed', 'link' => '', 'generator' => 'KohanaPHP'); - -		$feed = '<?xml version="1.0" encoding="'.$encoding.'"?><rss version="2.0"><channel></channel></rss>'; -		$feed = simplexml_load_string($feed); - -		foreach ($info as $name => $value) -		{ -			if (($name === 'pubDate' OR $name === 'lastBuildDate') AND (is_int($value) OR ctype_digit($value))) -			{ -				// Convert timestamps to RFC 822 formatted dates -				$value = date(DATE_RFC822, $value); -			} -			elseif (($name === 'link' OR $name === 'docs') AND strpos($value, '://') === FALSE) -			{ -				// Convert URIs to URLs -				$value = url::site($value, 'http'); -			} - -			// Add the info to the channel -			$feed->channel->addChild($name, $value); -		} - -		foreach ($items as $item) -		{ -			// Add the item to the channel -			$row = $feed->channel->addChild('item'); - -			foreach ($item as $name => $value) -			{ -				if ($name === 'pubDate' AND (is_int($value) OR ctype_digit($value))) -				{ -					// Convert timestamps to RFC 822 formatted dates -					$value = date(DATE_RFC822, $value); -				} -				elseif (($name === 'link' OR $name === 'guid') AND strpos($value, '://') === FALSE) -				{ -					// Convert URIs to URLs -					$value = url::site($value, 'http'); -				} - -				// Add the info to the row -				$row->addChild($name, $value); -			} -		} - -		return $feed->asXML(); -	} - -} // End feed
\ No newline at end of file | 
