git-svn-id: https://192.168.0.254/svn/Proyectos.FundacionLQDVI_WebCongresos/trunk@2 94ccb1af-fd9d-d947-8d90-7f70ea60afc8
502 lines
7.4 KiB
PHP
502 lines
7.4 KiB
PHP
<?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;
|
|
} |