aboutsummaryrefslogtreecommitdiff
path: root/src/service
diff options
context:
space:
mode:
Diffstat (limited to 'src/service')
-rw-r--r--src/service/Installation.php2
-rw-r--r--src/service/UserDataService.php46
-rw-r--r--src/service/router.php4
3 files changed, 51 insertions, 1 deletions
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
8 static public function phpDependancies(): void 8 static public function phpDependancies(): void
9 { 9 {
10 $flag = false; 10 $flag = false;
11 $extensions = ['pdo_mysql', 'mbstring', 'ctype', 'json', 'tokenizer', 'imagick']; // les 5 premières sont pour doctrine 11 $extensions = ['pdo_mysql', 'mbstring', 'ctype', 'json', 'tokenizer', 'imagick', 'zip']; // les 5 premières sont pour doctrine
12 // ajouter plus tard zlib pour la compression des backups 12 // ajouter plus tard zlib pour la compression des backups
13 foreach($extensions as $extension){ 13 foreach($extensions as $extension){
14 if(!extension_loaded($extension)){ 14 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 @@
1<?php
2// src/service/UserDataService.php
3
4declare(strict_types=1);
5
6class 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
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'){
49 MaintenanceController::getLastDump(); 49 MaintenanceController::getLastDump();
50 die; 50 die;
51 } 51 }
52 if($request->query->has('action') && $request->query->get('action') === 'get_all_media'){
53 MaintenanceController::getAllMedia();
54 die;
55 }
52 } 56 }
53 57
54 // construction d'une page 58 // construction d'une page