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

Documentation generated on Thu, 22 Mar 2012 22:16:34 +0100 by phpDocumentor 1.4.3