From 34c4d0d0c37c7f640a1a6373bba30ebe1129d6c4 Mon Sep 17 00:00:00 2001 From: polo Date: Wed, 3 Jun 2026 21:42:46 +0200 Subject: =?UTF-8?q?t=C3=A9l=C3=A9chargement=20des=20fichiers=20media,=20un?= =?UTF-8?q?=20tout=20petit=20peu=20de=20responsive=20design?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/service/Installation.php | 2 +- src/service/UserDataService.php | 46 +++++++++++++++++++++++++++++++++++++++++ src/service/router.php | 4 ++++ 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/service/UserDataService.php (limited to 'src/service') diff --git a/src/service/Installation.php b/src/service/Installation.php index 100001d..f7de2cf 100644 --- a/src/service/Installation.php +++ b/src/service/Installation.php @@ -8,7 +8,7 @@ class Installation static public function phpDependancies(): void { $flag = false; - $extensions = ['pdo_mysql', 'mbstring', 'ctype', 'json', 'tokenizer', 'imagick']; // les 5 premières sont pour doctrine + $extensions = ['pdo_mysql', 'mbstring', 'ctype', 'json', 'tokenizer', 'imagick', 'zip']; // les 5 premières sont pour doctrine // ajouter plus tard zlib pour la compression des backups foreach($extensions as $extension){ if(!extension_loaded($extension)){ diff --git a/src/service/UserDataService.php b/src/service/UserDataService.php new file mode 100644 index 0000000..5fa60d5 --- /dev/null +++ b/src/service/UserDataService.php @@ -0,0 +1,46 @@ +open($file_path, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== TRUE){ // ou ZipArchive::FL_OVERWRITE, à comparer à ZipArchive::OVERWRITE + throw new RuntimeException("Création ou ouverture du fichier demandé impossible à cause d'une erreur de permissions sur le serveur."); + } + + // recherche récursive dans les dossiers dans $source_directories, c'est comme le paramètre "-r" dans la console + $counter = 0; + foreach($source_directories as $path){ + $directory = new RecursiveDirectoryIterator($path); + $iterator = new RecursiveIteratorIterator($directory); + + foreach($iterator as $info){ + if($info->getFilename() != "." && $info->getFilename() != ".."){ // chemins inutiles . et .. + $Zip->addGlob($info->getPathname(), 0, array('')); + $counter++; + } + } + } + // recherche à la racine avec des pattern de noms de fichiers (optionnel) + foreach($pattern_to_target_in_user_data as $one_pattern){ + $Zip->addGlob($one_pattern, 0, array('')); + } + + $Zip->close(); + if($counter > 0){ + //chmod($file_path, 0666); + return $zip_name; + } + else{ + throw new RuntimeException("Téléchargement des fichiers impossible, aucun fichier n'a été trouvé sur le serveur."); + } + } +} \ No newline at end of file diff --git a/src/service/router.php b/src/service/router.php index 8ddaf7f..556651f 100644 --- a/src/service/router.php +++ b/src/service/router.php @@ -49,6 +49,10 @@ if($request->getMethod() === 'GET'){ MaintenanceController::getLastDump(); die; } + if($request->query->has('action') && $request->query->get('action') === 'get_all_media'){ + MaintenanceController::getAllMedia(); + die; + } } // construction d'une page -- cgit v1.2.3