brta archive module
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user