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 Julien Issler
  7. @copyright   2005-2009 Laurent Jouanneau
  8. @copyright   2010 Julien Issler
  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. * 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.     /**
  22.     * @var string ident of the response type
  23.     */
  24.     protected  $_type = null;
  25.  
  26.     /**
  27.      * @var boolean indicates if several errors can be returned by the response
  28.      */
  29.     protected $_acceptSeveralErrors = true;
  30.  
  31.     /**
  32.      * @var array list of http headers that will be send to the client
  33.      */
  34.     protected $_httpHeaders = array();
  35.  
  36.     /**
  37.      * @var boolean indicates if http headers have already been sent to the client
  38.      */
  39.     protected $_httpHeadersSent = false;
  40.  
  41.     /**
  42.      * @var string  the http status code to send
  43.      */
  44.     protected $_httpStatusCode ='200';
  45.     /**
  46.      * @var string  the http status message to send
  47.      */
  48.     protected $_httpStatusMsg ='OK';
  49.  
  50.     /**
  51.     * constructor
  52.     */
  53.     function __construct({
  54.     }
  55.  
  56.     /**
  57.      * Send the response in the correct format.
  58.      *
  59.      * @return boolean    true if the output is ok
  60.      * @internal should take care about errors
  61.      */
  62.     abstract public function output();
  63.  
  64.     /**
  65.      * Send a response with only error messages which appears during the action
  66.      * (errors, warning, notice, exceptions...). Type and error details
  67.      *  depend on the application configuration
  68.      */
  69.     abstract public function outputErrors();
  70.  
  71.     /**
  72.      * return the response type name
  73.      * @return string the name
  74.      */
  75.     public final function getType()return $this->_type;}
  76.  
  77.     /**
  78.      * return the format type name (eg the family type name)
  79.      * @return string the name
  80.      */
  81.     public function getFormatType()return $this->_type;}
  82.  
  83.     /**
  84.      * says if the response can embed more than one error message
  85.      * @return boolean true if many
  86.      */
  87.     public final function acceptSeveralErrors()return $this->_acceptSeveralErrors;}
  88.  
  89.     /**
  90.      *
  91.      */
  92.     public final function hasErrors()return count($GLOBALS['gJCoord']->errorMessages)>0;}
  93.  
  94.     /**
  95.      * add an http header to the response.
  96.      * will be send during the output of the response
  97.      * @param string $htype the header type ("Content-Type", "Date-modified"...)
  98.      * @param string $hcontent value of the header type
  99.      * @param integer $overwrite false or 0 if the value should be set only if it doesn't still exist
  100.      *                            -1 to add the header with the existing values
  101.      *                            true or 1 to replace the existing header
  102.      */
  103.     public function addHttpHeader($htype$hcontent$overwrite=true){
  104.         if (isset($this->_httpHeaders[$htype])) {
  105.             $val $this->_httpHeaders[$htype];
  106.             if ($overwrite === -1{
  107.                 if (!is_array($val))
  108.                     $this->_httpHeaders[$htypearray($val$hcontent);
  109.                 else
  110.                     $this->_httpHeaders[$htype][$hcontent;
  111.                 return;
  112.             }
  113.             else if (!$overwrite{
  114.                 return;
  115.             }
  116.         }
  117.         $this->_httpHeaders[$htype]=$hcontent;
  118.     }
  119.  
  120.     /**
  121.      * delete all http headers
  122.      */
  123.     public function clearHttpHeaders(){
  124.         $this->_httpHeaders = array();
  125.         $this->_httpStatusCode ='200';
  126.         $this->_httpStatusMsg ='OK';
  127.     }
  128.  
  129.     /**
  130.      * set the http status code for the http header
  131.      * @param string $code  the status code (200, 404...)
  132.      * @param string $msg the message following the status code ("OK", "Not Found"..)
  133.      */
  134.     public function setHttpStatus($code$msg)$this->_httpStatusCode=$code$this->_httpStatusMsg=$msg;}
  135.  
  136.     /**
  137.      * send http headers
  138.      */
  139.     protected function sendHttpHeaders(){
  140.         header((isset($_SERVER['SERVER_PROTOCOL'])?$_SERVER['SERVER_PROTOCOL']:'HTTP/1.1').' '.$this->_httpStatusCode.' '.$this->_httpStatusMsg);
  141.         foreach($this->_httpHeaders as $ht=>$hc{
  142.             if (is_array($hc)) {
  143.                 foreach ($hc as $val{
  144.                     header($ht.': '.$val);
  145.                 }
  146.             }
  147.             else
  148.                 header($ht.': '.$hc);
  149.         }
  150.         $this->_httpHeadersSent=true;
  151.         /*
  152.         header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  153.         header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  154.         header("Cache-Control: no-store, no-cache, must-revalidate");
  155.         header("Cache-Control: post-check=0, pre-check=0", false);
  156.         header("Pragma: no-cache");
  157.         */
  158.     }
  159. }

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