summaryrefslogtreecommitdiff
path: root/kohana/helpers/feed.php
diff options
context:
space:
mode:
Diffstat (limited to 'kohana/helpers/feed.php')
-rw-r--r--kohana/helpers/feed.php122
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