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-2010 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.  
  53.         $this->_httpHeaders['Content-Type'=
  54.                 'application/atom+xml;charset=' $this->charset;
  55.  
  56.         if(!$this->infos->updated){
  57.             $this->infos->updated date("Y-m-d H:i:s");
  58.         }
  59.  
  60.         // generate the main content, in a buffer
  61.         // so we can handle errors
  62.         $this->_template->assign ('atom'$this->infos);
  63.         $this->_template->assign ('items'$this->itemList);
  64.         $this->_template->assign ('lang',$this->lang);
  65.         $content $this->_template->fetch ($this->_mainTpl);
  66.  
  67.         $this->sendHttpHeaders();
  68.         echo '<?xml version="1.0" encoding="'$this->charset .'"?>'"\n";
  69.         $this->_outputXmlHeader ();
  70.         echo $content;
  71.         return true;
  72.     }
  73.  
  74.     /**
  75.      * create a new item
  76.      * @param string $title the item title
  77.      * @param string $link  the link
  78.      * @param string $date  the date of the item
  79.      * @return jXMLFeedItem 
  80.      */
  81.     public function createItem($title,$link$date){
  82.         $item new jAtom10Item();
  83.         $item->title $title;
  84.         $item->id $item->link $link;
  85.         $item->published $date;
  86.         return $item;
  87.     }
  88.  
  89. }
  90.  
  91. /**
  92.  * meta data of the channel
  93.  * @package    jelix
  94.  * @subpackage core_response
  95.  * @since 1.0b1
  96.  */
  97. class jAtom10Info extends jXMLFeedInfo{
  98.     /**
  99.      * unique id of the channel
  100.      * @var string 
  101.      */
  102.     public $id;
  103.     /**
  104.      * channel url
  105.      * @var string 
  106.      */
  107.     public $selfLink;
  108.     /**
  109.      * author's list
  110.      * each author is an array('name'=>'','email'=>'','uri'=>'')
  111.      * @var array 
  112.      */
  113.     public $authors = array();
  114.     /**
  115.      * related links to the channel
  116.      * each link is an array with this keys : href rel type hreflang title length
  117.      * @var array 
  118.      */
  119.     public $otherLinks = array();
  120.     /**
  121.      * list of contributors
  122.      * each contributor is an array('name'=>'','email'=>'','uri'=>'')
  123.      * @var array 
  124.      */
  125.     public $contributorsarray();
  126.     /**
  127.      * icon url
  128.      * @var string 
  129.      */
  130.     public $icon;
  131.  
  132.     /**
  133.      * version of the generator
  134.      * @var string 
  135.      * @see $generator
  136.      */
  137.     public $generatorVersion;
  138.     /**
  139.      * url of the generator
  140.      * @var string 
  141.      * @see $generator
  142.      */
  143.     public $generatorUrl;
  144.  
  145.     function __construct ()
  146.     {
  147.         $this->_mandatory = array ('title''id''updated');
  148.     }
  149. }
  150.  
  151. /**
  152.  * content of an item in a syndication channel
  153.  * @package    jelix
  154.  * @subpackage core_response
  155.  * @since 1.0b1
  156.  */
  157. class jAtom10Item extends jXMLFeedItem {
  158.     /**
  159.      * the url of the main author
  160.      * @var string 
  161.      */
  162.     public $authorUri;
  163.     /**
  164.      * list of other authors
  165.      * each author is an array('name'=>'','email'=>'','uri'=>'')
  166.      * @var array 
  167.      */
  168.     public $otherAuthors = array();
  169.     /**
  170.      * list of contributors
  171.      * each contributor is an array('name'=>'','email'=>'','uri'=>'')
  172.      * @var string 
  173.      */
  174.     public $contributorsarray();
  175.     /**
  176.      * related links to the item
  177.      * each link is an array with this keys : href rel type hreflang title length
  178.      * @var array 
  179.      */
  180.     public $otherLinksarray();
  181.     /**
  182.      * summary of the content
  183.      * @var string 
  184.      */
  185.     public $summary;
  186.     /**
  187.      * type of the summary
  188.      * possible values are 'text', 'html', 'xhtml'
  189.      * @var string 
  190.      */
  191.     public $summaryType;
  192.     /**
  193.      * atom content of the source of the item
  194.      * @var xml 
  195.      */
  196.     public $source;
  197.     /**
  198.      * Copyright
  199.      * @var string 
  200.      */
  201.     public $copyright;
  202.     /**
  203.      * date of the last update of the item
  204.      * date format is yyyy-mm-dd hh:mm:ss
  205.      * @var string 
  206.      */
  207.     public $updated;
  208.  
  209. }

Documentation generated on Wed, 24 Sep 2014 22:01:17 +0200 by phpDocumentor 1.4.3