git-svn-id: https://192.168.0.254/svn/Proyectos.FundacionLQDVI_WebCongresos/trunk@2 94ccb1af-fd9d-d947-8d90-7f70ea60afc8
123 lines
4.5 KiB
PHP
123 lines
4.5 KiB
PHP
<?php
|
|
/**
|
|
* @version $Id: atom.php 15105 2010-02-27 14:59:11Z ian $
|
|
* @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();
|
|
|
|
|
|
|
|
/**
|
|
* JDocumentRenderer_Atom is a feed that implements the atom specification
|
|
*
|
|
* Please note that just by using this class you won't automatically
|
|
* produce valid atom files. For example, you have to specify either an editor
|
|
* for the feed or an author for every single feed item.
|
|
*
|
|
* @package Joomla.Framework
|
|
* @subpackage Document
|
|
* @see http://www.atomenabled.org/developers/syndication/atom-format-spec.php
|
|
* @since 1.5
|
|
*/
|
|
|
|
class JDocumentRendererAtom extends JDocumentRenderer
|
|
{
|
|
/**
|
|
* Document mime type
|
|
*
|
|
* @var string
|
|
* @access private
|
|
*/
|
|
var $_mime = "application/atom+xml";
|
|
|
|
/**
|
|
* Render the feed
|
|
*
|
|
* @access public
|
|
* @return string
|
|
*/
|
|
function render()
|
|
{
|
|
$now =& JFactory::getDate();
|
|
$data =& $this->_doc;
|
|
|
|
$uri =& JFactory::getURI();
|
|
$url = $uri->toString(array('scheme', 'user', 'pass', 'host', 'port'));
|
|
$syndicationURL =& JRoute::_('&format=feed&type=atom');
|
|
|
|
$feed = "<feed xmlns=\"http://www.w3.org/2005/Atom\" ";
|
|
if ($data->language!="") {
|
|
$feed.= " xml:lang=\"".$data->language."\"";
|
|
}
|
|
$feed.= ">\n";
|
|
$feed.= " <title type=\"text\">".htmlspecialchars($data->title, ENT_COMPAT, 'UTF-8')."</title>\n";
|
|
$feed.= " <subtitle type=\"text\">".htmlspecialchars($data->description, ENT_COMPAT, 'UTF-8')."</subtitle>\n";
|
|
$feed.= " <link rel=\"alternate\" type=\"text/html\" href=\"".$url."\"/>\n";
|
|
$feed.= " <id>".str_replace(' ','%20',$data->getBase())."</id>\n";
|
|
$feed.= " <updated>".htmlspecialchars($now->toISO8601(), ENT_COMPAT, 'UTF-8')."</updated>\n";
|
|
if ($data->editor!="") {
|
|
$feed.= " <author>\n";
|
|
$feed.= " <name>".$data->editor."</name>\n";
|
|
if ($data->editorEmail!="") {
|
|
$feed.= " <email>".htmlspecialchars($data->editorEmail, ENT_COMPAT, 'UTF-8')."</email>\n";
|
|
}
|
|
$feed.= " </author>\n";
|
|
}
|
|
$feed.= " <generator uri=\"http://joomla.org\" version=\"1.5\">".$data->getGenerator()."</generator>\n";
|
|
$feed.= '<link rel="self" type="application/atom+xml" href="'.str_replace(' ','%20',$url.$syndicationURL). "\" />\n";
|
|
|
|
for ($i=0;$i<count($data->items);$i++)
|
|
{
|
|
$feed.= " <entry>\n";
|
|
$feed.= " <title>".htmlspecialchars(strip_tags($data->items[$i]->title), ENT_COMPAT, 'UTF-8')."</title>\n";
|
|
$feed.= ' <link rel="alternate" type="text/html" href="'.$url.$data->items[$i]->link."\"/>\n";
|
|
|
|
if ($data->items[$i]->date=="") {
|
|
$data->items[$i]->date = $now->toUnix();
|
|
}
|
|
$itemDate =& JFactory::getDate($data->items[$i]->date);
|
|
$feed.= " <published>".htmlspecialchars($itemDate->toISO8601(), ENT_COMPAT, 'UTF-8')."</published>\n";
|
|
$feed.= " <updated>".htmlspecialchars($itemDate->toISO8601(),ENT_COMPAT, 'UTF-8')."</updated>\n";
|
|
$feed.= " <id>".str_replace(' ', '%20', $url.$data->items[$i]->link)."</id>\n";
|
|
|
|
if ($data->items[$i]->author!="")
|
|
{
|
|
$feed.= " <author>\n";
|
|
$feed.= " <name>".htmlspecialchars($data->items[$i]->author, ENT_COMPAT, 'UTF-8')."</name>\n";
|
|
if ($data->items[$i]->authorEmail!="") {
|
|
$feed.= " <email>".htmlspecialchars($data->items[$i]->authorEmail, ENT_COMPAT, 'UTF-8')."</email>\n";
|
|
}
|
|
$feed.= " </author>\n";
|
|
}
|
|
if ($data->items[$i]->description!="") {
|
|
$feed.= " <summary type=\"html\">".htmlspecialchars($this->_relToAbs($data->items[$i]->description))."</summary>\n";
|
|
$feed.= " <content type=\"html\">".htmlspecialchars($this->_relToAbs($data->items[$i]->description))."</content>\n";
|
|
}
|
|
if ($data->items[$i]->enclosure != NULL) {
|
|
$feed.=" <link rel=\"enclosure\" href=\"". $data->items[$i]->enclosure->url ."\" type=\"". $data->items[$i]->enclosure->type."\" length=\"". $data->items[$i]->enclosure->length . "\" />\n";
|
|
}
|
|
$feed.= " </entry>\n";
|
|
}
|
|
$feed.= "</feed>\n";
|
|
return $feed;
|
|
}
|
|
|
|
function _relToAbs($text)
|
|
{
|
|
$base = JURI::base();
|
|
$text = preg_replace("/(href|src)=\"(?!http|ftp|https|mailto)([^\"]*)\"/", "$1=\"$base\$2\"", $text);
|
|
|
|
return $text;
|
|
}
|
|
}
|