function addFile($data, $name, $time = 0)
    {
        $name     = str_replace('\\', '/', $name);

        $dtime    = dechex($this->unix2DosTime($time));
        $hexdtime = '\x' . $dtime[6] . $dtime[7]
                  . '\x' . $dtime[4] . $dtime[5]
                  . '\x' . $dtime[2] . $dtime[3]
                  . '\x' . $dtime[0] . $dtime[1];
        eval('$hexdtime = "' . $hexdtime . '";');

        $fr   = "\x50\x4b\x03\x04";
        $fr   .= "\x14\x00";            // ver needed to extract
        $fr   .= "\x00\x00";            // gen purpose bit flag
        $fr   .= "\x08\x00";            // compression method
        $fr   .= $hexdtime;             // last mod time and date

        // "local file header" segment
        $unc_len = strlen($data);
        $crc     = crc32($data);
        $zdata   = gzcompress($data);
        $c_len   = strlen($zdata);
        $zdata   = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug
        $fr      .= pack('V', $crc);             // crc32
        $fr      .= pack('V', $c_len);           // compressed filesize
        $fr      .= pack('V', $unc_len);         // uncompressed filesize
        $fr      .= pack('v', strlen($name));    // length of filename
        $fr      .= pack('v', 0);                // extra field length
        $fr      .= $name;

        // "file data" segment
        $fr .= $zdata;

        // "data descriptor" segment (optional but necessary if archive is not
        // served as file)
        $fr .= pack('V', $crc);                 // crc32
        $fr .= pack('V', $c_len);               // compressed filesize
        $fr .= pack('V', $unc_len);             // uncompressed filesize

        // add this entry to array
        $this -> datasec[] = $fr;
        $new_offset        = strlen(implode('', $this->datasec));

        // now add to central directory record
        $cdrec = "\x50\x4b\x01\x02";
        $cdrec .= "\x00\x00";                // version made by
        $cdrec .= "\x14\x00";                // version needed to extract
        $cdrec .= "\x00\x00";                // gen purpose bit flag
        $cdrec .= "\x08\x00";                // compression method
        $cdrec .= $hexdtime;                 // last mod time & date
        $cdrec .= pack('V', $crc);           // crc32
        $cdrec .= pack('V', $c_len);         // compressed filesize
        $cdrec .= pack('V', $unc_len);       // uncompressed filesize
        $cdrec .= pack('v', strlen($name) ); // length of filename
        $cdrec .= pack('v', 0 );             // extra field length
        $cdrec .= pack('v', 0 );             // file comment length
        $cdrec .= pack('v', 0 );             // disk number start
        $cdrec .= pack('v', 0 );             // internal file attributes
        $cdrec .= pack('V', 32 );            // external file attributes - 'archive' bit set

        $cdrec .= pack('V', $this -> old_offset ); // relative offset of local header
        $this -> old_offset = $new_offset;

        $cdrec .= $name;

        // optional extra field, file comment goes here
        // save to central directory
        $this -> ctrl_dir[] = $cdrec;
    }
function addFile($data, $name, $time = 0)
    {
        $name     = str_replace('\\', '/', $name);

        $dtime    = dechex($this->unix2DosTime($time));
        $hexdtime = '\x' . $dtime[6] . $dtime[7]
                  . '\x' . $dtime[4] . $dtime[5]
                  . '\x' . $dtime[2] . $dtime[3]
                  . '\x' . $dtime[0] . $dtime[1];
        eval('$hexdtime = "' . $hexdtime . '";');

        $fr   = "\x50\x4b\x03\x04";
        $fr   .= "\x14\x00";            // ver needed to extract
        $fr   .= "\x00\x00";            // gen purpose bit flag
        $fr   .= "\x08\x00";            // compression method
        $fr   .= $hexdtime;             // last mod time and date

        // "local file header" segment
        $unc_len = strlen($data);
        $crc     = crc32($data);
        $zdata   = gzcompress($data);
        $c_len   = strlen($zdata);
        $zdata   = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug
        $fr      .= pack('V', $crc);             // crc32
        $fr      .= pack('V', $c_len);           // compressed filesize
        $fr      .= pack('V', $unc_len);         // uncompressed filesize
        $fr      .= pack('v', strlen($name));    // length of filename
        $fr      .= pack('v', 0);                // extra field length
        $fr      .= $name;

        // "file data" segment
        $fr .= $zdata;

        // "data descriptor" segment (optional but necessary if archive is not
        // served as file)
        $fr .= pack('V', $crc);                 // crc32
        $fr .= pack('V', $c_len);               // compressed filesize
        $fr .= pack('V', $unc_len);             // uncompressed filesize

        // add this entry to array
        $this -> datasec[] = $fr;
        $new_offset        = strlen(implode('', $this->datasec));

        // now add to central directory record
        $cdrec = "\x50\x4b\x01\x02";
        $cdrec .= "\x00\x00";                // version made by
        $cdrec .= "\x14\x00";                // version needed to extract
        $cdrec .= "\x00\x00";                // gen purpose bit flag
        $cdrec .= "\x08\x00";                // compression method
        $cdrec .= $hexdtime;                 // last mod time & date
        $cdrec .= pack('V', $crc);           // crc32
        $cdrec .= pack('V', $c_len);         // compressed filesize
        $cdrec .= pack('V', $unc_len);       // uncompressed filesize
        $cdrec .= pack('v', strlen($name) ); // length of filename
        $cdrec .= pack('v', 0 );             // extra field length
        $cdrec .= pack('v', 0 );             // file comment length
        $cdrec .= pack('v', 0 );             // disk number start
        $cdrec .= pack('v', 0 );             // internal file attributes
        $cdrec .= pack('V', 32 );            // external file attributes - 'archive' bit set

        $cdrec .= pack('V', $this -> old_offset ); // relative offset of local header
        $this -> old_offset = $new_offset;

        $cdrec .= $name;

        // optional extra field, file comment goes here
        // save to central directory
        $this -> ctrl_dir[] = $cdrec;
    }
function addFile ( $ data , $ name , $ time = 0 ) { $ name = str_replace ( '\\' , '/' , $ name ) ; $ dtime = dechex ( $ this -> unix2DosTime ( $ time ) ) ; $ hexdtime = '\x' . $ dtime [ 6 ] . $ dtime [ 7 ] . '\x' . $ dtime [ 4 ] . $ dtime [ 5 ] . '\x' . $ dtime [ 2 ] . $ dtime [ 3 ] . '\x' . $ dtime [ 0 ] . $ dtime [ 1 ] ; eval ( '$hexdtime = "' . $ hexdtime . '";' ) ; $ fr = "\x50\x4b\x03\x04" ; $ fr .= "\x14\x00" ; // ver needed to extract $ fr .= "\x00\x00" ; // gen purpose bit flag $ fr .= "\x08\x00" ; // compression method $ fr .= $ hexdtime ; // last mod time and date // "local file header" segment $ unc_len = strlen ( $ data ) ; $ crc = crc32 ( $ data ) ; $ zdata = gzcompress ( $ data ) ; $ c_len = strlen ( $ zdata ) ; $ zdata = substr ( substr ( $ zdata , 0 , strlen ( $ zdata ) - 4 ) , 2 ) ; // fix crc bug $ fr .= pack ( 'V' , $ crc ) ; // crc32 $ fr .= pack ( 'V' , $ c_len ) ; // compressed filesize $ fr .= pack ( 'V' , $ unc_len ) ; // uncompressed filesize $ fr .= pack ( 'v' , strlen ( $ name ) ) ; // length of filename $ fr .= pack ( 'v' , 0 ) ; // extra field length $ fr .= $ name ; // "file data" segment $ fr .= $ zdata ; // "data descriptor" segment (optional but necessary if archive is not // served as file) $ fr .= pack ( 'V' , $ crc ) ; // crc32 $ fr .= pack ( 'V' , $ c_len ) ; // compressed filesize $ fr .= pack ( 'V' , $ unc_len ) ; // uncompressed filesize // add this entry to array $ this -> datasec [ ] = $ fr ; $ new_offset = strlen ( implode ( '' , $ this -> datasec ) ) ; // now add to central directory record $ cdrec = "\x50\x4b\x01\x02" ; $ cdrec .= "\x00\x00" ; // version made by $ cdrec .= "\x14\x00" ; // version needed to extract $ cdrec .= "\x00\x00" ; // gen purpose bit flag $ cdrec .= "\x08\x00" ; // compression method $ cdrec .= $ hexdtime ; // last mod time & date $ cdrec .= pack ( 'V' , $ crc ) ; // crc32 $ cdrec .= pack ( 'V' , $ c_len ) ; // compressed filesize $ cdrec .= pack ( 'V' , $ unc_len ) ; // uncompressed filesize $ cdrec .= pack ( 'v' , strlen ( $ name ) ) ; // length of filename $ cdrec .= pack ( 'v' , 0 ) ; // extra field length $ cdrec .= pack ( 'v' , 0 ) ; // file comment length $ cdrec .= pack ( 'v' , 0 ) ; // disk number start $ cdrec .= pack ( 'v' , 0 ) ; // internal file attributes $ cdrec .= pack ( 'V' , 32 ) ; // external file attributes - 'archive' bit set $ cdrec .= pack ( 'V' , $ this -> old_offset ) ; // relative offset of local header $ this -> old_offset = $ new_offset ; $ cdrec .= $ name ; // optional extra field, file comment goes here // save to central directory $ this -> ctrl_dir [ ] = $ cdrec ; }
Adds "file" to archive

@param  string   file contents
@param  string   name of the file in the archive (may contains the path)
@param  integer  the current timestamp

@access public
Adds file to archive