| [ Index ] |
PHP Cross Reference of Joomla 1.5.26 DE |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * @version $Id: rss.php 14401 2010-01-26 14:10:00Z louis $ 4 * @package Joomla.Framework 5 * @subpackage Document 6 * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved. 7 * @license GNU/GPL, see LICENSE.php 8 * Joomla! is free software. This version may have been modified pursuant 9 * to the GNU General Public License, and as distributed it includes or 10 * is derivative of works licensed under the GNU General Public License or 11 * other free or open source software licenses. 12 * See COPYRIGHT.php for copyright notices and details. 13 */ 14 15 // Check to ensure this file is within the rest of the framework 16 defined('JPATH_BASE') or die(); 17 18 19 /** 20 * JDocumentRenderer_RSS is a feed that implements RSS 2.0 Specification 21 * 22 * @author Johan Janssens <johan.janssens@joomla.org> 23 * 24 * @package Joomla.Framework 25 * @subpackage Document 26 * @see http://www.rssboard.org/rss-specification 27 * @since 1.5 28 */ 29 30 class JDocumentRendererRSS extends JDocumentRenderer 31 { 32 /** 33 * Renderer mime type 34 * 35 * @var string 36 * @access private 37 */ 38 var $_mime = "application/rss+xml"; 39 40 /** 41 * Render the feed 42 * 43 * @access public 44 * @return string 45 */ 46 function render() 47 { 48 $now =& JFactory::getDate(); 49 $data =& $this->_doc; 50 51 $uri =& JFactory::getURI(); 52 $url = $uri->toString(array('scheme', 'user', 'pass', 'host', 'port')); 53 $syndicationURL =& JRoute::_('&format=feed&type=rss'); 54 55 $feed = "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n"; 56 $feed.= " <channel>\n"; 57 $feed.= " <title>".$data->title."</title>\n"; 58 $feed.= " <description>".htmlspecialchars($data->description)."</description>\n"; 59 $feed.= " <link>".str_replace(' ','%20',$url.$data->link)."</link>\n"; 60 $feed.= " <lastBuildDate>".htmlspecialchars($now->toRFC822(), ENT_COMPAT, 'UTF-8')."</lastBuildDate>\n"; 61 $feed.= " <generator>".$data->getGenerator()."</generator>\n"; 62 63 if ($data->image!=null) 64 { 65 $feed.= " <image>\n"; 66 $feed.= " <url>".$data->image->url."</url>\n"; 67 $feed.= " <title>".htmlspecialchars($data->image->title, ENT_COMPAT, 'UTF-8')."</title>\n"; 68 $feed.= " <link>".str_replace(' ','%20',$data->image->link)."</link>\n"; 69 if ($data->image->width != "") { 70 $feed.= " <width>".$data->image->width."</width>\n"; 71 } 72 if ($data->image->height!="") { 73 $feed.= " <height>".$data->image->height."</height>\n"; 74 } 75 if ($data->image->description!="") { 76 $feed.= " <description><![CDATA[".$data->image->description."]]></description>\n"; 77 } 78 $feed.= " </image>\n"; 79 } 80 if ($data->language!="") { 81 $feed.= " <language>".$data->language."</language>\n"; 82 } 83 if ($data->copyright!="") { 84 $feed.= " <copyright>".htmlspecialchars($data->copyright,ENT_COMPAT, 'UTF-8')."</copyright>\n"; 85 } 86 if ($data->editorEmail!="") { 87 $feed.= " <managingEditor>".htmlspecialchars($data->editorEmail, ENT_COMPAT, 'UTF-8').' ('. 88 htmlspecialchars($data->editor, ENT_COMPAT, 'UTF-8').")</managingEditor>\n"; 89 } 90 if ($data->webmaster!="") { 91 $feed.= " <webMaster>".htmlspecialchars($data->webmaster, ENT_COMPAT, 'UTF-8')."</webMaster>\n"; 92 } 93 if ($data->pubDate!="") { 94 $pubDate =& JFactory::getDate($data->pubDate); 95 $feed.= " <pubDate>".htmlspecialchars($pubDate->toRFC822(),ENT_COMPAT, 'UTF-8')."</pubDate>\n"; 96 } 97 if ($data->category!="") { 98 $feed.= " <category>".htmlspecialchars($data->category, ENT_COMPAT, 'UTF-8')."</category>\n"; 99 } 100 if ($data->docs!="") { 101 $feed.= " <docs>".htmlspecialchars($data->docs, ENT_COMPAT, 'UTF-8')."</docs>\n"; 102 } 103 if ($data->ttl!="") { 104 $feed.= " <ttl>".htmlspecialchars($data->ttl, ENT_COMPAT, 'UTF-8')."</ttl>\n"; 105 } 106 if ($data->rating!="") { 107 $feed.= " <rating>".htmlspecialchars($data->rating, ENT_COMPAT, 'UTF-8')."</rating>\n"; 108 } 109 if ($data->skipHours!="") { 110 $feed.= " <skipHours>".htmlspecialchars($data->skipHours, ENT_COMPAT, 'UTF-8')."</skipHours>\n"; 111 } 112 if ($data->skipDays!="") { 113 $feed.= " <skipDays>".htmlspecialchars($data->skipDays, ENT_COMPAT, 'UTF-8')."</skipDays>\n"; 114 } 115 116 for ($i=0; $i<count($data->items); $i++) 117 { 118 if ((strpos($data->items[$i]->link, 'http://') === false) and (strpos($data->items[$i]->link, 'https://') === false)) { 119 $data->items[$i]->link = str_replace(' ','%20',$url.$data->items[$i]->link); 120 } 121 $feed.= " <item>\n"; 122 $feed.= " <title>".htmlspecialchars(strip_tags($data->items[$i]->title), ENT_COMPAT, 'UTF-8')."</title>\n"; 123 $feed.= " <link>".str_replace(' ','%20',$data->items[$i]->link)."</link>\n"; 124 $feed.= " <guid>".str_replace(' ','%20',$data->items[$i]->link)."</guid>\n"; 125 $feed.= " <description><![CDATA[".$this->_relToAbs($data->items[$i]->description)."]]></description>\n"; 126 127 if ($data->items[$i]->authorEmail!="") { 128 $feed.= " <author>".htmlspecialchars($data->items[$i]->authorEmail . ' (' . 129 $data->items[$i]->author . ')', ENT_COMPAT, 'UTF-8')."</author>\n"; 130 } 131 /* 132 // on hold 133 if ($data->items[$i]->source!="") { 134 $data.= " <source>".htmlspecialchars($data->items[$i]->source, ENT_COMPAT, 'UTF-8')."</source>\n"; 135 } 136 */ 137 if ($data->items[$i]->category!="") { 138 $feed.= " <category>".htmlspecialchars($data->items[$i]->category, ENT_COMPAT, 'UTF-8')."</category>\n"; 139 } 140 if ($data->items[$i]->comments!="") { 141 $feed.= " <comments>".htmlspecialchars($data->items[$i]->comments, ENT_COMPAT, 'UTF-8')."</comments>\n"; 142 } 143 if ($data->items[$i]->date!="") { 144 $itemDate =& JFactory::getDate($data->items[$i]->date); 145 $feed.= " <pubDate>".htmlspecialchars($itemDate->toRFC822(), ENT_COMPAT, 'UTF-8')."</pubDate>\n"; 146 } 147 if ($data->items[$i]->guid!="") { 148 $feed.= " <guid>".htmlspecialchars($data->items[$i]->guid, ENT_COMPAT, 'UTF-8')."</guid>\n"; 149 } 150 if ($data->items[$i]->enclosure != NULL) 151 { 152 $feed.= " <enclosure url=\""; 153 $feed.= $data->items[$i]->enclosure->url; 154 $feed.= "\" length=\""; 155 $feed.= $data->items[$i]->enclosure->length; 156 $feed.= "\" type=\""; 157 $feed.= $data->items[$i]->enclosure->type; 158 $feed.= "\"/>\n"; 159 } 160 161 $feed.= " </item>\n"; 162 } 163 $feed.= " </channel>\n"; 164 $feed.= "</rss>\n"; 165 return $feed; 166 } 167 168 /** 169 * Convert links in a text from relative to absolute 170 * 171 * @access public 172 * @return string 173 */ 174 function _relToAbs($text) 175 { 176 $base = JURI::base(); 177 $text = preg_replace("/(href|src)=\"(?!http|ftp|https|mailto)([^\"]*)\"/", "$1=\"$base\$2\"", $text); 178 179 return $text; 180 } 181 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Wed Mar 28 15:54:07 2012 | Cross-referenced by PHPXref 0.7.1 |