Source for file jResponse.class.php

Documentation is available at jResponse.class.php

  1. <?php
  2. /**
  3. @package    jelix
  4. @subpackage core
  5. @author     Laurent Jouanneau
  6. @contributor
  7. @copyright  2005-2006 Laurent Jouanneau
  8. @link        http://www.jelix.org
  9. @licence    GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
  10. */
  11.  
  12.  
  13. /**
  14. * base class for response object
  15. * A response object is responsible to generate a content in a specific format.
  16. @package  jelix
  17. @subpackage core
  18. */
  19. abstract class jResponse {
  20.     /**
  21.     * ident of the response type
  22.     * @var string 
  23.     */
  24.     protected  $_type = null;
  25.  
  26.     protected $_errorMessages=array();
  27.  
  28.     protected $_acceptSeveralErrors=true;
  29.  
  30.     protected $_httpHeaders = array();
  31.  
  32.     protected $_httpHeadersSent = false;
  33.  
  34.     protected $_httpStatusCode ='200';
  35.  
  36.     protected $_httpStatusMsg ='OK';
  37.  
  38.     /**
  39.     * constructor
  40.     */
  41.     function __construct (){
  42.     }
  43.  
  44.     /**
  45.      * Send the response in the correct format.
  46.      *
  47.      * @return boolean    true if the output is ok
  48.      * @internal should take care about errors
  49.      */
  50.     abstract public function output();
  51.  
  52.     /**
  53.      * Send a response with only error messages which appears during the action
  54.      * (errors, warning, notice, exceptions...). Type and error details
  55.      *  depend on the application configuration
  56.      */
  57.     abstract public function outputErrors();
  58.  
  59.     /**
  60.      * return the response type name
  61.      * @return string the name
  62.      */
  63.     public final function getType()return $this->_type;}
  64.  
  65.     /**
  66.      * return the format type name (eg the family type name)
  67.      * @return string the name
  68.      */
  69.     public function getFormatType()return $this->_type;}
  70.  
  71.     /**
  72.      * says if the response can embed more than one error message
  73.      * @return boolean true if many
  74.      */
  75.     public final function acceptSeveralErrors()return $this->_acceptSeveralErrors;}
  76.  
  77.     /**
  78.      *
  79.      */
  80.     public final function hasErrors()return count($GLOBALS['gJCoord']->errorMessages)>0;}
  81.  
  82.     /**
  83.      * add an http header to the response.
  84.      * will be send during the output of the response
  85.      * @param string $htype the header type ("Content-Type", "Date-modified"...)
  86.      * @param string $hcontent value of the header type
  87.      * @param boolean $overwrite false if the value should be set only if it doesn't still exist
  88.      */
  89.     public function addHttpHeader($htype$hcontent$overwrite=true)
  90.         if(!$overwrite && isset($this->_httpHeaders[$htype]))
  91.             return;
  92.         $this->_httpHeaders[$htype]=$hcontent;
  93.     }
  94.  
  95.     /**
  96.      * delete all http headers
  97.      */
  98.     public function clearHttpHeaders(){
  99.         $this->_httpHeaders = array();
  100.         $this->_httpStatusCode ='200';
  101.         $this->_httpStatusMsg ='OK';
  102.     }
  103.  
  104.     /**
  105.      * set the http status code for the http header
  106.      * @param string $code  the status code (200, 404...)
  107.      * @param string $msg the message following the status code ("OK", "Not Found"..)
  108.      */
  109.     public function setHttpStatus($code$msg)$this->_httpStatusCode=$code$this->_httpStatusMsg=$msg;}
  110.  
  111.     /**
  112.      * send http headers
  113.      */
  114.     protected function sendHttpHeaders(){
  115.         header("HTTP/1.0 ".$this->_httpStatusCode.' '.$this->_httpStatusMsg);
  116.         foreach($this->_httpHeaders as $ht=>$hc){
  117.             header($ht.': '.$hc);
  118.         }
  119.         $this->_httpHeadersSent=true;
  120.         /*
  121.         header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  122.         header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  123.         header("Cache-Control: no-store, no-cache, must-revalidate");
  124.         header("Cache-Control: post-check=0, pre-check=0", false);
  125.         header("Pragma: no-cache");
  126.         */
  127.     }
  128. }

Documentation generated on Thu, 22 Mar 2012 22:16:32 +0100 by phpDocumentor 1.4.3