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_PATH.'tpl/jTpl.class.php');
  19. require_once(JELIX_LIB_CORE_PATH.'response/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.            $errors .=  '<error xmlns="http://jelix.org/ns/xmlerror/1.0" type="'$e[0.'" code="'$e[1.'" file="'$e[3.'" line="'$e[4.'">';
  101.            $errors .= htmlspecialchars($e[2]ENT_NOQUOTES$this->charset);
  102.            if ($e[5])
  103.               $errors .= "\n".htmlspecialchars($e[5]ENT_NOQUOTES$this->charset);
  104.            $errors .= '</error>'"\n";
  105.         }
  106.         return $errors;
  107.     }
  108.  
  109.     /**
  110.      * create a new item
  111.      * @param string $title the item title
  112.      * @param string $link  the link
  113.      * @param string $date  the date of the item
  114.      * @return jXMLFeedItem 
  115.      */
  116.     public function createItem($title,$link$date){
  117.         $item new jRSSItem();
  118.         $item->title $title;
  119.         $item->id $item->link $link;
  120.         $item->published $date;
  121.         return $item;
  122.     }
  123.  
  124.  
  125. }
  126.  
  127. /**
  128.  * meta data of the channel
  129.  * @package    jelix
  130.  * @subpackage core_response
  131.  * @since 1.0b1
  132.  */
  133. class jRSS20Info extends jXMLFeedInfo{
  134.     /**
  135.      * lang of the channel
  136.      * @var string 
  137.      */
  138.     public $language;
  139.     /**
  140.      * email of the content manager
  141.      * @var string 
  142.      */
  143.     public $managingEditor;
  144.     /**
  145.      * email of technical responsible
  146.      * @var string 
  147.      */
  148.     public $webMaster;
  149.     /**
  150.      * publication date
  151.      * format:  yyyy-mm-dd hh:mm:ss
  152.      * @var string 
  153.      */
  154.     public $published;
  155.     /**
  156.      * specification url
  157.      * example : http://blogs.law.harvard.edu/tech/rss
  158.      * @var string 
  159.      */
  160.     public $docs='';
  161.     /**
  162.      * not implemented
  163.      * @var string 
  164.      */
  165.     public $cloud// indique un webservice par lequel le client peut s'enregistrer auprés du serveur
  166.                   // pour être tenu au courant des modifs
  167.                   //=array('domain'=>'','path'=>'','port'=>'','registerProcedure'=>'', 'protocol'=>'');
  168.     /**
  169.      * time to live of the cache, in minutes
  170.      * @var string 
  171.      */
  172.     public $ttl;
  173.     /**
  174.      * image title
  175.      * @var string 
  176.      */
  177.     public $imageTitle;
  178.     /**
  179.      * web site url corresponding to the image
  180.      * @var string 
  181.      */
  182.     public $imageLink;
  183.     /**
  184.      * width of the image
  185.      * @var string 
  186.      */
  187.     public $imageWidth;
  188.     /**
  189.      * height of the image
  190.      * @var string 
  191.      */
  192.     public $imageHeight;
  193.     /**
  194.      * Description of the image (= title attribute for the img tag)
  195.      * @var string 
  196.      */
  197.     public $imageDescription;
  198.  
  199.     /**
  200.      * Pics rate for this channel
  201.      * @var string 
  202.      */
  203.     public $rating;
  204.     /**
  205.      * field form for the channel
  206.      * it is an array('title'=>'','description'=>'','name'=>'','link'=>'')
  207.      * @var array 
  208.      */
  209.     public $textInput;
  210.     /**
  211.      * list of hours that agregator should ignore
  212.      * ex (10, 21)
  213.      * @var array 
  214.      */
  215.     public $skipHours;
  216.     /**
  217.      * list of day that agregator should ignore
  218.      * ex ('monday', 'tuesday')
  219.      * @var array 
  220.      */
  221.     public $skipDays;
  222.  
  223.     function __construct ({
  224.             $this->_mandatory = array 'title''webSiteUrl''description');
  225.     }
  226. }
  227.  
  228. /**
  229.  * content of an item in a syndication channel
  230.  * @package    jelix
  231.  * @subpackage core_response
  232.  * @since 1.0b1
  233.  */
  234. class jRSSItem extends jXMLFeedItem {
  235.  
  236.     /**
  237.      * comments url
  238.      * @var string 
  239.      */
  240.     public $comments;
  241.     /**
  242.      * media description, attached to the item
  243.      * the array should contain this keys :  'url', 'size', 'mimetype'
  244.      * @var array 
  245.      */
  246.     public $enclosure;
  247.     /**
  248.      * says if the id is a permanent link
  249.      * @var boolean 
  250.      */
  251.     public $idIsPermalink;
  252.     /**
  253.      * url of  rss channel of the information source
  254.      * @var string 
  255.      */
  256.     public $sourceUrl;
  257.     /**
  258.      * Title of the information source
  259.      * @var string 
  260.      */
  261.     public $sourceTitle;
  262. }

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