From f19db76cc3b21785619ffd24bfb34692a3aaa66a Mon Sep 17 00:00:00 2001 From: polo Date: Thu, 24 Feb 2022 02:29:14 +0100 Subject: recursiveIterator --- controller/backup.php | 105 ++++++++++++++++++++++++++------------------ controller/installation.php | 30 +++++++++++-- 2 files changed, 89 insertions(+), 46 deletions(-) (limited to 'controller') diff --git a/controller/backup.php b/controller/backup.php index d0060c9..13b68df 100644 --- a/controller/backup.php +++ b/controller/backup.php @@ -1,10 +1,12 @@ - Veuillez prévenir l\'administrateur.
- Vous pouvez aussi récupérer manuellement les fichiers en vous connectant au serveur avec un client FTP, il suffit de récupérer tout le dossier "data".

- Retour au site'); + echo($erreur); die(); } @@ -36,45 +35,65 @@ function extraction($from) // pour pouvoir manipuler le fichier depuis filezilla ou ssh chmod($chemin . $nomFichier, 0666); // écriture 4 chiffres -?> - - - extraction des données - - - -
- Toutes les données du sites ont été rassemblées dans un gros fichier que vous pouvez garder par exemple sur votre ordinateur.
- Vous pourrez l'utiliser plus tard pour restaurer le site dans l'état où il se trouve aujourd'hui. Ceci est utile dans le cas d'un changement d'hébergement ou dans le cas d'un problème affectant le serveur.
- Ce fichier se nomme sauvegarde_site_melaine.zip.

- Cliquez ici pour télécharger

- Retour au site -
- - - - - Restauration des données avec un backup - - - -
- Restauration des données à partir d'une sauvegarde.

- Vous devez avoir créé un fichier nommé sauvegarde_site_melaine.zip
- en cliquant sur Extraire les données.

+ $title = 'Restauration des données'; -
-
- -

- Retour au site -
-
- -open('data/' . $nomFichier, ZipArchive::CREATE | ZipArchive::OVERWRITE)!==TRUE) + { + exit("Impossible d'ouvrir le fichier " . $nomFichier . ".\n"); + } + + // fichiers à la racine + $Zip->addGlob('*.php', 0, array('')); + $Zip->addGlob('.htaccess', 0, array('')); + $Zip->addGlob('*.txt', 0, array('')); + + // tous les dossiers sauf data et .git + $listeDossiers = array('model', 'view', 'controller', 'public', 'lib'); + foreach($listeDossiers as $path) + { + // les deux lignes suivantes me dépassent un peu, + // mais ça marche et c'est comme ça qu'il faut faire + $directory = new RecursiveDirectoryIterator($path); + $iterator = new RecursiveIteratorIterator($directory); + + foreach ($iterator as $info) + { + // chemins inutiles . et .. + if($info->getFilename() != "." && $info->getFilename() != "..") + { + //var_dump($info->getPathname()); + $Zip->addGlob($info->getPathname(), 0, array('')); + } + } + } + + $Zip->close(); + + chmod('data/' . $nomFichier, 0644); // écriture 4 chiffres (octal) } \ No newline at end of file diff --git a/controller/installation.php b/controller/installation.php index 9d612dd..6037e17 100644 --- a/controller/installation.php +++ b/controller/installation.php @@ -45,11 +45,28 @@ function installation() // créer les dossiers (fait également à l'extraction du zip de données) // attention: ne fonctionne pas sans une manipulation préalable - // - modifier soit-même les droits du dossier data (777), quoique 111 serait pas mal non plus + // - modifier soit-même les droits du dossier data pour 777 // - modifier ceux du dossier parent (nom du site) avec son client FTP à la mise en ligne chez l'hébergeur et ensuite remettre tout comme avant - // le 0 devant signifie que le nombre est en octal - $droitsDossiers = 0777; // mettre 0700 à la fin + // création des dossiers + + // valeur en octal + $droitsDossiers = 0777; // mettre 0755 en production + + if(!file_exists('data') && !mkdir('data')) + { + $erreur = 'data'; + $title = 'Dossier data absent'; + require('view/backup.php'); + exit(); + } + if(!touch('data')) + { + $erreur = 'data'; + $title = 'Écriture non autorisée dans le dossier data'; + require('view/backup.php'); + exit(); + } $listePages = array('melaine', 'discographie', 'concerts', 'presse', 'ateliers', 'liens', 'peinture', 'archives'); foreach ($listePages as $page) @@ -93,6 +110,13 @@ function installation() chmod('data/password.txt', 0600); } + // créer le melainePHP.zip + if(!file_exists("data/melainePHP.zip")) + { + require('controller/backup.php'); + creerMelainePHP(); + } + // le modèle donnera les droits 0666 (octal) aux nouveaux fichiers à l'intérieur des dossiers // création d'un mot de passe si password.txt est vide -- cgit v1.2.3