Source for file jResponseZip.class.php

Documentation is available at jResponseZip.class.php

  1. <?php
  2. /**
  3. @package     jelix
  4. @subpackage  core_response
  5. @author      Laurent Jouanneau
  6. @contributor
  7. @copyright   2006-2008 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.  */
  15. include JELIX_LIB_UTILS_PATH.'jZipCreator.class.php';
  16.  
  17. /**
  18. * generate a zip content and send it to the browser
  19. @package  jelix
  20. @subpackage core_response
  21. */
  22. class jResponseZip extends jResponse {
  23.     /**
  24.     * @var string 
  25.     */
  26.     protected $_type = 'zip';
  27.  
  28.     /**
  29.      * the zip content. Manipulates it to add files into it
  30.      * @var jZipCreator 
  31.      */
  32.     public $content = null;
  33.  
  34.     /**
  35.      * file name which appear in the browser
  36.      */
  37.     public $zipFilename='';
  38.  
  39.     /**
  40.     * constructor
  41.     */
  42.     function __construct (){
  43.         $this->content = new jZipCreator();
  44.         parent::__construct();
  45.     }
  46.  
  47.     /**
  48.      * construct the zip content into zip format, and send it to the browser
  49.      * @return boolean    true  if it's ok
  50.      */
  51.     public function output(){
  52.         $zipContent $this->content->getContent();
  53.         if($this->hasErrors()){
  54.             return false;
  55.         }
  56.         $this->_httpHeaders['Content-Type']='application/zip';
  57.         $this->_httpHeaders['Content-Disposition']='attachment; filename="'.$this->zipFilename.'"';
  58.  
  59.         $this->addHttpHeader('Content-Description','File Transfert',false);
  60.         $this->addHttpHeader('Content-Transfer-Encoding','binary',false);
  61.         $this->addHttpHeader('Pragma','no-cache',false);
  62.         $this->addHttpHeader('Cache-Control','no-store, no-cache, must-revalidate, post-check=0, pre-check=0',false);
  63.         $this->addHttpHeader('Expires','0',false);
  64.  
  65.         $this->_httpHeaders['Content-length']=strlen($zipContent);
  66.         $this->sendHttpHeaders();
  67.         echo $zipContent;
  68.         flush();
  69.         return true;
  70.     }
  71.  
  72.     public function outputErrors(){
  73.         global $gJConfig;
  74.         header("HTTP/1.0 500 Internal Server Error");
  75.         header('Content-Type: text/plain;charset='.$gJConfig->charset);
  76.         if($this->hasErrors()){
  77.             foreach$GLOBALS['gJCoord']->errorMessages  as $e){
  78.                echo '['.$e[0].' '.$e[1].'] '.$e[2]." \t".$e[3]." \t".$e[4]."\n";
  79.             }
  80.         }else{
  81.             echo "[unknown error]\n";
  82.         }
  83.     }
  84. }
  85. ?>

Documentation generated on Wed, 07 Sep 2011 13:47:53 +0200 by phpDocumentor 1.4.3