Source for file atom.php

Documentation is available at atom.php

  1. <?php
  2. /**
  3.  * @package     Joomla.Platform
  4.  * @subpackage  Document
  5.  *
  6.  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
  7.  * @license     GNU General Public License version 2 or later; see LICENSE
  8.  */
  9.  
  10. defined('JPATH_PLATFORM'or die;
  11.  
  12. /**
  13.  * JDocumentRenderer_Atom is a feed that implements the atom specification
  14.  *
  15.  * Please note that just by using this class you won't automatically
  16.  * produce valid atom files. For example, you have to specify either an editor
  17.  * for the feed or an author for every single feed item.
  18.  *
  19.  * @package     Joomla.Platform
  20.  * @subpackage  Document
  21.  * @see         http://www.atomenabled.org/developers/syndication/atom-format-spec.php
  22.  * @since       11.1
  23.  */
  24. {
  25.     /**
  26.      * Document mime type
  27.      *
  28.      * @var    string 
  29.      * @since  11.1
  30.      */
  31.     protected $_mime = "application/atom+xml";
  32.  
  33.     /**
  34.      * Render the feed.
  35.      *
  36.      * @param   string  $name     The name of the element to render
  37.      * @param   array   $params   Array of values
  38.      * @param   string  $content  Override the output of the renderer
  39.      *
  40.      * @return  string  The output of the script
  41.      *
  42.      * @see JDocumentRenderer::render()
  43.      * @since   11.1
  44.      */
  45.     public function render($name ''$params null$content null)
  46.     {
  47.         $app JFactory::getApplication();
  48.  
  49.         // Gets and sets timezone offset from site configuration
  50.         $tz new DateTimeZone($app->getCfg('offset'));
  51.         $now JFactory::getDate();
  52.         $now->setTimeZone($tz);
  53.  
  54.         $data $this->_doc;
  55.  
  56.         $uri JUri::getInstance();
  57.         $url $uri->toString(array('scheme''user''pass''host''port'));
  58.         $syndicationURL JRoute::_('&format=feed&type=atom');
  59.  
  60.         if ($app->getCfg('sitename_pagetitles'0== 1)
  61.         {
  62.             $title JText::sprintf('JPAGETITLE'$app->getCfg('sitename')$data->title);
  63.         }
  64.         elseif ($app->getCfg('sitename_pagetitles'0== 2)
  65.         {
  66.             $title JText::sprintf('JPAGETITLE'$data->title$app->getCfg('sitename'));
  67.         }
  68.         else
  69.         {
  70.             $title $data->title;
  71.         }
  72.  
  73.         $feed_title htmlspecialchars($titleENT_COMPAT'UTF-8');
  74.  
  75.         $feed "<feed xmlns=\"http://www.w3.org/2005/Atom\" ";
  76.         if ($data->language != "")
  77.         {
  78.             $feed .= " xml:lang=\"" $data->language "\"";
  79.         }
  80.         $feed .= ">\n";
  81.         $feed .= "    <title type=\"text\">" $feed_title "</title>\n";
  82.         $feed .= "    <subtitle type=\"text\">" htmlspecialchars($data->descriptionENT_COMPAT'UTF-8'"</subtitle>\n";
  83.         if (empty($data->category=== false)
  84.         {
  85.             if (is_array($data->category))
  86.             {
  87.                 foreach ($data->category as $cat)
  88.                 {
  89.                     $feed .= "    <category term=\"" htmlspecialchars($catENT_COMPAT'UTF-8'"\" />\n";
  90.                 }
  91.             }
  92.             else
  93.             {
  94.                 $feed .= "    <category term=\"" htmlspecialchars($data->categoryENT_COMPAT'UTF-8'"\" />\n";
  95.             }
  96.         }
  97.         $feed .= "    <link rel=\"alternate\" type=\"text/html\" href=\"" $url "\"/>\n";
  98.         $feed .= "    <id>" str_replace(' ''%20'$data->getBase()) "</id>\n";
  99.         $feed .= "    <updated>" htmlspecialchars($now->toISO8601(true)ENT_COMPAT'UTF-8'"</updated>\n";
  100.         if ($data->editor != "")
  101.         {
  102.             $feed .= "    <author>\n";
  103.             $feed .= "        <name>" $data->editor "</name>\n";
  104.             if ($data->editorEmail != "")
  105.             {
  106.                 $feed .= "        <email>" htmlspecialchars($data->editorEmailENT_COMPAT'UTF-8'"</email>\n";
  107.             }
  108.             $feed .= "    </author>\n";
  109.         }
  110.         $feed .= "    <generator uri=\"http://joomla.org\" version=\"1.6\">" $data->getGenerator("</generator>\n";
  111.         $feed .= '    <link rel="self" type="application/atom+xml" href="' str_replace(' ''%20'$url $syndicationURL"\"/>\n";
  112.  
  113.         for ($i 0$count count($data->items)$i $count$i++)
  114.         {
  115.             $feed .= "    <entry>\n";
  116.             $feed .= "        <title>" htmlspecialchars(strip_tags($data->items[$i]->title)ENT_COMPAT'UTF-8'"</title>\n";
  117.             $feed .= '        <link rel="alternate" type="text/html" href="' $url $data->items[$i]->link "\"/>\n";
  118.  
  119.             if ($data->items[$i]->date == "")
  120.             {
  121.                 $data->items[$i]->date $now->toUnix();
  122.             }
  123.             $itemDate JFactory::getDate($data->items[$i]->date);
  124.             $itemDate->setTimeZone($tz);
  125.             $feed .= "        <published>" htmlspecialchars($itemDate->toISO8601(true)ENT_COMPAT'UTF-8'"</published>\n";
  126.             $feed .= "        <updated>" htmlspecialchars($itemDate->toISO8601(true)ENT_COMPAT'UTF-8'"</updated>\n";
  127.             if (empty($data->items[$i]->guid=== true)
  128.             {
  129.                 $feed .= "        <id>" str_replace(' ''%20'$url $data->items[$i]->link"</id>\n";
  130.             }
  131.             else
  132.             {
  133.                 $feed .= "        <id>" htmlspecialchars($data->items[$i]->guidENT_COMPAT'UTF-8'"</id>\n";
  134.             }
  135.  
  136.             if ($data->items[$i]->author != "")
  137.             {
  138.                 $feed .= "        <author>\n";
  139.                 $feed .= "            <name>" htmlspecialchars($data->items[$i]->authorENT_COMPAT'UTF-8'"</name>\n";
  140.                 if ($data->items[$i]->authorEmail != "")
  141.                 {
  142.                     $feed .= "            <email>" htmlspecialchars($data->items[$i]->authorEmailENT_COMPAT'UTF-8'"</email>\n";
  143.                 }
  144.                 $feed .= "        </author>\n";
  145.             }
  146.             if ($data->items[$i]->description != "")
  147.             {
  148.                 $feed .= "        <summary type=\"html\">" htmlspecialchars($data->items[$i]->descriptionENT_COMPAT'UTF-8'"</summary>\n";
  149.                 $feed .= "        <content type=\"html\">" htmlspecialchars($data->items[$i]->descriptionENT_COMPAT'UTF-8'"</content>\n";
  150.             }
  151.             if (empty($data->items[$i]->category=== false)
  152.             {
  153.                 if (is_array($data->items[$i]->category))
  154.                 {
  155.                     foreach ($data->items[$i]->category as $cat)
  156.                     {
  157.                         $feed .= "        <category term=\"" htmlspecialchars($catENT_COMPAT'UTF-8'"\" />\n";
  158.                     }
  159.                 }
  160.                 else
  161.                 {
  162.                     $feed .= "        <category term=\"" htmlspecialchars($data->items[$i]->categoryENT_COMPAT'UTF-8'"\" />\n";
  163.                 }
  164.             }
  165.             if ($data->items[$i]->enclosure != null)
  166.             {
  167.                 $feed .= "        <link rel=\"enclosure\" href=\"" $data->items[$i]->enclosure->url "\" type=\""
  168.                     . $data->items[$i]->enclosure->type "\"  length=\"" $data->items[$i]->enclosure->length "\" />\n";
  169.             }
  170.             $feed .= "    </entry>\n";
  171.         }
  172.         $feed .= "</feed>\n";
  173.         return $feed;
  174.     }
  175. }

Documentation generated on Tue, 19 Nov 2013 14:54:09 +0100 by phpDocumentor 1.4.3