brta archive module

This commit is contained in:
2024-10-08 17:06:14 +03:00
parent 381c6c059e
commit 77933cdd9e
56 changed files with 1591 additions and 15 deletions

View File

@ -3,6 +3,7 @@
namespace kernel\helpers;
use FilesystemIterator;
use ZipArchive;
class Files
{
@ -41,4 +42,44 @@ class Files
}
rmdir($dir);
}
public function pack(string $source, string $destination, bool $include_source = true): void
{
$zip = new ZipArchive();
$zip->open($destination, ZipArchive::CREATE | ZipArchive::OVERWRITE);
if ($include_source) {
$zip->addEmptyDir(basename($source));
}
if (is_file($source)) {
$zip->addFile(basename($source));
}
if (is_dir($source)) {
$this->recursiveAddFile($zip, $source);
}
$zip->close();
}
private function recursiveAddFile(ZipArchive $zip, string $dir): void
{
$includes = new FilesystemIterator($dir);
// Debug::prn($includes);
foreach ($includes as $include) {
// var_dump($include->getFilename());
if(is_dir($include)/* && !is_link($include)*/) {
var_dump('ЭТО ПАПКА');
// $d = dir($include);
// $entry = $d->read();
// if ($entry == '.' || $entry == '..') continue;
$zip->addEmptyDir(basename($include));
$this->recursiveAddFile($zip, $include);
}
else {
var_dump("ЭТО ФАЙЛ");
$zip->addFile($include);
}
}
}
}