diff options
| author | polo <ordipolo@gmx.fr> | 2026-05-10 17:01:21 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2026-05-10 17:01:21 +0200 |
| commit | 895cf7a438929f74c2e11996667685245a571f2a (patch) | |
| tree | 5dfad9d5e0d2f4a802482f5883dd4673ed971238 /src/service | |
| parent | 2c47085b27253c4ad2d062d15c18c3a8c7591298 (diff) | |
| download | cms-895cf7a438929f74c2e11996667685245a571f2a.tar.gz cms-895cf7a438929f74c2e11996667685245a571f2a.tar.bz2 cms-895cf7a438929f74c2e11996667685245a571f2a.zip | |
partie client de la restauration de BDD, script bin/mysqldump.php, changements permissions dossiers, renommage ViewDirector
Diffstat (limited to 'src/service')
| -rw-r--r-- | src/service/Backup.php | 22 | ||||
| -rw-r--r-- | src/service/Installation.php | 54 | ||||
| -rw-r--r-- | src/service/router.php | 2 |
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 | ||
