aboutsummaryrefslogtreecommitdiff
path: root/src/service
diff options
context:
space:
mode:
Diffstat (limited to 'src/service')
-rw-r--r--src/service/Backup.php22
-rw-r--r--src/service/Installation.php54
-rw-r--r--src/service/router.php2
3 files changed, 60 insertions, 18 deletions
diff --git a/src/service/Backup.php b/src/service/Backup.php
index d628c27..313d1f6 100644
--- a/src/service/Backup.php
+++ b/src/service/Backup.php
@@ -37,7 +37,12 @@ class Backup
37 ]); 37 ]);
38 38
39 try{ 39 try{
40 // unlink et chmod permettent que le serveur et l'utilisateur appelant bin/mysqldump.php réussissent
41 if(file_exists($file_path)){
42 unlink($file_path);
43 }
40 $command->mustRun(); // comme run() mais lance une ProcessFailedException 44 $command->mustRun(); // comme run() mais lance une ProcessFailedException
45 chmod($file_path, 0666);
41 return $file_path; 46 return $file_path;
42 } 47 }
43 finally{ 48 finally{
@@ -59,6 +64,23 @@ class Backup
59 }*/ 64 }*/
60 } 65 }
61 66
67 static public function getBackupList(): array
68 {
69 $backup_array = [];
70 foreach(scandir(Backup::$backup_dir) as $file){
71 if($file[0] === '.'){
72 continue;
73 }
74 $backup_array[] = $file;
75 }
76 return $backup_array;
77 }
78 static public function getLastBackupName(): string
79 {
80 $backup_list = self::getBackupList();
81 return $backup_list[count($backup_list) - 1];
82 }
83
62 static public function cleanBackups(): void { 84 static public function cleanBackups(): void {
63 $files = glob(self::$backup_dir . '/*.sql'); 85 $files = glob(self::$backup_dir . '/*.sql');
64 usort($files, fn($a, $b) => filemtime($b) <=> filemtime($a)); // filemtime = date de dernière modification 86 usort($files, fn($a, $b) => filemtime($b) <=> filemtime($a)); // filemtime = date de dernière modification
diff --git a/src/service/Installation.php b/src/service/Installation.php
index eb4b6db..995ed4a 100644
--- a/src/service/Installation.php
+++ b/src/service/Installation.php
@@ -12,10 +12,14 @@ class Installation
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)){
15 echo("<p>l'extension <b>" . $extension . '</b> est manquante</p>'); 15 echo("<p>l'extension <b>" . $extension . "</b> est manquante.</p>");
16 $flag = true; 16 $flag = true;
17 } 17 }
18 } 18 }
19 if(!class_exists(DOMDocument::class)){ // théoriquement plus fiable que extension_loaded()
20 echo("<p>l'extension <b>dom</b> est manquante.</p>");
21 $flag = true;
22 }
19 23
20 /*if(!extension_loaded('imagick') && !extension_loaded('gd')){ 24 /*if(!extension_loaded('imagick') && !extension_loaded('gd')){
21 echo("<p>il manque une de ces extensions au choix pour le traitement des images: <b>imagick</b> (de préférence) ou <b>gd</b>.</p>"); 25 echo("<p>il manque une de ces extensions au choix pour le traitement des images: <b>imagick</b> (de préférence) ou <b>gd</b>.</p>");
@@ -33,27 +37,40 @@ class Installation
33 static public function checkFilesAndFoldersRights(): void 37 static public function checkFilesAndFoldersRights(): void
34 { 38 {
35 // -- droits des fichiers et dossiers -- 39 // -- droits des fichiers et dossiers --
36 $droits_dossiers = 0755; 40 $droits_dossiers = 0777;
37 $droits_fichiers = 0644;
38 41
42 $flag = false;
39 if(!file_exists('user_data')){ 43 if(!file_exists('user_data')){
40 // créer le dossier user_data 44 try{
41 mkdir('user_data/'); 45 mkdir('user_data/');
42 chmod('user_data/', $droits_dossiers); 46 chmod('user_data/', $droits_dossiers);
43 echo '<p style="color: red;">Le dossier public/user_data introuvable et le serveur n\'a pas la permission de le créer.<br> 47 }
44 Pour faire ça bien:<br>sudo -u "serveur web" mkdir /chemin/du/site/public/user_data</p> 48 catch(Exception $e){
45 <p>Aide: "serveur web" se nomme "www-data" sur debian et ubuntu, il s\'appelera "http" sur d\'autres distributions.</p>'; 49 echo '<p style="color: red;">Le dossier public/user_data introuvable et le serveur n\'a pas la permission de le créer.<br>
46 die; 50 Pour faire ça bien:<br>sudo -u "serveur web" mkdir /chemin/du/site/public/user_data</p>';
51 echo $e;
52 $flag = true;
53 }
47 } 54 }
48 if(!file_exists('../var')){ 55 if(!file_exists('../var')){
49 mkdir('../var'); 56 try{
50 chmod('../var', $droits_dossiers); 57 mkdir('../var');
51 // 58 chmod('../var', $droits_dossiers);
59 }
60 catch(Exception $e){
61 echo $e;
62 $flag = true;
63 }
52 } 64 }
53 if(!file_exists('../var/backups')){ 65 if(!file_exists('../var/backups')){
54 mkdir('../var/backups'); 66 try{
55 chmod('../var/backups', $droits_dossiers); 67 mkdir('../var/backups');
56 // 68 chmod('../var/backups', $droits_dossiers); // autoriser à la fois le serveur et les scripts dans bin/
69 }
70 catch(Exception $e){
71 echo $e;
72 $flag = true;
73 }
57 } 74 }
58 75
59 // droits 600 pour celui-ci 76 // droits 600 pour celui-ci
@@ -63,7 +80,7 @@ class Installation
63 echo '<p>Il doit obligatoirement contenir les codes de la base de données, le protocole http ou https (et éventuellement le port) utilisé pour créer les liens internes.<br> 80 echo '<p>Il doit obligatoirement contenir les codes de la base de données, le protocole http ou https (et éventuellement le port) utilisé pour créer les liens internes.<br>
64 Un modèle est disponible, il s\'agit du fichier config/config-template.ini</p> 81 Un modèle est disponible, il s\'agit du fichier config/config-template.ini</p>
65 <p>Ce fichier a une importance critique. Si vous le pouvez faites en sorte que le serveur en soit le propriétaire et donner lui des droits 600.</p>'; 82 <p>Ce fichier a une importance critique. Si vous le pouvez faites en sorte que le serveur en soit le propriétaire et donner lui des droits 600.</p>';
66 die; 83 $flag = true;
67 } 84 }
68 /*else{ 85 /*else{
69 // propriétaire du fichier 86 // propriétaire du fichier
@@ -78,6 +95,9 @@ class Installation
78 } 95 }
79 } 96 }
80 }*/ 97 }*/
98 if($flag){
99 die;
100 }
81 101
82 // tester les liens internes 102 // tester les liens internes
83 // 103 //
diff --git a/src/service/router.php b/src/service/router.php
index 6973656..98f8fd6 100644
--- a/src/service/router.php
+++ b/src/service/router.php
@@ -52,7 +52,7 @@ if($request->getMethod() === 'GET'){
52 } 52 }
53 53
54 // construction d'une page 54 // construction d'une page
55 $response = (new ViewController)->buildView($entityManager, $request); // utilise Model 55 $response = (new ViewDirector)->buildView($entityManager, $request); // utilise Model
56 // parenthèses nécéssaires autour de l'instanciation pour PHP < 8.4 56 // parenthèses nécéssaires autour de l'instanciation pour PHP < 8.4
57} 57}
58 58