/libraries/joomla/document/feed/feed.php
https://github.com/MaBelleEcole/Main · PHP · 502 lines · 85 code · 53 blank · 364 comment · 1 complexity · 7e821e14939646040ba10a1679047687 MD5 · raw file
- <?php
- /**
- * @version $Id: feed.php 14401 2010-01-26 14:10:00Z louis $
- * @package Joomla.Framework
- * @subpackage Document
- * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
- * @license GNU/GPL, see LICENSE.php
- * Joomla! is free software. This version may have been modified pursuant
- * to the GNU General Public License, and as distributed it includes or
- * is derivative of works licensed under the GNU General Public License or
- * other free or open source software licenses.
- * See COPYRIGHT.php for copyright notices and details.
- */
- // Check to ensure this file is within the rest of the framework
- defined('JPATH_BASE') or die();
- /**
- * DocumentFeed class, provides an easy interface to parse and display any feed document
- *
- * @package Joomla.Framework
- * @subpackage Document
- * @since 1.5
- */
- class JDocumentFeed extends JDocument
- {
- /**
- * Syndication URL feed element
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $syndicationURL = "";
- /**
- * Image feed element
- *
- * optional
- *
- * @var object
- * @access public
- */
- var $image = null;
- /**
- * Copyright feed elememnt
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $copyright = "";
- /**
- * Published date feed element
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $pubDate = "";
- /**
- * Lastbuild date feed element
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $lastBuildDate = "";
- /**
- * Editor feed element
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $editor = "";
- /**
- * Docs feed element
- *
- * @var string
- * @access public
- */
- var $docs = "";
- /**
- * Editor email feed element
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $editorEmail = "";
- /**
- * Webmaster email feed element
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $webmaster = "";
- /**
- * Category feed element
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $category = "";
- /**
- * TTL feed attribute
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $ttl = "";
- /**
- * Rating feed element
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $rating = "";
- /**
- * Skiphours feed element
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $skipHours = "";
- /**
- * Skipdays feed element
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $skipDays = "";
- /**
- * The feed items collection
- *
- * @var array
- * @access public
- */
- var $items = array();
- /**
- * Class constructor
- *
- * @access protected
- * @param array $options Associative array of options
- */
- function __construct($options = array())
- {
- parent::__construct($options);
- //set document type
- $this->_type = 'feed';
- }
- /**
- * Render the document
- *
- * @access public
- * @param boolean $cache If true, cache the output
- * @param array $params Associative array of attributes
- * @return The rendered data
- */
- function render( $cache = false, $params = array())
- {
- global $option;
- // Get the feed type
- $type = JRequest::getCmd('type', 'rss');
- /*
- * Cache TODO In later release
- */
- $cache = 0;
- $cache_time = 3600;
- $cache_path = JPATH_BASE.DS.'cache';
- // set filename for rss feeds
- $file = strtolower( str_replace( '.', '', $type ) );
- $file = $cache_path.DS.$file.'_'.$option.'.xml';
- // Instantiate feed renderer and set the mime encoding
- $renderer =& $this->loadRenderer(($type) ? $type : 'rss');
- if (!is_a($renderer, 'JDocumentRenderer')) {
- JError::raiseError(404, JText::_('Resource Not Found'));
- }
- $this->setMimeEncoding($renderer->getContentType());
- //output
- // Generate prolog
- $data = "<?xml version=\"1.0\" encoding=\"".$this->_charset."\"?>\n";
- $data .= "<!-- generator=\"".$this->getGenerator()."\" -->\n";
- // Generate stylesheet links
- foreach ($this->_styleSheets as $src => $attr ) {
- $data .= "<?xml-stylesheet href=\"$src\" type=\"".$attr['mime']."\"?>\n";
- }
- // Render the feed
- $data .= $renderer->render();
- parent::render();
- return $data;
- }
- /**
- * Adds an JFeedItem to the feed.
- *
- * @param object JFeedItem $item The feeditem to add to the feed.
- * @access public
- */
- function addItem( &$item )
- {
- $item->source = $this->link;
- $this->items[] = $item;
- }
- }
- /**
- * JFeedItem is an internal class that stores feed item information
- *
- * @package Joomla.Framework
- * @subpackage Document
- * @since 1.5
- */
- class JFeedItem extends JObject
- {
- /**
- * Title item element
- *
- * required
- *
- * @var string
- * @access public
- */
- var $title;
- /**
- * Link item element
- *
- * required
- *
- * @var string
- * @access public
- */
- var $link;
- /**
- * Description item element
- *
- * required
- *
- * @var string
- * @access public
- */
- var $description;
- /**
- * Author item element
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $author;
- /**
- * Author email element
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $authorEmail;
- /**
- * Category element
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $category;
- /**
- * Comments element
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $comments;
- /**
- * Enclosure element
- *
- * @var object
- * @access public
- */
- var $enclosure = null;
- /**
- * Guid element
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $guid;
- /**
- * Published date
- *
- * optional
- *
- * May be in one of the following formats:
- *
- * RFC 822:
- * "Mon, 20 Jan 03 18:05:41 +0400"
- * "20 Jan 03 18:05:41 +0000"
- *
- * ISO 8601:
- * "2003-01-20T18:05:41+04:00"
- *
- * Unix:
- * 1043082341
- *
- * @var string
- * @access public
- */
- var $pubDate;
- /**
- * Source element
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $source;
- /**
- * Set the JFeedEnclosure for this item
- *
- * @access public
- * @param object $enclosure The JFeedItem to add to the feed.
- */
- function setEnclosure($enclosure) {
- $this->enclosure = $enclosure;
- }
- }
- /**
- * JFeedEnclosure is an internal class that stores feed enclosure information
- *
- * @package Joomla.Framework
- * @subpackage Document
- * @since 1.5
- */
- class JFeedEnclosure extends JObject
- {
- /**
- * URL enclosure element
- *
- * required
- *
- * @var string
- * @access public
- */
- var $url = "";
- /**
- * Lenght enclosure element
- *
- * required
- *
- * @var string
- * @access public
- */
- var $length = "";
- /**
- * Type enclosure element
- *
- * required
- *
- * @var string
- * @access public
- */
- var $type = "";
- }
- /**
- * JFeedImage is an internal class that stores feed image information
- *
- * @package Joomla.Framework
- * @subpackage Document
- * @since 1.5
- */
- class JFeedImage extends JObject
- {
- /**
- * Title image attribute
- *
- * required
- *
- * @var string
- * @access public
- */
- var $title = "";
- /**
- * URL image attribute
- *
- * required
- *
- * @var string
- * @access public
- */
- var $url = "";
- /**
- * Link image attribute
- *
- * required
- *
- * @var string
- * @access public
- */
- var $link = "";
- /**
- * witdh image attribute
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $width;
- /**
- * Title feed attribute
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $height;
- /**
- * Title feed attribute
- *
- * optional
- *
- * @var string
- * @access public
- */
- var $description;
- }