diff options
Diffstat (limited to 'controller/backup.php')
-rw-r--r-- | controller/backup.php | 105 |
1 files changed, 62 insertions, 43 deletions
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 @@ | |||
1 | <?php | 1 | <?php |
2 | // controller/backup.php | 2 | // controller/backup.php |
3 | 3 | ||
4 | function extraction($from) | 4 | function sauvegarder($from) |
5 | { | 5 | { |
6 | $title = 'extraction des données'; | ||
7 | |||
6 | $chemin = "data/"; | 8 | $chemin = "data/"; |
7 | $nomFichier = "sauvegarde_site_melaine.zip"; | 9 | $nomFichier = "melaineDATA.zip"; |
8 | 10 | ||
9 | // création ou remplacement d'une archive zip | 11 | // création ou remplacement d'une archive zip |
10 | // une erreur est jetée si l'extension zip n'est pas activée | 12 | // une erreur est jetée si l'extension zip n'est pas activée |
@@ -14,10 +16,7 @@ function extraction($from) | |||
14 | } | 16 | } |
15 | catch (Throwable $e) | 17 | catch (Throwable $e) |
16 | { | 18 | { |
17 | echo('Erreur: la classe ZipArchive est introuvable, la sauvegarde est impossible. L\'extension ZIP de PHP est-elle activée dans le fichier php.ini?<br/> | 19 | echo($erreur); |
18 | Veuillez prévenir l\'administrateur.<br/> | ||
19 | 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".<br/><br/> | ||
20 | <a href="index.php" >Retour au site</a>'); | ||
21 | die(); | 20 | die(); |
22 | } | 21 | } |
23 | 22 | ||
@@ -36,45 +35,65 @@ function extraction($from) | |||
36 | // pour pouvoir manipuler le fichier depuis filezilla ou ssh | 35 | // pour pouvoir manipuler le fichier depuis filezilla ou ssh |
37 | chmod($chemin . $nomFichier, 0666); // écriture 4 chiffres | 36 | chmod($chemin . $nomFichier, 0666); // écriture 4 chiffres |
38 | 37 | ||
39 | ?> | 38 | require('view/backup.php'); |
40 | <head> | ||
41 | <meta charset="utf-8" /> | ||
42 | <title>extraction des données</title> | ||
43 | <link rel="stylesheet" type="text/css" href="public/accueil.css" /> | ||
44 | </head> | ||
45 | <body> | ||
46 | <div id="bloc_page" style="padding: 5px;"> | ||
47 | Toutes les données du sites ont été rassemblées dans un gros fichier que vous pouvez garder par exemple sur votre ordinateur.<br/> | ||
48 | 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.<br/> | ||
49 | Ce fichier se nomme <i>sauvegarde_site_melaine.zip</i>.<br/><br/> | ||
50 | <a href="data/sauvegarde_site_melaine.zip" style="border: 2px black ridge;" >Cliquez ici pour télécharger</a><br/><br/> | ||
51 | <a href="index.php?page=<?= $from ?>" >Retour au site</a> | ||
52 | </div> | ||
53 | </body> | ||
54 | <?php | ||
55 | } | 39 | } |
56 | 40 | ||
57 | function insertion($from) | 41 | function restaurer($from) |
58 | { | 42 | { |
59 | ?> | 43 | $title = 'Restauration des données'; |
60 | <head> | ||
61 | <meta charset="utf-8" /> | ||
62 | <title>Restauration des données avec un backup</title> | ||
63 | <link rel="stylesheet" type="text/css" href="public/accueil.css" /> | ||
64 | </head> | ||
65 | <body> | ||
66 | <div id="bloc_page" style="padding: 5px;"> | ||
67 | Restauration des données à partir d'une sauvegarde.<br/><br/> | ||
68 | Vous devez avoir créé un fichier nommé <i>sauvegarde_site_melaine.zip</i><br/> | ||
69 | en cliquant sur <i>Extraire les données</i>.<br/><br/> | ||
70 | 44 | ||
71 | <form action="index.php?from=<?= $from ?>&action=insertion" method="post" > | 45 | $chemin = "data/"; |
72 | <input type="file" accept=".zip" ><br/> | 46 | $nomFichier = "melaineDATA.zip"; |
73 | <!-- ajouter une demande de confirmation en JS au submit --> | 47 | |
74 | <input type="submit" ><br/><br/> | 48 | require('view/backup.php'); |
75 | <a href="index.php?page=<?= $from ?>" >Retour au site</a> | 49 | } |
76 | </form> | 50 | |
77 | </div> | 51 | // inutile |
78 | </body> | 52 | function creerMelainePHP() |
79 | <?php | 53 | { |
54 | $nomFichier = "melainePHP.zip"; | ||
55 | |||
56 | try | ||
57 | { | ||
58 | $Zip = new ZipArchive(); | ||
59 | } | ||
60 | catch (Throwable $e) // absence de l'extension zip | ||
61 | { | ||
62 | echo($erreur); | ||
63 | die(); | ||
64 | } | ||
65 | |||
66 | if ($Zip->open('data/' . $nomFichier, ZipArchive::CREATE | ZipArchive::OVERWRITE)!==TRUE) | ||
67 | { | ||
68 | exit("Impossible d'ouvrir le fichier <i>" . $nomFichier . "</i>.\n"); | ||
69 | } | ||
70 | |||
71 | // fichiers à la racine | ||
72 | $Zip->addGlob('*.php', 0, array('')); | ||
73 | $Zip->addGlob('.htaccess', 0, array('')); | ||
74 | $Zip->addGlob('*.txt', 0, array('')); | ||
75 | |||
76 | // tous les dossiers sauf data et .git | ||
77 | $listeDossiers = array('model', 'view', 'controller', 'public', 'lib'); | ||
78 | foreach($listeDossiers as $path) | ||
79 | { | ||
80 | // les deux lignes suivantes me dépassent un peu, | ||
81 | // mais ça marche et c'est comme ça qu'il faut faire | ||
82 | $directory = new RecursiveDirectoryIterator($path); | ||
83 | $iterator = new RecursiveIteratorIterator($directory); | ||
84 | |||
85 | foreach ($iterator as $info) | ||
86 | { | ||
87 | // chemins inutiles . et .. | ||
88 | if($info->getFilename() != "." && $info->getFilename() != "..") | ||
89 | { | ||
90 | //var_dump($info->getPathname()); | ||
91 | $Zip->addGlob($info->getPathname(), 0, array('')); | ||
92 | } | ||
93 | } | ||
94 | } | ||
95 | |||
96 | $Zip->close(); | ||
97 | |||
98 | chmod('data/' . $nomFichier, 0644); // écriture 4 chiffres (octal) | ||
80 | } \ No newline at end of file | 99 | } \ No newline at end of file |