[ Index ]

PHP Cross Reference of Joomla 1.5.26 DE

title

Body

[close]

/libraries/joomla/document/feed/renderer/ -> rss.php (source)

   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  }


Generated: Wed Mar 28 15:54:07 2012 Cross-referenced by PHPXref 0.7.1