Source for file rss.php
Documentation is available at rss.php
* @package Joomla.Platform
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
* JDocumentRenderer_RSS is a feed that implements RSS 2.0 Specification
* @package Joomla.Platform
* @see http://www.rssboard.org/rss-specification
protected $_mime =
"application/rss+xml";
* @param string $name The name of the element to render
* @param array $params Array of values
* @param string $content Override the output of the renderer
* @return string The output of the script
* @see JDocumentRenderer::render()
public function render($name =
'', $params =
null, $content =
null)
// Gets and sets timezone offset from site configuration
$tz =
new DateTimeZone($app->getCfg('offset'));
$url =
$uri->toString(array('scheme', 'user', 'pass', 'host', 'port'));
$syndicationURL =
JRoute::_('&format=feed&type=rss');
if ($app->getCfg('sitename_pagetitles', 0) ==
1)
$title =
JText::sprintf('JPAGETITLE', $app->getCfg('sitename'), $data->title);
elseif ($app->getCfg('sitename_pagetitles', 0) ==
2)
$title =
JText::sprintf('JPAGETITLE', $data->title, $app->getCfg('sitename'));
$feed =
"<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n";
$feed .=
" <title>" .
$feed_title .
"</title>\n";
$feed .=
" <description><![CDATA[" .
$data->description .
"]]></description>\n";
$feed .=
" <link>" .
str_replace(' ', '%20', $url .
$data->link) .
"</link>\n";
$feed .=
" <lastBuildDate>" .
htmlspecialchars($now->toRFC822(true), ENT_COMPAT, 'UTF-8') .
"</lastBuildDate>\n";
$feed .=
" <generator>" .
$data->getGenerator() .
"</generator>\n";
$feed .=
' <atom:link rel="self" type="application/rss+xml" href="' .
str_replace(' ', '%20', $url .
$syndicationURL) .
"\"/>\n";
if ($data->image !=
null)
$feed .=
" <url>" .
$data->image->url .
"</url>\n";
$feed .=
" <title>" .
htmlspecialchars($data->image->title, ENT_COMPAT, 'UTF-8') .
"</title>\n";
$feed .=
" <link>" .
str_replace(' ', '%20', $data->image->link) .
"</link>\n";
if ($data->image->width !=
"")
$feed .=
" <width>" .
$data->image->width .
"</width>\n";
if ($data->image->height !=
"")
$feed .=
" <height>" .
$data->image->height .
"</height>\n";
if ($data->image->description !=
"")
$feed .=
" <description><![CDATA[" .
$data->image->description .
"]]></description>\n";
if ($data->language !=
"")
$feed .=
" <language>" .
$data->language .
"</language>\n";
if ($data->copyright !=
"")
$feed .=
" <copyright>" .
htmlspecialchars($data->copyright, ENT_COMPAT, 'UTF-8') .
"</copyright>\n";
if ($data->editorEmail !=
"")
$feed .=
" <managingEditor>" .
htmlspecialchars($data->editorEmail, ENT_COMPAT, 'UTF-8') .
' ('
.
htmlspecialchars($data->editor, ENT_COMPAT, 'UTF-8') .
")</managingEditor>\n";
if ($data->webmaster !=
"")
$feed .=
" <webMaster>" .
htmlspecialchars($data->webmaster, ENT_COMPAT, 'UTF-8') .
"</webMaster>\n";
if ($data->pubDate !=
"")
$pubDate->setTimeZone($tz);
$feed .=
" <pubDate>" .
htmlspecialchars($pubDate->toRFC822(true), ENT_COMPAT, 'UTF-8') .
"</pubDate>\n";
if (empty($data->category) ===
false)
foreach ($data->category as $cat)
$feed .=
" <category>" .
htmlspecialchars($cat, ENT_COMPAT, 'UTF-8') .
"</category>\n";
$feed .=
" <category>" .
htmlspecialchars($data->category, ENT_COMPAT, 'UTF-8') .
"</category>\n";
$feed .=
" <docs>" .
htmlspecialchars($data->docs, ENT_COMPAT, 'UTF-8') .
"</docs>\n";
$feed .=
" <ttl>" .
htmlspecialchars($data->ttl, ENT_COMPAT, 'UTF-8') .
"</ttl>\n";
$feed .=
" <rating>" .
htmlspecialchars($data->rating, ENT_COMPAT, 'UTF-8') .
"</rating>\n";
if ($data->skipHours !=
"")
$feed .=
" <skipHours>" .
htmlspecialchars($data->skipHours, ENT_COMPAT, 'UTF-8') .
"</skipHours>\n";
if ($data->skipDays !=
"")
$feed .=
" <skipDays>" .
htmlspecialchars($data->skipDays, ENT_COMPAT, 'UTF-8') .
"</skipDays>\n";
for ($i =
0, $count =
count($data->items); $i <
$count; $i++
)
if ((strpos($data->items[$i]->link, 'http://') ===
false) &&
(strpos($data->items[$i]->link, 'https://') ===
false))
$data->items[$i]->link =
str_replace(' ', '%20', $url .
$data->items[$i]->link);
$feed .=
" <link>" .
str_replace(' ', '%20', $data->items[$i]->link) .
"</link>\n";
if (empty($data->items[$i]->guid) ===
true)
$feed .=
" <guid isPermaLink=\"true\">" .
str_replace(' ', '%20', $data->items[$i]->link) .
"</guid>\n";
$feed .=
" <guid isPermaLink=\"false\">" .
htmlspecialchars($data->items[$i]->guid, ENT_COMPAT, 'UTF-8') .
"</guid>\n";
$feed .=
" <description><![CDATA[" .
$this->_relToAbs($data->items[$i]->description) .
"]]></description>\n";
if ($data->items[$i]->authorEmail !=
"")
.
htmlspecialchars($data->items[$i]->authorEmail .
' (' .
$data->items[$i]->author .
')', ENT_COMPAT, 'UTF-8') .
"</author>\n";
* if ($data->items[$i]->source!="") {
* $data.= " <source>".htmlspecialchars($data->items[$i]->source, ENT_COMPAT, 'UTF-8')."</source>\n";
if (empty($data->items[$i]->category) ===
false)
if (is_array($data->items[$i]->category))
foreach ($data->items[$i]->category as $cat)
$feed .=
" <category>" .
htmlspecialchars($cat, ENT_COMPAT, 'UTF-8') .
"</category>\n";
$feed .=
" <category>" .
htmlspecialchars($data->items[$i]->category, ENT_COMPAT, 'UTF-8') .
"</category>\n";
if ($data->items[$i]->comments !=
"")
$feed .=
" <comments>" .
htmlspecialchars($data->items[$i]->comments, ENT_COMPAT, 'UTF-8') .
"</comments>\n";
if ($data->items[$i]->date !=
"")
$itemDate->setTimeZone($tz);
$feed .=
" <pubDate>" .
htmlspecialchars($itemDate->toRFC822(true), ENT_COMPAT, 'UTF-8') .
"</pubDate>\n";
if ($data->items[$i]->enclosure !=
null)
$feed .=
" <enclosure url=\"";
$feed .=
$data->items[$i]->enclosure->url;
$feed .=
$data->items[$i]->enclosure->length;
$feed .=
$data->items[$i]->enclosure->type;
$feed .=
" </channel>\n";
* Convert links in a text from relative to absolute
* @param string $text The text processed
* @return string Text with converted links
$text =
preg_replace("/(href|src)=\"(?!http|ftp|https|mailto|data)([^\"]*)\"/", "$1=\"$base\$2\"", $text);
Documentation generated on Tue, 19 Nov 2013 15:12:30 +0100 by phpDocumentor 1.4.3