Source for file jResponseXmlFeed.class.php

Documentation is available at jResponseXmlFeed.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.  * Responses for Syndication  should inherits from jResponseXMLFeed
  15.  * @package    jelix
  16.  * @subpackage core_response
  17.  * @since 1.0b1
  18.  */
  19. abstract class jResponseXMLFeed extends jResponse {
  20.  
  21.     /**
  22.     * charset used in the channel
  23.     * @var string 
  24.     */
  25.     public $charset;
  26.  
  27.     /**
  28.     * Language used in the channel
  29.     * @var string 
  30.     */
  31.     public $lang;
  32.  
  33.     /**
  34.     * informations about the channel
  35.     * @var jXMLFeedInfo 
  36.     */
  37.     public $infos = null;
  38.  
  39.     /**
  40.     * array of channel item
  41.     */
  42.     public $itemList = array ();
  43.  
  44.     /**
  45.     * Template engine used for output
  46.     * @var jtpl 
  47.     */
  48.     private $_template null;
  49.  
  50.     /**
  51.      * template name
  52.      * @var string 
  53.      */
  54.     private $_mainTpl '';
  55.  
  56.     /**
  57.     * Array containing the XSL stylesheets links
  58.     */
  59.     private $_xsl array ();
  60.  
  61.     /**
  62.      * Class constructor
  63.      */
  64.     function __construct (){
  65.         global $gJConfig;
  66.  
  67.         $this->charset  = $gJConfig->charset;
  68.         list($lang,$country explode('_'$gJConfig->locale);
  69.         $this->lang       = $lang;
  70.  
  71.         parent::__construct ();
  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.     abstract public function createItem($title,$link$date);
  82.  
  83.     /**
  84.      * register an item in the channel
  85.      * @param jXMLFeedItem $item 
  86.      */
  87.     public function addItem ($item){
  88.         $this->itemList[$item;
  89.     }
  90.  
  91.  
  92.     public function addOptionals($content{
  93.         if (is_array($content)) {
  94.             $this->_optionals $content;
  95.         }
  96.     }
  97.  
  98.     public function addXSLStyleSheet($src$params=array ()) {
  99.         if (!isset($this->_xsl[$src])){
  100.             $this->_xsl[$src$params;
  101.         }
  102.     }
  103.  
  104.     protected function _outputXmlHeader({
  105.         // XSL stylesheet
  106.         foreach ($this->_xsl as $src => $params{
  107.             //the extra params we may found in there.
  108.             $more '';
  109.             foreach ($params as $param_name => $param_value{
  110.                 $more .= $param_name.'="'htmlspecialchars($param_value).'" ';
  111.             }
  112.             echo ' <?xml-stylesheet type="text/xsl" href="'$src,'" '$more,' ?>';
  113.         }
  114.     }
  115.  
  116.     protected function _outputOptionals({
  117.         if (is_array($this->_optionals)) {
  118.             foreach ($this->_optionals as $name => $value{
  119.                 echo '<'$name .'>'$value .'</'$name .'>'"\n";
  120.             }
  121.         }
  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. abstract class jXMLFeedInfo {
  134.     /**
  135.      * title of the channel (only text, no html)
  136.      * @var string 
  137.      */
  138.     public $title;
  139.     /**
  140.      * url of the web site
  141.      * @var string 
  142.      */
  143.     public $webSiteUrl;
  144.     /**
  145.      * copyright
  146.      * @var string 
  147.      */
  148.     public $copyright;
  149.     /**
  150.      * list of category names
  151.      * @var array 
  152.      */
  153.     public $categories=array();
  154.     /**
  155.      * the name of the generator
  156.      * @var string 
  157.      */
  158.     public $generator='Jelix php framework http://jelix.org';
  159.     /**
  160.      * url of the image channel
  161.      * @var string 
  162.      */
  163.     public $image;
  164.     /**
  165.      * description of the channel. could be pure text or html
  166.      * @var string 
  167.      */
  168.     public $description;
  169.     /**
  170.      * says the type of description : text or html (or xhtml for atom)
  171.      * Values : 'text','html','xhtml'
  172.      * @var string 
  173.      */
  174.     public $descriptionType='text';
  175.     /**
  176.      * date of the last update of the channel
  177.      * format : yyyy-mm-dd hh:mm:ss
  178.      * @var string 
  179.      */
  180.     public $updated;
  181.  
  182.  
  183.     protected $_mandatory = array ();
  184. }
  185.  
  186. /**
  187.  * content of an item in a syndication channel
  188.  * @package    jelix
  189.  * @subpackage core_response
  190.  * @since 1.0b1
  191.  */
  192. abstract class jXMLFeedItem {
  193.     /**
  194.      * identifiant of the item (its url for example)
  195.      * @var string 
  196.      */
  197.     public $id;
  198.     /**
  199.      * title
  200.      * @var string 
  201.      */
  202.     public $title;
  203.     /**
  204.      * url of the item
  205.      * @var string 
  206.      */
  207.     public $link;
  208.     /**
  209.      * publication date of the item
  210.      * format : yyyy-mm-dd hh:mm:ss
  211.      * @var string 
  212.      */
  213.     public $published;
  214.     /**
  215.      * author name
  216.      * @var string 
  217.      */
  218.     public $authorName;
  219.     /**
  220.      * author email
  221.      * @var string 
  222.      */
  223.     public $authorEmail;
  224.     /**
  225.      * list of category names
  226.      * @var array 
  227.      */
  228.     public $categories=array();
  229.     /**
  230.      * content of the item.  could be pure text or html
  231.      * @var string 
  232.      */
  233.     public $content;
  234.     /**
  235.      * says the type of content : text or html (or xhtml for atom)
  236.      * Values : 'text','html','xhtml'
  237.      * @var string 
  238.      */
  239.     public $contentType='text';
  240.     /**
  241.      *
  242.      * @var string 
  243.      */
  244.     protected $_mandatory = array ();
  245. }

Documentation generated on Thu, 19 Sep 2013 00:07:02 +0200 by phpDocumentor 1.4.3