Source for file jResponseRdf.class.php

Documentation is available at jResponseRdf.class.php

  1. <?php
  2. /**
  3. @package     jelix
  4. @subpackage  core_response
  5. @author      Laurent Jouanneau
  6. @copyright   2006-2010 Laurent Jouanneau
  7. @link        http://www.jelix.org
  8. @licence     GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
  9. */
  10.  
  11. /**
  12. * output RDF content.
  13. * This is a basic RDF generator, which generates content from
  14. * an array of data.
  15. @package  jelix
  16. @subpackage core_response
  17. @see jResponse
  18. */
  19.  
  20. final class jResponseRdf extends jResponse {
  21.     /**
  22.     * @var string 
  23.     */
  24.     protected $_type = 'rdf';
  25.  
  26.     /**
  27.      * List of object or array, which will be transform into RDF content
  28.      * @var array 
  29.      */
  30.     public $data;
  31.  
  32.     /**
  33.      * a template selector for complex RDF content.
  34.      * keep empty if you have a simple array of array in $data :
  35.      * RDF content will be generated by a simple generator.
  36.      * if you specify a template, you don't have to fill other
  37.      * properties (except data)
  38.      * @var string 
  39.      */
  40.     public $template;
  41.  
  42.     /**
  43.      * namespace of the attributes and elements that will content your data.
  44.      * @var string 
  45.      */
  46.     public $resNs="http://dummy/rdf#";
  47.     /**
  48.      * namespace prefix
  49.      * @var string 
  50.      */
  51.     public $resNsPrefix='row';
  52.     /**
  53.      * uri prefix of all ressources
  54.      * @var string 
  55.      */
  56.     public $resUriPrefix = "urn:data:row:";
  57.     /**
  58.      * uri of the root sequence
  59.      * @var string 
  60.      */
  61.     public $resUriRoot = "urn:data:row";
  62.     /**
  63.      * list of array values you want to put in attributes
  64.      * @var string 
  65.      */
  66.     public $asAttribute=array();
  67.     /**
  68.      * list of array values you want to put in elements
  69.      * @var string 
  70.      */
  71.     public $asElement=array();
  72.  
  73.     public function output(){
  74.         
  75.         if($this->_outputOnlyHeaders){
  76.             $this->sendHttpHeaders();
  77.             return true;
  78.         }
  79.         
  80.         $this->_httpHeaders['Content-Type']='text/xml;charset='.jApp::config()->charset;
  81.  
  82.         if ($this->template !=''{
  83.             $tplnew jTpl();
  84.             $tpl->assign('data',$this->data);
  85.             $content $tpl->fetch($this->template);
  86.         }
  87.         else {
  88.             $content $this->generateContent();
  89.         }
  90.         
  91.         $this->sendHttpHeaders();
  92.         echo '<?xml version="1.0" encoding="'.jApp::config()->charset.'"?>';
  93.         echo $content;
  94.         return true;
  95.     }
  96.  
  97.     protected function generateContent({
  98.         ob_start();
  99.         $EOL="\n";
  100.         echo '<RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"'.$EOL;
  101.         echo '  xmlns:',$this->resNsPrefix,'="',$this->resNs,'"  xmlns:NC="http://home.netscape.com/NC-rdf#">',$EOL;
  102.  
  103.         echo '<Bag RDF:about="'.$this->resUriRoot.'">'.$EOL;
  104.         foreach($this->data as $dt){
  105.             echo "<li>\n<Description ";
  106.             // NC:parseType="Integer"
  107.             if(is_object($dt))
  108.                 $dt=get_object_vars ($dt);
  109.             if(count($this->asAttribute|| count($this->asElement)){
  110.                 foreach($this->asAttribute as $name){
  111.                     echo $this->resNsPrefix,':',$name,'="',htmlspecialchars($dt[$name]),'" ';
  112.                 }
  113.                 if(count($this->asElement)){
  114.                     echo ">\n";
  115.                     foreach($this->asElement as $name){
  116.                         echo '<',$this->resNsPrefix,':',$name,'>',htmlspecialchars($dt[$name]),'</',$this->resNsPrefix,':',$name,">\n";
  117.                     }
  118.                     echo "</Description>\n</li>\n";
  119.                 }else
  120.                     echo "/>\n</li>\n";
  121.  
  122.             }else{
  123.                 if(count($dt)){
  124.                     echo ">\n";
  125.                     foreach($dt as $name=>$val){
  126.                         echo '<',$this->resNsPrefix,':',$name,'>',htmlspecialchars($val),'</',$this->resNsPrefix,':',$name,">\n";
  127.                     }
  128.                     echo "</Description>\n</li>\n";
  129.                 }else{
  130.                     echo "/>\n</li>\n";
  131.                 }
  132.             }
  133.         }
  134.         echo "</Bag>\n</RDF>\n";
  135.         return ob_get_clean();
  136.     }
  137. }

Documentation generated on Mon, 26 Oct 2015 21:55:41 +0100 by phpDocumentor 1.4.3