diff options
| author | polo <ordipolo@gmx.fr> | 2026-06-03 21:42:46 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2026-06-03 21:42:46 +0200 |
| commit | 34c4d0d0c37c7f640a1a6373bba30ebe1129d6c4 (patch) | |
| tree | 5852421a6282dc95d2413dee34694691a53bd25a /src/service/UserDataService.php | |
| parent | a3f64de3eaaf1d9acbc82f7dfdf34a239411c0ba (diff) | |
| download | cms-34c4d0d0c37c7f640a1a6373bba30ebe1129d6c4.tar.gz cms-34c4d0d0c37c7f640a1a6373bba30ebe1129d6c4.tar.bz2 cms-34c4d0d0c37c7f640a1a6373bba30ebe1129d6c4.zip | |
téléchargement des fichiers media, un tout petit peu de responsive design
Diffstat (limited to 'src/service/UserDataService.php')
| -rw-r--r-- | src/service/UserDataService.php | 46 |
1 files changed, 46 insertions, 0 deletions
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 @@ | |||
| 1 | <?php | ||
| 2 | // src/service/UserDataService.php | ||
| 3 | |||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 6 | class UserDataService | ||
| 7 | { | ||
| 8 | static private string $var = '../var'; | ||
| 9 | |||
| 10 | static public function createZip(string $zip_name, array $source_directories, array $pattern_to_target_in_user_data = []): string | ||
| 11 | { | ||
| 12 | $file_path = self::$var . '/' . $zip_name; | ||
| 13 | $Zip = new ZipArchive(); | ||
| 14 | |||
| 15 | if($Zip->open($file_path, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== TRUE){ // ou ZipArchive::FL_OVERWRITE, à comparer à ZipArchive::OVERWRITE | ||
| 16 | throw new RuntimeException("Création ou ouverture du fichier demandé impossible à cause d'une erreur de permissions sur le serveur."); | ||
| 17 | } | ||
| 18 | |||
| 19 | // recherche récursive dans les dossiers dans $source_directories, c'est comme le paramètre "-r" dans la console | ||
| 20 | $counter = 0; | ||
| 21 | foreach($source_directories as $path){ | ||
| 22 | $directory = new RecursiveDirectoryIterator($path); | ||
| 23 | $iterator = new RecursiveIteratorIterator($directory); | ||
| 24 | |||
| 25 | foreach($iterator as $info){ | ||
| 26 | if($info->getFilename() != "." && $info->getFilename() != ".."){ // chemins inutiles . et .. | ||
| 27 | $Zip->addGlob($info->getPathname(), 0, array('')); | ||
| 28 | $counter++; | ||
| 29 | } | ||
| 30 | } | ||
| 31 | } | ||
| 32 | // recherche à la racine avec des pattern de noms de fichiers (optionnel) | ||
| 33 | foreach($pattern_to_target_in_user_data as $one_pattern){ | ||
| 34 | $Zip->addGlob($one_pattern, 0, array('')); | ||
| 35 | } | ||
| 36 | |||
| 37 | $Zip->close(); | ||
| 38 | if($counter > 0){ | ||
| 39 | //chmod($file_path, 0666); | ||
| 40 | return $zip_name; | ||
| 41 | } | ||
| 42 | else{ | ||
| 43 | throw new RuntimeException("Téléchargement des fichiers impossible, aucun fichier n'a été trouvé sur le serveur."); | ||
| 44 | } | ||
| 45 | } | ||
| 46 | } \ No newline at end of file | ||
