summaryrefslogtreecommitdiff
path: root/controller
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2022-02-24 02:29:14 +0100
committerpolo <ordipolo@gmx.fr>2022-02-24 02:29:14 +0100
commitf19db76cc3b21785619ffd24bfb34692a3aaa66a (patch)
tree7a715c3bc89232a981f3150caa46e61cba7850f2 /controller
parent2c5dc14a9cd8bd847c724c0d43ddce8be0069013 (diff)
downloadmelaine-f19db76cc3b21785619ffd24bfb34692a3aaa66a.zip
recursiveIterator
Diffstat (limited to 'controller')
-rw-r--r--controller/backup.php105
-rw-r--r--controller/installation.php30
2 files changed, 89 insertions, 46 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
4function extraction($from) 4function 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
57function insertion($from) 41function 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> 52function 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
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()
45 45
46 // créer les dossiers (fait également à l'extraction du zip de données) 46 // créer les dossiers (fait également à l'extraction du zip de données)
47 // attention: ne fonctionne pas sans une manipulation préalable 47 // attention: ne fonctionne pas sans une manipulation préalable
48 // - modifier soit-même les droits du dossier data (777), quoique 111 serait pas mal non plus 48 // - modifier soit-même les droits du dossier data pour 777
49 // - 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 49 // - 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
50 50
51 // le 0 devant signifie que le nombre est en octal 51 // création des dossiers
52 $droitsDossiers = 0777; // mettre 0700 à la fin 52
53 // valeur en octal
54 $droitsDossiers = 0777; // mettre 0755 en production
55
56 if(!file_exists('data') && !mkdir('data'))
57 {
58 $erreur = 'data';
59 $title = 'Dossier data absent';
60 require('view/backup.php');
61 exit();
62 }
63 if(!touch('data'))
64 {
65 $erreur = 'data';
66 $title = 'Écriture non autorisée dans le dossier data';
67 require('view/backup.php');
68 exit();
69 }
53 70
54 $listePages = array('melaine', 'discographie', 'concerts', 'presse', 'ateliers', 'liens', 'peinture', 'archives'); 71 $listePages = array('melaine', 'discographie', 'concerts', 'presse', 'ateliers', 'liens', 'peinture', 'archives');
55 foreach ($listePages as $page) 72 foreach ($listePages as $page)
@@ -93,6 +110,13 @@ function installation()
93 chmod('data/password.txt', 0600); 110 chmod('data/password.txt', 0600);
94 } 111 }
95 112
113 // créer le melainePHP.zip
114 if(!file_exists("data/melainePHP.zip"))
115 {
116 require('controller/backup.php');
117 creerMelainePHP();
118 }
119
96 // le modèle donnera les droits 0666 (octal) aux nouveaux fichiers à l'intérieur des dossiers 120 // le modèle donnera les droits 0666 (octal) aux nouveaux fichiers à l'intérieur des dossiers
97 121
98 // création d'un mot de passe si password.txt est vide 122 // création d'un mot de passe si password.txt est vide