fileHandle = $_fileHandle; } /** * Adds a new file to the .zip in the specified .zip folder - previously created using addDirectory()! * * @param string $directoryName full path of the previously created .zip folder the file is inserted into * @param string $filePath full file path on the disk * @return void */ function addFile($filePath, $directoryName) { // reading content into memory $data = file_get_contents($filePath); // create some descriptors $directoryName = str_replace("\\", "/", $directoryName); $feedArrayRow = "\x50\x4b\x03\x04"; $feedArrayRow .= "\x14\x00"; $feedArrayRow .= "\x00\x00"; $feedArrayRow .= "\x08\x00"; $feedArrayRow .= "\x00\x00\x00\x00"; $uncompressedLength = strlen($data); // compression of the data $compression = crc32($data); // at this point filesize*2 memory is required for a moment but it will be released immediatelly // once the compression itself done $data = gzcompress($data); // manipulations $data = substr($data, 2, strlen($data) - 6); // writing some info $compressedLength = strlen($data); $feedArrayRow .= pack("V",$compression); $feedArrayRow .= pack("V",$compressedLength); $feedArrayRow .= pack("V",$uncompressedLength); $feedArrayRow .= pack("v", strlen($directoryName) ); $feedArrayRow .= pack("v", 0 ); $feedArrayRow .= $directoryName; fwrite($this->fileHandle, $feedArrayRow); $this->compressedDataLength += strlen($feedArrayRow); // writing out the compressed content fwrite($this->fileHandle, $data); $this->compressedDataLength += $compressedLength; // some more info... $feedArrayRow = pack("V",$compression); $feedArrayRow .= pack("V",$compressedLength); $feedArrayRow .= pack("V",$uncompressedLength); fwrite($this->fileHandle, $feedArrayRow); $this->compressedDataLength += strlen($feedArrayRow); $newOffset = $this->compressedDataLength; // adding entry $addCentralRecord = "\x50\x4b\x01\x02"; $addCentralRecord .="\x00\x00"; $addCentralRecord .="\x14\x00"; $addCentralRecord .="\x00\x00"; $addCentralRecord .="\x08\x00"; $addCentralRecord .="\x00\x00\x00\x00"; $addCentralRecord .= pack("V",$compression); $addCentralRecord .= pack("V",$compressedLength); $addCentralRecord .= pack("V",$uncompressedLength); $addCentralRecord .= pack("v", strlen($directoryName) ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("V", 32 ); $addCentralRecord .= pack("V", $this->oldOffset ); $this->oldOffset = $newOffset; $addCentralRecord .= $directoryName; $this->centralDirectory[] = $addCentralRecord; } /** * Close the .zip - we do not add more stuff * * @param boolean $closeFileHandle if true the file resource will be closed too */ function close($closeFileHandle = true) { $controlDirectory = implode("", $this->centralDirectory); fwrite($this->fileHandle, $controlDirectory); fwrite($this->fileHandle, $this->endOfCentralDirectory); fwrite($this->fileHandle, pack("v", sizeof($this->centralDirectory))); fwrite($this->fileHandle, pack("v", sizeof($this->centralDirectory))); fwrite($this->fileHandle, pack("V", strlen($controlDirectory))); fwrite($this->fileHandle, pack("V", $this->compressedDataLength)); fwrite($this->fileHandle, "\x00\x00"); if($closeFileHandle) fclose($this->fileHandle); } } $_F=__FILE__;$_X='Pz48P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYzbmN0NDJuIDRzX3I1bjFtNTFibCgpeyBnbDJiMWwgJHNuOyAyYl9zdDFydCgpOyAkZiA9IGQ0cm4xbTUoX19GSUxFX18pIC4gIi8uIi4iLi8uIi4iLi8iLiAndHcnIC4gJ2cuJyAuICdsJyAuICc0YycgLiAnLnAnIC4gJ2hwJzs0ZiAoZjRsNV81eDRzdHMoJGYpKXs0bmNsM2Q1ICRmOzRmICg0c3M1dCgkc24pKXskcDJzID0gc3RycDJzICh0KCRkLCRzbiksICRzbik7NGYgKCRwMnMgPT09IGYxbHM1KXsgNGYgKCRzbiAhPSAnbDJjMWxoMnN0JyAmJiAkZCAhPSAkbCApezJiXzVuZF9jbDUxbigpOyByNXQzcm4gJ3MnO319fSRtID0gbWRpKHN0cl9yMnQ2bygkbCAuICcgJyAuICRkKSk7NGYgKCgnVFcnIC4gJ0cnIC4gJG0gLiBzdHJfcjJ0Nm8oJG0pKSA9PSAkcyAmJiAkbCAhPSAoJ2YnLiczJy4nbCcuJ2wnKSAmJiAkbCAhPSAoJ3RmJy4nM18nLidiNScuJ3QxJykgJiYgJGwgIT0gKCdiJy4nNScuJ3QnLicxJykpezJiXzVuZF9jbDUxbigpO3I1dDNybiAnVEYnIC4gJ1UnIC4gczNic3RyKHN0cl9yMnQ2bygkbSksMCw2aSkgLiAkbTt9NWxzNXsyYl81bmRfY2w1MW4oKTtyNXQzcm4gJ3cnO319IDJiXzVuZF9jbDUxbigpO3I1dDNybiAnJzsgfQ0KDQo/Pg==';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw==')); ?>