Source for file jResponseRdf.class.php
Documentation is available at jResponseRdf.class.php
- <?php
- /**
- * @package     jelix
- * @subpackage  core_response
- * @author      Laurent Jouanneau
- * @copyright   2006-2009 Laurent Jouanneau
- * @link        http://www.jelix.org
- * @licence     GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
- */
-  
-  
- /**
- * output RDF content.
- * This is a basic RDF generator, which generates content from
- * an array of data.
- * @package  jelix
- * @subpackage core_response
- * @see jResponse
- */
-  
- final class jResponseRdf extends jResponse {
-     /**
-     * @var string 
-     */
-     protected $_type = 'rdf';
-     protected $_acceptSeveralErrors=true;
-  
-     /**
-      * List of object or array, which will be transform into RDF content
-      * @var array 
-      */
-     public $data;
-  
-     /**
-      * a template selector for complex RDF content.
-      * keep empty if you have a simple array of array in $data :
-      * RDF content will be generated by a simple generator.
-      * if you specify a template, you don't have to fill other
-      * properties (except data)
-      * @var string 
-      */
-     public $template;
-  
-     /**
-      * namespace of the attributes and elements that will content your data.
-      * @var string 
-      */
-     public $resNs="http://dummy/rdf#";
-     /**
-      * namespace prefix
-      * @var string 
-      */
-     public $resNsPrefix='row';
-     /**
-      * uri prefix of all ressources
-      * @var string 
-      */
-     public $resUriPrefix = "urn:data:row:";
-     /**
-      * uri of the root sequence
-      * @var string 
-      */
-     public $resUriRoot = "urn:data:row";
-     /**
-      * list of array values you want to put in attributes
-      * @var string 
-      */
-     public $asAttribute=array();
-     /**
-      * list of array values you want to put in elements
-      * @var string 
-      */
-     public $asElement=array();
-     /**
-      *
-      */
-     protected $prologSent=false;
-  
-     public function output(){
-         if($this->hasErrors()) return false;
-         $this->_httpHeaders['Content-Type']='text/xml;charset='.$GLOBALS['gJConfig']->charset;
-         $this->sendHttpHeaders();
-  
-         echo '<?xml version="1.0" encoding="'.$GLOBALS['gJConfig']->charset.'"?>';
-         $this->prologSent = true;
-         if($this->template !=''){
-             $tpl= new jTpl();
-             $tpl->assign('data',$this->data);
-             $tpl->display($this->template);
-         }else{
-             $this->generateContent();
-         }
-         return true;
-     }
-  
-     protected function generateContent(){
-         $EOL="\n";
-         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;
-         echo '  xmlns:',$this->resNsPrefix,'="',$this->resNs,'"  xmlns:NC="http://home.netscape.com/NC-rdf#">',$EOL;
-  
-         echo '<Bag RDF:about="'.$this->resUriRoot.'">'.$EOL;
-         foreach($this->data as $dt){
-             echo "<li>\n<Description ";
-             // NC:parseType="Integer"
-             if(is_object($dt))
-                 $dt=get_object_vars ($dt);
-             if(count($this->asAttribute) || count($this->asElement)){
-                 foreach($this->asAttribute as $name){
-                     echo $this->resNsPrefix,':',$name,'="',htmlspecialchars($dt[$name]),'" ';
-                 }
-                 if(count($this->asElement)){
-                     echo ">\n";
-                     foreach($this->asElement as $name){
-                         echo '<',$this->resNsPrefix,':',$name,'>',htmlspecialchars($dt[$name]),'</',$this->resNsPrefix,':',$name,">\n";
-                     }
-                     echo "</Description>\n</li>\n";
-                 }else
-                     echo "/>\n</li>\n";
-  
-             }else{
-                 if(count($dt)){
-                     echo ">\n";
-                     foreach($dt as $name=>$val){
-                         echo '<',$this->resNsPrefix,':',$name,'>',htmlspecialchars($val),'</',$this->resNsPrefix,':',$name,">\n";
-                     }
-                     echo "</Description>\n</li>\n";
-                 }else{
-                     echo "/>\n</li>\n";
-                 }
-             }
-         }
-         echo "</Bag>\n</RDF>\n";
-     }
-  
-  
-     public function outputErrors(){
-         global $gJCoord;
-         $EOL="\n";
-         if(!$this->_httpHeadersSent){
-             header("HTTP/1.0 500 Internal Server Error");
-             header("Content-Type: text/xml;charset=".$GLOBALS['gJConfig']->charset);
-         }
-         if(!$this->prologSent){
-             echo '<?xml version="1.0" encoding="ISO-8859-1"?>'.$EOL;
-         }
-         echo '<RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"'.$EOL;
-         echo '  xmlns:err="http://jelix.org/ns/rdferr#"  xmlns:NC="http://home.netscape.com/NC-rdf#">'.$EOL;
-  
-         echo '<Bag RDF:about="urn:jelix:error">'.$EOL;
-         if(count($gJCoord->errorMessages)){
-             foreach($gJCoord->errorMessages as $e){
-                 echo "<li>\n";
-                 echo '<Description err:code="'.$e[1].'" err:type="'.$e[0].'" err:file="'.$e[3].'" err:line="'.$e[4].'">';
-                 echo '<err:message>'.htmlspecialchars($e[2]).'</err:message>';
-                 echo '<err:trace>'.htmlspecialchars($e[5]).'</err:trace>';
-                 echo "</Description>\n";
-                 echo "</li>\n";
-             }
-         }else{
-             echo "<li>\n";
-             echo '<Description err:code="-1" err:type="error" err:file="" err:line="">';
-             echo '<err:message>Unknown error</err:message>';
-             echo "</Description>\n";
-             echo "</li>\n";
-         }
-         echo "</Bag>\n";
-         echo "</RDF>\n";
-     }
- }
		Documentation generated on Thu, 19 Sep 2013 00:06:48 +0200 by phpDocumentor 1.4.3