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

Documentation generated on Thu, 19 Sep 2013 00:07:09 +0200 by phpDocumentor 1.4.3