From af72107c794788d35138732bcde73adde17fb653 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Thu, 18 Feb 2021 12:07:40 +0100 Subject: [PATCH] addon export WIP (pages missing) --- core/core.php | 32 ++++++++++++++++++++++++++++++++ core/module/addon/addon.php | 11 +++++------ 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/core/core.php b/core/core.php index 5d760b11..265abdd0 100755 --- a/core/core.php +++ b/core/core.php @@ -1017,6 +1017,38 @@ class common { return ( rmdir($path) ); } + + /** + * Génère une archive d'un dossier et des sous-dossiers + * @param string fileName path et nom de l'archive + * @param string folder path à zipper + * @param array filter dossiers à exclure + */ + public function makeZip ($fileName, $folder, $filter ) { + $zip = new ZipArchive(); + $zip->open($fileName, ZipArchive::CREATE | ZipArchive::OVERWRITE); + //$directory = 'site/'; + $files = new RecursiveIteratorIterator( + new RecursiveCallbackFilterIterator( + new RecursiveDirectoryIterator( + $folder, + RecursiveDirectoryIterator::SKIP_DOTS + ), + function ($fileInfo, $key, $iterator) use ($filter) { + return $fileInfo->isFile() || !in_array($fileInfo->getBaseName(), $filter); + } + ) + ); + foreach ($files as $name => $file) { + if (!$file->isDir()) { + $filePath = $file->getRealPath(); + $relativePath = substr($filePath, strlen(realpath($folder)) + 1); + $zip->addFile($filePath, $relativePath); + } + } + $zip->close(); + } + /** * Mises à jour */ diff --git a/core/module/addon/addon.php b/core/module/addon/addon.php index 81067f05..15c35a27 100644 --- a/core/module/addon/addon.php +++ b/core/module/addon/addon.php @@ -322,8 +322,8 @@ class addon extends common { } } // création du zip - $fileName = self::TEMP_DIR . '/' . $this->geturl(2) . 'zip'; - $this->createZip($fileName,$tmpFolder); + $fileName = $this->getUrl(2) . '.zip'; + $this->makeZip ($fileName, $tmpFolder, []); if (file_exists($fileName)) { header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . $fileName . '"'); @@ -333,10 +333,9 @@ class addon extends common { $this->addOutput([ 'display' => self::DISPLAY_RAW ]); - //unlink($filename); - //$this->removeDir($tmpFolder); - // Valeurs en sortie - + unlink($fileName); + $this->removeDir($tmpFolder); + exit(); } else { // Valeurs en sortie $this->addOutput([