Source for file jResponseRss20.class.php

Documentation is available at jResponseRss20.class.php

  1. <?php
  2. /**
  3. @package     jelix
  4. @subpackage  core_response
  5. @author      Loic Mathaud
  6. @author      Yannick Le Guédart
  7. @contributor Laurent Jouanneau
  8. @copyright   2005-2006 Loic Mathaud
  9. @copyright   2006 Yannick Le Guédart
  10. @copyright   2006-2007 Laurent Jouanneau
  11. @link        http://www.jelix.org
  12. @licence     GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
  13. */
  14.  
  15. /**
  16. *
  17. */
  18. require_once(JELIX_LIB_TPL_PATH.'jTpl.class.php');
  19. require_once(JELIX_LIB_RESPONSE_PATH.'jResponseXmlFeed.class.php');
  20.  
  21. /**
  22. * Rss2.0 response
  23. @package  jelix
  24. @subpackage core_response
  25. @link http://blogs.law.harvard.edu/tech/rss
  26. @link http://www.stervinou.com/projets/rss/
  27. @since 1.0b1
  28. */
  29. class jResponseRss20 extends jResponseXMLFeed {
  30.     protected $_type = 'rss2.0';
  31.  
  32.     /**
  33.      * Class constructor
  34.      */
  35.     function __construct ({
  36.         $this->_template     new jTpl();
  37.         $this->_mainTpl     'jelix~rss20';
  38.  
  39.         $this->infos = new jRSS20Info ();
  40.  
  41.         parent::__construct ();
  42.         $this->infos->language $this->lang;
  43.     }
  44.  
  45.     /**
  46.      * Generate the content and send it.
  47.      * Errors are managed
  48.      * @return boolean true if generation is ok, else false
  49.      */
  50.     final public function output (){
  51.         $this->_headSent false;
  52.  
  53.         $this->_httpHeaders['Content-Type'=
  54.                 'application/xml;charset=' $this->charset;
  55.  
  56.         $this->sendHttpHeaders ();
  57.  
  58.         echo '<?xml version="1.0" encoding="'$this->charset .'"?>'"\n";
  59.         $this->_outputXmlHeader ();
  60.  
  61.         $this->_headSent true;
  62.  
  63.         $this->_template->assign ('rss'$this->infos);
  64.         $this->_template->assign ('items'$this->itemList);
  65.  
  66.         $this->_template->display ($this->_mainTpl);
  67.  
  68.         if ($this->hasErrors ()) {
  69.             echo $this->getFormatedErrorMsg ();
  70.         }
  71.         echo '</rss>';
  72.         return true;
  73.     }
  74.  
  75.     final public function outputErrors({
  76.         if (!$this->_headSent{
  77.              if (!$this->_httpHeadersSent{
  78.                 header("HTTP/1.0 500 Internal Server Error");
  79.                 header('Content-Type: text/xml;charset='.$this->charset);
  80.              }
  81.              echo '<?xml version="1.0" encoding="'$this->charset .'"?>';
  82.         }
  83.  
  84.         echo '<errors xmlns="http://jelix.org/ns/xmlerror/1.0">';
  85.         if ($this->hasErrors()) {
  86.             echo $this->getFormatedErrorMsg();
  87.         else {
  88.             echo '<error>Unknown Error</error>';
  89.         }
  90.         echo '</errors>';
  91.     }
  92.  
  93.     /**
  94.      * Format error messages
  95.      * @return string formated errors
  96.      */
  97.     protected function getFormatedErrorMsg(){
  98.         $errors '';
  99.         foreach ($GLOBALS['gJCoord']->errorMessages  as $e{
  100.             // FIXME : Pourquoi utiliser htmlentities() ?
  101.            $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";
  102.         }
  103.         return $errors;
  104.     }
  105.  
  106.     /**
  107.      * create a new item
  108.      * @param string $title the item title
  109.      * @param string $link  the link
  110.      * @param string $date  the date of the item
  111.      * @return jXMLFeedItem 
  112.      */
  113.     public function createItem($title,$link$date){
  114.         $item new jRSSItem();
  115.         $item->title $title;
  116.         $item->id $item->link $link;
  117.         $item->published $date;
  118.         return $item;
  119.     }
  120.  
  121.  
  122. }
  123.  
  124. /**
  125.  * meta data of the channel
  126.  * @package    jelix
  127.  * @subpackage core_response
  128.  * @since 1.0b1
  129.  */
  130. class jRSS20Info extends jXMLFeedInfo{
  131.     /**
  132.      * lang of the channel
  133.      * @var string 
  134.      */
  135.     public $language;
  136.     /**
  137.      * email of the content manager
  138.      * @var string 
  139.      */
  140.     public $managingEditor;
  141.     /**
  142.      * email of technical responsible
  143.      * @var string 
  144.      */
  145.     public $webMaster;
  146.     /**
  147.      * publication date
  148.      * format:  yyyy-mm-dd hh:mm:ss
  149.      * @var string 
  150.      */
  151.     public $published;
  152.     /**
  153.      * specification url
  154.      * example : http://blogs.law.harvard.edu/tech/rss
  155.      * @var string 
  156.      */
  157.     public $docs='';
  158.     /**
  159.      * not implemented
  160.      * @var string 
  161.      */
  162.     public $cloud// indique un webservice par lequel le client peut s'enregistrer auprés du serveur
  163.                   // pour être tenu au courant des modifs
  164.                   //=array('domain'=>'','path'=>'','port'=>'','registerProcedure'=>'', 'protocol'=>'');
  165.     /**
  166.      * time to live of the cache, in minutes
  167.      * @var string 
  168.      */
  169.     public $ttl;
  170.     /**
  171.      * image title
  172.      * @var string 
  173.      */
  174.     public $imageTitle;
  175.     /**
  176.      * web site url corresponding to the image
  177.      * @var string 
  178.      */
  179.     public $imageLink;
  180.     /**
  181.      * width of the image
  182.      * @var string 
  183.      */
  184.     public $imageWidth;
  185.     /**
  186.      * height of the image
  187.      * @var string 
  188.      */
  189.     public $imageHeight;
  190.     /**
  191.      * Description of the image (= title attribute for the img tag)
  192.      * @var string 
  193.      */
  194.     public $imageDescription;
  195.  
  196.     /**
  197.      * Pics rate for this channel
  198.      * @var string 
  199.      */
  200.     public $rating;
  201.     /**
  202.      * field form for the channel
  203.      * it is an array('title'=>'','description'=>'','name'=>'','link'=>'')
  204.      * @var array 
  205.      */
  206.     public $textInput;
  207.     /**
  208.      * list of hours that agregator should ignore
  209.      * ex (10, 21)
  210.      * @var array 
  211.      */
  212.     public $skipHours;
  213.     /**
  214.      * list of day that agregator should ignore
  215.      * ex ('monday', 'tuesday')
  216.      * @var array 
  217.      */
  218.     public $skipDays;
  219.  
  220.     function __construct ({
  221.             $this->_mandatory = array 'title''webSiteUrl''description');
  222.     }
  223. }
  224.  
  225. /**
  226.  * content of an item in a syndication channel
  227.  * @package    jelix
  228.  * @subpackage core_response
  229.  * @since 1.0b1
  230.  */
  231. class jRSSItem extends jXMLFeedItem {
  232.  
  233.     /**
  234.      * comments url
  235.      * @var string 
  236.      */
  237.     public $comments;
  238.     /**
  239.      * media description, attached to the item
  240.      * the array should contain this keys :  'url', 'size', 'mimetype'
  241.      * @var array 
  242.      */
  243.     public $enclosure;
  244.     /**
  245.      * says if the id is a permanent link
  246.      * @var boolean 
  247.      */
  248.     public $idIsPermalink;
  249.     /**
  250.      * url of  rss channel of the information source
  251.      * @var string 
  252.      */
  253.     public $sourceUrl;
  254.     /**
  255.      * Title of the information source
  256.      * @var string 
  257.      */
  258.     public $sourceTitle;
  259. }
  260.  
  261. ?>

Documentation generated on Wed, 07 Sep 2011 13:47:48 +0200 by phpDocumentor 1.4.3