Source for file jResponseAtom10.class.php

Documentation is available at jResponseAtom10.class.php

  1. <?php
  2. /**
  3. @package     jelix
  4. @subpackage  core_response
  5. @author      Yannick Le Guédart
  6. @contributor Laurent Jouanneau
  7. @copyright   2006 Yannick Le Guédart
  8. @copyright   2006-2009 Laurent Jouanneau
  9. @link        http://www.jelix.org
  10. @licence     GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
  11. */
  12.  
  13. /**
  14. *
  15. */
  16. require_once(JELIX_LIB_PATH.'tpl/jTpl.class.php');
  17. require_once(JELIX_LIB_CORE_PATH.'response/jResponseXmlFeed.class.php');
  18.  
  19. /**
  20. * Atom 1.0 response
  21. *
  22. * Known limitations : only text in the title, and only name in categories
  23. @package  jelix
  24. @subpackage core_response
  25. @link http://tools.ietf.org/html/rfc4287
  26. @since 1.0b1
  27. */
  28. class jResponseAtom10 extends jResponseXMLFeed {
  29.  
  30.     protected $_type = 'atom1.0';
  31.  
  32.     /**
  33.      * Class constructor
  34.      *
  35.      * @return void 
  36.      */
  37.     function __construct (){
  38.         $this->_template     new jTpl();
  39.         $this->_mainTpl     'jelix~atom10';
  40.  
  41.         $this->infos = new jAtom10Info ();
  42.  
  43.         parent::__construct ();
  44.     }
  45.  
  46.     /**
  47.      * Generate the content and send it
  48.      * Errors are managed
  49.      * @return boolean true if generation is ok, else false
  50.      */
  51.     final public function output (){
  52.         $this->_headSent false;
  53.  
  54.         $this->_httpHeaders['Content-Type'=
  55.                 'application/atom+xml;charset=' $this->charset;
  56.  
  57.         $this->sendHttpHeaders ();
  58.  
  59.         echo '<?xml version="1.0" encoding="'$this->charset .'"?>'"\n";
  60.         $this->_outputXmlHeader ();
  61.  
  62.         $this->_headSent true;
  63.  
  64.         if(!$this->infos->updated){
  65.             $this->infos->updated date("Y-m-d H:i:s");
  66.         }
  67.  
  68.         // $this->_outputOptionals();
  69.  
  70.         $this->_template->assign ('atom'$this->infos);
  71.         $this->_template->assign ('items'$this->itemList);
  72.         $this->_template->assign ('lang',$this->lang);
  73.         $this->_template->display ($this->_mainTpl);
  74.  
  75.         if ($this->hasErrors ()) {
  76.             echo $this->getFormatedErrorMsg ();
  77.         }
  78.         echo '</feed>';
  79.         return true;
  80.     }
  81.  
  82.     final public function outputErrors({
  83.         if (!$this->_headSent{
  84.             if (!$this->_httpHeadersSent{
  85.                 header("HTTP/1.0 500 Internal Server Error");
  86.                 header('Content-Type: text/xml;charset='.$this->charset);
  87.             }
  88.             echo '<?xml version="1.0" encoding="'$this->charset .'"?>';
  89.         }
  90.  
  91.         echo '<errors xmlns="http://jelix.org/ns/xmlerror/1.0">';
  92.         if ($this->hasErrors()) {
  93.             echo $this->getFormatedErrorMsg();
  94.         else {
  95.             echo '<error>Unknown Error</error>';
  96.         }
  97.         echo '</errors>';
  98.     }
  99.  
  100.     /**
  101.      * Format error messages
  102.      * @return string formated errors
  103.      */
  104.     protected function getFormatedErrorMsg(){
  105.         $errors '';
  106.         foreach ($GLOBALS['gJCoord']->errorMessages  as $e{
  107.            $errors .=  '<error xmlns="http://jelix.org/ns/xmlerror/1.0" type="'$e[0.'" code="'$e[1.'" file="'$e[3.'" line="'$e[4.'">';
  108.            $errors .= htmlspecialchars($e[2]ENT_NOQUOTES$this->charset);
  109.            if ($e[5])
  110.               $errors .= "\n".htmlspecialchars($e[5]ENT_NOQUOTES$this->charset);
  111.            $errors .= '</error>'"\n";
  112.         }
  113.         return $errors;
  114.     }
  115.  
  116.     /**
  117.      * create a new item
  118.      * @param string $title the item title
  119.      * @param string $link  the link
  120.      * @param string $date  the date of the item
  121.      * @return jXMLFeedItem 
  122.      */
  123.     public function createItem($title,$link$date){
  124.         $item new jAtom10Item();
  125.         $item->title $title;
  126.         $item->id $item->link $link;
  127.         $item->published $date;
  128.         return $item;
  129.     }
  130.  
  131. }
  132.  
  133. /**
  134.  * meta data of the channel
  135.  * @package    jelix
  136.  * @subpackage core_response
  137.  * @since 1.0b1
  138.  */
  139. class jAtom10Info extends jXMLFeedInfo{
  140.     /**
  141.      * unique id of the channel
  142.      * @var string 
  143.      */
  144.     public $id;
  145.     /**
  146.      * channel url
  147.      * @var string 
  148.      */
  149.     public $selfLink;
  150.     /**
  151.      * author's list
  152.      * each author is an array('name'=>'','email'=>'','uri'=>'')
  153.      * @var array 
  154.      */
  155.     public $authors = array();
  156.     /**
  157.      * related links to the channel
  158.      * each link is an array with this keys : href rel type hreflang title length
  159.      * @var array 
  160.      */
  161.     public $otherLinks = array();
  162.     /**
  163.      * list of contributors
  164.      * each contributor is an array('name'=>'','email'=>'','uri'=>'')
  165.      * @var array 
  166.      */
  167.     public $contributorsarray();
  168.     /**
  169.      * icon url
  170.      * @var string 
  171.      */
  172.     public $icon;
  173.  
  174.     /**
  175.      * version of the generator
  176.      * @var string 
  177.      * @see $generator
  178.      */
  179.     public $generatorVersion;
  180.     /**
  181.      * url of the generator
  182.      * @var string 
  183.      * @see $generator
  184.      */
  185.     public $generatorUrl;
  186.  
  187.     function __construct ()
  188.     {
  189.         $this->_mandatory = array ('title''id''updated');
  190.     }
  191. }
  192.  
  193. /**
  194.  * content of an item in a syndication channel
  195.  * @package    jelix
  196.  * @subpackage core_response
  197.  * @since 1.0b1
  198.  */
  199. class jAtom10Item extends jXMLFeedItem {
  200.     /**
  201.      * the url of the main author
  202.      * @var string 
  203.      */
  204.     public $authorUri;
  205.     /**
  206.      * list of other authors
  207.      * each author is an array('name'=>'','email'=>'','uri'=>'')
  208.      * @var array 
  209.      */
  210.     public $otherAuthors = array();
  211.     /**
  212.      * list of contributors
  213.      * each contributor is an array('name'=>'','email'=>'','uri'=>'')
  214.      * @var string 
  215.      */
  216.     public $contributorsarray();
  217.     /**
  218.      * related links to the item
  219.      * each link is an array with this keys : href rel type hreflang title length
  220.      * @var array 
  221.      */
  222.     public $otherLinksarray();
  223.     /**
  224.      * summary of the content
  225.      * @var string 
  226.      */
  227.     public $summary;
  228.     /**
  229.      * type of the summary
  230.      * possible values are 'text', 'html', 'xhtml'
  231.      * @var string 
  232.      */
  233.     public $summaryType;
  234.     /**
  235.      * atom content of the source of the item
  236.      * @var xml 
  237.      */
  238.     public $source;
  239.     /**
  240.      * Copyright
  241.      * @var string 
  242.      */
  243.     public $copyright;
  244.     /**
  245.      * date of the last update of the item
  246.      * date format is yyyy-mm-dd hh:mm:ss
  247.      * @var string 
  248.      */
  249.     public $updated;
  250.  
  251. }

Documentation generated on Thu, 19 Sep 2013 00:06:31 +0200 by phpDocumentor 1.4.3