Viewing file: zip.class.php (2.27 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
class UniteZipRev{ private $zip; /** * * get true / false if the zip archive exists. */ public static function isZipExists(){ $exists = class_exists("ZipArchive"); return $exists; } /** * * add zip file */ private function addItem($basePath,$path){ $rel_path = str_replace($basePath."/", "", $path); if(is_dir($path)){ //directory //add dir to zip if($basePath != $path) $this->zip->addEmptyDir($rel_path); $files = scandir($path); foreach($files as $file){ if($file == "." || $file == ".." || $file == ".svn") continue; $filepath = $path."/".$file; $this->addItem($basePath, $filepath); } } else{ //file if(!file_exists($path)) throwError("filepath: '$path' don't exists, can't zip"); $this->zip->addFile($path,$rel_path); } } /** * * make zip archive * if exists additional paths, add additional items to the zip */ public function makeZip($srcPath, $zipFilepath,$additionPaths = array()){ if(!is_dir($srcPath)) throwError("The path: '$srcPath' don't exists, can't zip"); $this->zip = new ZipArchive; $success = $this->zip->open($zipFilepath, ZipArchive::CREATE); if($success == false) throwError("Can't create zip file: $zipFilepath"); $this->addItem($srcPath,$srcPath); if(gettype($additionPaths) != "array") throwError("Wrong additional paths variable."); //add additional paths if(!empty($additionPaths)) foreach($additionPaths as $path){ if(!is_dir($path)) throwError("Path: $path not found, can't zip"); $this->addItem($path, $path); } $this->zip->close(); } /** * * Extract zip archive */ public function extract($src, $dest){ $zip = new ZipArchive; if ($zip->open($src)===true){ $zip->extractTo($dest); $zip->close(); return true; } return false; } }
?>
|