97 lines
2.3 KiB
PHP
97 lines
2.3 KiB
PHP
<?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;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
?>
|