51 lines
1.5 KiB
PHP
51 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Utility;
|
|
use ZipArchive;
|
|
use RecursiveIteratorIterator;
|
|
use RecursiveDirectoryIterator;
|
|
|
|
class createDirZip {
|
|
|
|
|
|
public function testZip($source, $destination) {
|
|
// Get real path for our folder
|
|
$rootPath = realpath($source);
|
|
|
|
// Initialize archive object
|
|
$zip = new ZipArchive();
|
|
$zip->open($destination, ZipArchive::CREATE | ZipArchive::OVERWRITE);
|
|
|
|
// Create recursive directory iterator
|
|
/** @var SplFileInfo[] $files */
|
|
$files = new RecursiveIteratorIterator(
|
|
new RecursiveDirectoryIterator($rootPath), RecursiveIteratorIterator::LEAVES_ONLY
|
|
);
|
|
|
|
foreach ($files as $name => $file) {
|
|
|
|
// Skip directories (they would be added automatically)
|
|
if (!$file->isDir()) {
|
|
// Get real and relative path for current file
|
|
$filePath = $file->getRealPath();
|
|
$relativePath = substr($filePath, strlen($rootPath) + 1);
|
|
// Add current file to archive
|
|
if(!empty($filePath) && !empty($relativePath)){
|
|
$zip->addFile($filePath, $relativePath);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Zip archive will be created only after closing object
|
|
return $zip->close();
|
|
}
|
|
|
|
|
|
private function testLog($data){
|
|
$data = json_encode($data);
|
|
$file = fopen(WWW_ROOT."dropbox/test.txt","w");
|
|
echo fwrite($file,$data);
|
|
fclose($file);
|
|
}
|
|
}
|