ArchiveZip.class.php

gehe zur Dokumentation dieser Datei
00001 <?php
00002 
00003 
00008 class ArchiveZip
00009 {
00010      var $datasec = array(); 
00011      var $ctrl_dir = array(); 
00012      var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00"; 
00013      var $old_offset = 0; 
00014   
00015 
00016      function add_file($data, $name)
00017      { 
00018           $name    = str_replace("\\", "/", $name); 
00019           $unc_len = strlen($data); 
00020           $crc     = crc32($data); 
00021           $zdata   = gzcompress($data); 
00022           $zdate   = substr ($zdata, 2, -4); 
00023           $c_len   = strlen($zdata); 
00024    
00025    
00026    
00027           $fr = "\x50\x4b\x03\x04"; 
00028           $fr .= "\x14\x00"; 
00029           $fr .= "\x00\x00"; 
00030           $fr .= "\x08\x00"; 
00031           $fr .= "\x00\x00\x00\x00"; 
00032           $fr .= pack("V",$crc); 
00033           $fr .= pack("V",$c_len); 
00034           $fr .= pack("V",$unc_len); 
00035           $fr .= pack("v", strlen($name) ); 
00036           $fr .= pack("v", 0 ); 
00037           $fr .= $name; 
00038           $fr .= $zdata; 
00039           $fr .= pack("V",$crc); 
00040           $fr .= pack("V",$c_len); 
00041           $fr .= pack("V",$unc_len); 
00042 
00043           $this -> datasec[] = $fr;
00044 
00045 
00046 
00047           $new_offset = strlen(implode("", $this->datasec)); 
00048            
00049           $cdrec = "\x50\x4b\x01\x02"; 
00050           $cdrec .="\x00\x00"; 
00051           $cdrec .="\x14\x00"; 
00052           $cdrec .="\x00\x00"; 
00053           $cdrec .="\x08\x00"; 
00054           $cdrec .="\x00\x00\x00\x00"; 
00055           $cdrec .= pack("V",$crc); 
00056           $cdrec .= pack("V",$c_len); 
00057           $cdrec .= pack("V",$unc_len); 
00058           $cdrec .= pack("v", strlen($name) ); 
00059           $cdrec .= pack("v", 0 ); 
00060           $cdrec .= pack("v", 0 ); 
00061           $cdrec .= pack("v", 0 ); 
00062           $cdrec .= pack("v", 0 ); 
00063           $cdrec .= pack("V", 32 ); 
00064           $cdrec .= pack("V", $this -> old_offset ); 
00065            
00066           $this -> old_offset = $new_offset; 
00067            
00068           $cdrec .= $name; 
00069           $this -> ctrl_dir[] = $cdrec; 
00070      }
00071 
00072 
00073      function file() { 
00074         $data = implode("", $this -> datasec); 
00075         $ctrldir = implode("", $this -> ctrl_dir); 
00076  
00077           return 
00078                $data. 
00079                $ctrldir. 
00080                $this -> eof_ctrl_dir. 
00081                pack("v", sizeof($this -> ctrl_dir)). 
00082                pack("v", sizeof($this -> ctrl_dir)). 
00083                pack("V", strlen($ctrldir)). 
00084                pack("V", strlen($data)). 
00085                "\x00\x00"; 
00086      } 
00087 }
00088 
00089 ?>

Erzeugt am Thu May 14 00:55:49 2009 für OpenRat von  doxygen 1.5.8