diff options
author | polo <ordipolo@gmx.fr> | 2022-03-01 04:02:05 +0100 |
---|---|---|
committer | polo <ordipolo@gmx.fr> | 2022-03-01 04:02:05 +0100 |
commit | 2ac4254829fb27d878044978e4e89f15eeeddd23 (patch) | |
tree | d6ae70410566884d8bf567b0934cdaee5133a5a1 /controller | |
parent | abd968a1c573b1862bd0728f0b7b6a88e307900a (diff) | |
download | melaine-2ac4254829fb27d878044978e4e89f15eeeddd23.zip |
factorisation et pages manquantes
Diffstat (limited to 'controller')
-rw-r--r-- | controller/Security.php | 8 | ||||
-rw-r--r-- | controller/admin.php | 70 | ||||
-rw-r--r-- | controller/backup.php | 16 | ||||
-rw-r--r-- | controller/installation.php | 7 | ||||
-rw-r--r-- | controller/password.php | 79 | ||||
-rw-r--r-- | controller/visitor.php | 100 |
6 files changed, 199 insertions, 81 deletions
diff --git a/controller/Security.php b/controller/Security.php index 6ea121c..c53cdc6 100644 --- a/controller/Security.php +++ b/controller/Security.php | |||
@@ -14,10 +14,16 @@ class Security | |||
14 | ); | 14 | ); |
15 | private static $specHtmLawed = ''; // optionnel: faire qu'un certain élément puisse n'avoir que certains attributs | 15 | private static $specHtmLawed = ''; // optionnel: faire qu'un certain élément puisse n'avoir que certains attributs |
16 | 16 | ||
17 | public static function secureString($chaine) | 17 | public static function secureString(string $chaine): string |
18 | { | 18 | { |
19 | $chaine = htmLawed($chaine, self::$configHtmLawed, self::$specHtmLawed); | 19 | $chaine = htmLawed($chaine, self::$configHtmLawed, self::$specHtmLawed); |
20 | $chaine = trim($chaine); // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine (pour l'entrée de l'éditeur) | 20 | $chaine = trim($chaine); // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine (pour l'entrée de l'éditeur) |
21 | return $chaine; | 21 | return $chaine; |
22 | } | 22 | } |
23 | } | 23 | } |
24 | |||
25 | function removeSpacesTabsCRLF(string $chaine): string | ||
26 | { | ||
27 | $cibles = [' ', "\t", "\n", "\r"]; // doubles quotes !! | ||
28 | return(str_replace($cibles, '', $chaine)); | ||
29 | } | ||
diff --git a/controller/admin.php b/controller/admin.php index b8ef7ff..ee5c217 100644 --- a/controller/admin.php +++ b/controller/admin.php | |||
@@ -4,12 +4,12 @@ | |||
4 | // utilisation du site en écriture (admin uniquement) | 4 | // utilisation du site en écriture (admin uniquement) |
5 | // éditeur ouvert ou suppression d'un élément | 5 | // éditeur ouvert ou suppression d'un élément |
6 | 6 | ||
7 | function melaineEdit($fileCode, $suppression) | 7 | function pageArticlesSimplesAdmin(string $page, string $title, string $headerPaintedTitle, $fileCode, int $suppression) |
8 | { | 8 | { |
9 | $page_actuelle = "melaine"; | 9 | $headerImage = '<div class="photo" id="photo_' . $page . '" ></div>'; |
10 | 10 | ||
11 | // infos sur les fichiers | 11 | // infos sur les fichiers |
12 | $Articles = new Article($page_actuelle); | 12 | $Articles = new Article($page); |
13 | 13 | ||
14 | // nouvel article | 14 | // nouvel article |
15 | if($fileCode == '') | 15 | if($fileCode == '') |
@@ -29,7 +29,7 @@ function melaineEdit($fileCode, $suppression) | |||
29 | $Articles->delete(); | 29 | $Articles->delete(); |
30 | 30 | ||
31 | // redirection immédiate avant affichage | 31 | // redirection immédiate avant affichage |
32 | header('Location: index.php?page=' . $page_actuelle); | 32 | header('Location: index.php?page=' . $page); |
33 | exit(); | 33 | exit(); |
34 | } | 34 | } |
35 | // modification | 35 | // modification |
@@ -68,18 +68,70 @@ function melaineEdit($fileCode, $suppression) | |||
68 | require('view/template-formulaires.php'); | 68 | require('view/template-formulaires.php'); |
69 | // variables $css, $js, $header et $content, | 69 | // variables $css, $js, $header et $content, |
70 | // $content contient $articles et $editeurHTML | 70 | // $content contient $articles et $editeurHTML |
71 | require('view/melaine.php'); | 71 | require('view/pageArticlesSimples.php'); |
72 | // fin de l'assemblage | 72 | // fin de l'assemblage |
73 | require('view/template.php'); | 73 | require('view/template.php'); |
74 | } | 74 | } |
75 | 75 | ||
76 | function melaineEdit($fileCode, $suppression) | ||
77 | { | ||
78 | $page = "melaine"; | ||
79 | $title = "Mais qui est Melaine Favennec?"; | ||
80 | $headerPaintedTitle = 'Melaine Favennec'; | ||
81 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); | ||
82 | } | ||
83 | function concertsEdit($fileCode, $suppression) | ||
84 | { | ||
85 | $page = "concerts"; | ||
86 | $title = "Concerts"; | ||
87 | $headerPaintedTitle = 'Concerts'; | ||
88 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); | ||
89 | } | ||
90 | function presseEdit($fileCode, $suppression) | ||
91 | { | ||
92 | $page = "presse"; | ||
93 | $title = "La presse"; | ||
94 | $headerPaintedTitle = 'La Presse'; | ||
95 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); | ||
96 | } | ||
97 | function ateliersEdit($fileCode, $suppression) | ||
98 | { | ||
99 | $page = "ateliers"; | ||
100 | $title = "Ateliers"; | ||
101 | $headerPaintedTitle = 'Les ateliers de Melaine'; | ||
102 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); | ||
103 | } | ||
104 | function liensEdit($fileCode, $suppression) | ||
105 | { | ||
106 | $page = "liens"; | ||
107 | $title = "Liens"; | ||
108 | $headerPaintedTitle = 'Liens'; | ||
109 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); | ||
110 | } | ||
111 | function peintureEdit($fileCode, $suppression) | ||
112 | { | ||
113 | $page = "peinture"; | ||
114 | $title = "peinture"; | ||
115 | $headerPaintedTitle = 'Celtic Boats'; | ||
116 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); | ||
117 | } | ||
118 | function archivesEdit($fileCode, $suppression) | ||
119 | { | ||
120 | $page = "archives"; | ||
121 | $title = "Archives"; | ||
122 | $headerPaintedTitle = 'Archives'; | ||
123 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); | ||
124 | } | ||
125 | |||
126 | |||
127 | // page plus complexe que les autres | ||
76 | function discoEdit($fileCode, $suppression) | 128 | function discoEdit($fileCode, $suppression) |
77 | { | 129 | { |
78 | $page_actuelle = "discographie"; | 130 | $page = "discographie"; |
79 | $title = "Discographie"; | 131 | $title = "Discographie"; |
80 | 132 | ||
81 | // modèle | 133 | // modèle |
82 | $Albums = new Album($page_actuelle); | 134 | $Albums = new Album($page); |
83 | $Albums->makeFileList(); | 135 | $Albums->makeFileList(); |
84 | 136 | ||
85 | // contenu: JSON, HTML, noms et chemins des fichiers | 137 | // contenu: JSON, HTML, noms et chemins des fichiers |
@@ -109,7 +161,7 @@ function discoEdit($fileCode, $suppression) | |||
109 | if($suppression) | 161 | if($suppression) |
110 | { | 162 | { |
111 | $Albums->delete(); | 163 | $Albums->delete(); |
112 | header('Location: index.php?page=' . $page_actuelle); | 164 | header('Location: index.php?page=' . $page); |
113 | exit(); | 165 | exit(); |
114 | } | 166 | } |
115 | // modification | 167 | // modification |
@@ -132,7 +184,7 @@ function discoEdit($fileCode, $suppression) | |||
132 | // image affichée à côté des formulaires | 184 | // image affichée à côté des formulaires |
133 | if(!empty($vignette[2])) | 185 | if(!empty($vignette[2])) |
134 | { | 186 | { |
135 | $imageFormulaire = '<img class="imageFormulaire" src="data/' . $page_actuelle . '/images/' . $vignette[2] . '" ><br/>'; | 187 | $imageFormulaire = '<img class="imageFormulaire" src="data/' . $page . '/images/' . $vignette[2] . '" ><br/>'; |
136 | } | 188 | } |
137 | else | 189 | else |
138 | { | 190 | { |
diff --git a/controller/backup.php b/controller/backup.php index 81d72b9..4fb01ef 100644 --- a/controller/backup.php +++ b/controller/backup.php | |||
@@ -8,20 +8,23 @@ function sauvegarder($from) | |||
8 | 8 | ||
9 | $cheminDestination = "data/"; | 9 | $cheminDestination = "data/"; |
10 | $date = date("d-m-Y", time()); | 10 | $date = date("d-m-Y", time()); |
11 | $nomFichier = "melaineDATA_" . $date . ".zip"; | 11 | $nomFichier = "melaineDATA_" . $date; |
12 | // ne prendre que les dossiers pour exclure les fichiers password.txt, melaineDATA.zip et melainePHP.zip existant | 12 | // ne prendre que les dossiers pour exclure les fichiers password.txt, melaineDATA.zip et melainePHP.zip existant |
13 | $dossiersCibles = [ 'data/archives', 'data/concerts', 'data/liens', 'data/presse', 'data/ateliers', 'data/discographie', 'data/melaine', 'data/peinture' ]; | 13 | $dossiersCibles = [ 'data/archives', 'data/concerts', 'data/liens', 'data/presse', 'data/ateliers', 'data/discographie', 'data/melaine', 'data/peinture' ]; |
14 | //$fichiersALaRacine = []; | 14 | //$fichiersALaRacine = []; |
15 | 15 | ||
16 | createZip($cheminDestination, $nomFichier, $dossiersCibles); | 16 | createZip($cheminDestination, $nomFichier, $dossiersCibles); |
17 | 17 | ||
18 | global $archiveFormat; | ||
19 | $nomFichier = $nomFichier . '.' . $archiveFormat; | ||
20 | |||
18 | require('view/backup.php'); | 21 | require('view/backup.php'); |
19 | } | 22 | } |
20 | 23 | ||
21 | function creerMelainePHP() | 24 | function creerMelainePHP() |
22 | { | 25 | { |
23 | $cheminDestination = 'data/'; | 26 | $cheminDestination = 'data/'; |
24 | $nomFichier = "melainePHP.zip"; | 27 | $nomFichier = "melainePHP"; |
25 | // tous les dossiers sauf data et .git | 28 | // tous les dossiers sauf data et .git |
26 | $dossiersCibles = ['model', 'view', 'controller', 'public', 'lib']; | 29 | $dossiersCibles = ['model', 'view', 'controller', 'public', 'lib']; |
27 | $fichiersALaRacine = ['*.php', '.htaccess', '*.txt']; // robots? | 30 | $fichiersALaRacine = ['*.php', '.htaccess', '*.txt']; // robots? |
@@ -34,6 +37,9 @@ function creerMelainePHP() | |||
34 | // le quatrième est optionnel et concerne les fichiers à la racine | 37 | // le quatrième est optionnel et concerne les fichiers à la racine |
35 | function createZip($destinationPath, $zipFileName, array $targetDirectories, array $allPattern = []) | 38 | function createZip($destinationPath, $zipFileName, array $targetDirectories, array $allPattern = []) |
36 | { | 39 | { |
40 | global $archiveFormat; // choix du format | ||
41 | $zipFileName = $zipFileName . '.' . $archiveFormat; | ||
42 | |||
37 | try | 43 | try |
38 | { | 44 | { |
39 | $Zip = new ZipArchive(); | 45 | $Zip = new ZipArchive(); |
@@ -101,6 +107,8 @@ function restaurer($from) | |||
101 | // recharger la même page en écrivant les données | 107 | // recharger la même page en écrivant les données |
102 | if(isset($_FILES['archive']) && $_FILES['archive']['error'] == 0) | 108 | if(isset($_FILES['archive']) && $_FILES['archive']['error'] == 0) |
103 | { | 109 | { |
110 | // détecter le format (zip ou autre) | ||
111 | |||
104 | // une copie du zip est conservée dans data/ au cas où | 112 | // une copie du zip est conservée dans data/ au cas où |
105 | move_uploaded_file($_FILES['archive']['tmp_name'], 'data/' . $_FILES['archive']['name']); | 113 | move_uploaded_file($_FILES['archive']['tmp_name'], 'data/' . $_FILES['archive']['name']); |
106 | chmod('data/' . $_FILES['archive']['name'], 0666); | 114 | chmod('data/' . $_FILES['archive']['name'], 0666); |
@@ -117,10 +125,6 @@ function restaurer($from) | |||
117 | echo($e); | 125 | echo($e); |
118 | die(); | 126 | die(); |
119 | } | 127 | } |
120 | |||
121 | //var_dump($Zip->open($nomFichier, ZipArchive::RDONLY)); | ||
122 | //var_dump(ZipArchive::ER_NOENT); | ||
123 | |||
124 | if($Zip->open($nomFichier, ZipArchive::RDONLY) === TRUE) | 128 | if($Zip->open($nomFichier, ZipArchive::RDONLY) === TRUE) |
125 | { | 129 | { |
126 | $j = 0; | 130 | $j = 0; |
diff --git a/controller/installation.php b/controller/installation.php index 6037e17..bf6826d 100644 --- a/controller/installation.php +++ b/controller/installation.php | |||
@@ -103,12 +103,6 @@ function installation() | |||
103 | mkdir('data/discographie/images-mini'); | 103 | mkdir('data/discographie/images-mini'); |
104 | chmod('data/discographie/images-mini', $droitsDossiers); | 104 | chmod('data/discographie/images-mini', $droitsDossiers); |
105 | } | 105 | } |
106 | // fichier password.txt | ||
107 | if(!file_exists('data/password.txt')) | ||
108 | { | ||
109 | touch('data/password.txt'); | ||
110 | chmod('data/password.txt', 0600); | ||
111 | } | ||
112 | 106 | ||
113 | // créer le melainePHP.zip | 107 | // créer le melainePHP.zip |
114 | if(!file_exists("data/melainePHP.zip")) | 108 | if(!file_exists("data/melainePHP.zip")) |
@@ -116,7 +110,6 @@ function installation() | |||
116 | require('controller/backup.php'); | 110 | require('controller/backup.php'); |
117 | creerMelainePHP(); | 111 | creerMelainePHP(); |
118 | } | 112 | } |
119 | |||
120 | // le modèle donnera les droits 0666 (octal) aux nouveaux fichiers à l'intérieur des dossiers | 113 | // le modèle donnera les droits 0666 (octal) aux nouveaux fichiers à l'intérieur des dossiers |
121 | 114 | ||
122 | // création d'un mot de passe si password.txt est vide | 115 | // création d'un mot de passe si password.txt est vide |
diff --git a/controller/password.php b/controller/password.php index 4ca9f4f..8f6a875 100644 --- a/controller/password.php +++ b/controller/password.php | |||
@@ -5,11 +5,25 @@ | |||
5 | // affichage | 5 | // affichage |
6 | function createPassword() | 6 | function createPassword() |
7 | { | 7 | { |
8 | // si installation() vient de créer un fichier vide | 8 | // création du fichier |
9 | $hashedPassword = trim(file_get_contents('data/password.txt')); | 9 | if(!file_exists('data/password.txt')) |
10 | { | ||
11 | touch('data/password.txt'); | ||
12 | chmod('data/password.txt', 0600); | ||
13 | } | ||
14 | |||
15 | // lecture | ||
16 | $hashedPassword = file_get_contents('data/password.txt'); | ||
17 | if($hashedPassword === false) | ||
18 | { | ||
19 | echo('Erreur: ouverture du fichier password.txt impossible.'); | ||
20 | exit(); | ||
21 | } | ||
22 | |||
23 | // création du mot de passe | ||
10 | if(empty($hashedPassword)) | 24 | if(empty($hashedPassword)) |
11 | { | 25 | { |
12 | // paranoïa | 26 | // paranoïa? |
13 | if(isset($_SESSION['admin'])) | 27 | if(isset($_SESSION['admin'])) |
14 | { | 28 | { |
15 | unset($_SESSION['admin']); | 29 | unset($_SESSION['admin']); |
@@ -17,23 +31,31 @@ function createPassword() | |||
17 | exit(); | 31 | exit(); |
18 | } | 32 | } |
19 | 33 | ||
20 | // au rechargement: un mot de passe a été saisi | 34 | // au rechargement après saisi |
21 | // les espaces/tabulations sont considérés commes des erreurs | 35 | // impossible d'entrer un espace ou une tabulation et de valider par erreur |
22 | if(isset($_POST['motdepasse']) && !empty(trim($_POST['motdepasse']))) | 36 | if(isset($_POST['motdepasse']) && !empty($_POST['motdepasse'])) |
37 | { | ||
38 | // caractères non désirés supprimés | ||
39 | require('controller/Security.php'); | ||
40 | $password = Security::secureString($_POST['motdepasse']); | ||
41 | $password = removeSpacesTabsCRLF($_POST['motdepasse']); | ||
42 | } | ||
43 | // enregistrement | ||
44 | if(isset($password) && $password == $_POST['motdepasse']) | ||
23 | { | 45 | { |
24 | // enregistrement | ||
25 | hashNewPassword($_POST['motdepasse']); | 46 | hashNewPassword($_POST['motdepasse']); |
26 | header('Location: index.php'); | 47 | header('Location: index.php'); |
27 | } | 48 | } |
28 | // 1ère fois | 49 | // 1ère fois |
29 | else | 50 | else |
30 | { | 51 | { |
31 | $title = "Créer un mot de passe"; | 52 | $title = 'Créer un mot de passe'; |
32 | $subHeading = "Veuillez choisir le mot de passe que vous utiliserez pour gérer le site."; | 53 | $subHeading = 'Veuillez choisir le mot de passe que vous utiliserez pour gérer le site.'; |
33 | 54 | ||
34 | require('view/password.php'); | 55 | require('view/password.php'); |
35 | 56 | ||
36 | echo($header); | 57 | echo($header); |
58 | echo($errorBadCharacters); | ||
37 | echo($formulaireNouveauMDP); | 59 | echo($formulaireNouveauMDP); |
38 | echo($warning); | 60 | echo($warning); |
39 | } | 61 | } |
@@ -103,37 +125,40 @@ function changePassword() | |||
103 | $title = "Nouveau mot de passe"; | 125 | $title = "Nouveau mot de passe"; |
104 | $subHeading = "Veuillez saisir votre actuel mot de passe suivi du nouveau."; | 126 | $subHeading = "Veuillez saisir votre actuel mot de passe suivi du nouveau."; |
105 | 127 | ||
106 | // cette page utilise la même vue que la fonction connexion() dans controller/visiteur.php | ||
107 | require('view/password.php'); | 128 | require('view/password.php'); |
108 | |||
109 | echo($header); | 129 | echo($header); |
110 | 130 | ||
111 | // traitements: vérification ancien mot de passe et choix du nouveau | 131 | // conformité du nouveau mot de passe |
132 | if(isset($_POST['nouveauMotdepasse']) && !empty($_POST['nouveauMotdepasse'])) | ||
133 | { | ||
134 | require('controller/Security.php'); | ||
135 | $newPassword = Security::secureString($_POST['nouveauMotdepasse']); | ||
136 | $newPassword = removeSpacesTabsCRLF($_POST['nouveauMotdepasse']); | ||
137 | } | ||
138 | |||
112 | // bon mot de passe | 139 | // bon mot de passe |
113 | //if(isset ($_POST["ancienMotdepasse"]) AND $_POST["ancienMotdepasse"] == $secret) | 140 | if(isset($newPassword) && $newPassword === $_POST['nouveauMotdepasse'] |
114 | if(isset ($_POST["ancienMotdepasse"]) AND testPassword($_POST["ancienMotdepasse"])) | 141 | && isset ($_POST["ancienMotdepasse"]) AND testPassword($_POST["ancienMotdepasse"])) |
115 | { | 142 | { |
116 | // enregistrement | 143 | // enregistrement et confirmation |
117 | hashNewPassword($_POST["nouveauMotdepasse"]); | 144 | hashNewPassword($_POST["nouveauMotdepasse"]); |
118 | 145 | echo($message); | |
119 | // confirmation | ||
120 | echo($message); | ||
121 | //exit(); | ||
122 | |||
123 | /*header('Location: index.php?page=' . $_GET['from'] . '&message=nouveau_mdp'); | ||
124 | exit();*/ | ||
125 | } | 146 | } |
126 | |||
127 | // mauvais mot de passe | 147 | // mauvais mot de passe |
128 | elseif(isset ($_POST["ancienMotdepasse"]) AND !testPassword($_POST["ancienMotdepasse"])) | 148 | elseif(isset ($_POST["ancienMotdepasse"]) AND !testPassword($_POST["ancienMotdepasse"])) |
129 | { | 149 | { |
130 | // défense aux attaques par force brute | 150 | // défense aux attaques par force brute |
131 | // pas parfait, ne marche pas si l'attaquant multiplie les connexions au site | 151 | // pas parfait, ne marche pas si l'attaquant multiplie les connexions au site |
132 | echo($erreurMDP); | 152 | echo($errorPassword); |
133 | sleep(1); | 153 | sleep(1); |
134 | echo($formulaireModifMDP); | 154 | echo($formulaireModifMDP); |
135 | } | 155 | } |
136 | 156 | // erreur de conformité | |
157 | elseif(isset($newPassword) && $newPassword !== $_POST['nouveauMotdepasse']) | ||
158 | { | ||
159 | echo($errorBadCharacters); | ||
160 | echo($formulaireModifMDP); | ||
161 | } | ||
137 | // première arrivée sur la page | 162 | // première arrivée sur la page |
138 | else | 163 | else |
139 | { | 164 | { |
@@ -146,7 +171,7 @@ function changePassword() | |||
146 | 171 | ||
147 | 172 | ||
148 | // hachage | 173 | // hachage |
149 | function hashNewPassword($newPassword) | 174 | function hashNewPassword(string $newPassword) |
150 | { | 175 | { |
151 | // "réparation" des espaces accidentels | 176 | // "réparation" des espaces accidentels |
152 | $newPassword= trim($newPassword); | 177 | $newPassword= trim($newPassword); |
@@ -160,7 +185,7 @@ function hashNewPassword($newPassword) | |||
160 | chmod('data/password.txt', 0600); | 185 | chmod('data/password.txt', 0600); |
161 | } | 186 | } |
162 | 187 | ||
163 | function testPassword($password) | 188 | function testPassword(string $password): bool |
164 | { | 189 | { |
165 | // lecture | 190 | // lecture |
166 | $oldHashedPassword = file_get_contents('data/password.txt'); | 191 | $oldHashedPassword = file_get_contents('data/password.txt'); |
diff --git a/controller/visitor.php b/controller/visitor.php index f0dc877..aae15a7 100644 --- a/controller/visitor.php +++ b/controller/visitor.php | |||
@@ -7,7 +7,7 @@ | |||
7 | function accueil() | 7 | function accueil() |
8 | { | 8 | { |
9 | $title = "Bienvenue sur le site de Melaine Favennec"; | 9 | $title = "Bienvenue sur le site de Melaine Favennec"; |
10 | $page_actuelle = "accueil"; | 10 | $page = "accueil"; |
11 | $content = ''; | 11 | $content = ''; |
12 | 12 | ||
13 | // variables $js et $header | 13 | // variables $js et $header |
@@ -19,7 +19,7 @@ function accueil() | |||
19 | function menu() | 19 | function menu() |
20 | { | 20 | { |
21 | $title = "Melaine Favennec - menu BD"; | 21 | $title = "Melaine Favennec - menu BD"; |
22 | $page_actuelle = "menu"; | 22 | $page = "menu"; |
23 | 23 | ||
24 | // variables $css, $js, $header et $content | 24 | // variables $css, $js, $header et $content |
25 | require('view/menu.php'); | 25 | require('view/menu.php'); |
@@ -27,38 +27,91 @@ function menu() | |||
27 | require('view/template.php'); | 27 | require('view/template.php'); |
28 | } | 28 | } |
29 | 29 | ||
30 | function melaineVisitor() | 30 | // toutes celles du menu sauf: menu et discographie |
31 | function pageArticlesSimplesVisitor(string $page, string $title, string $headerPaintedTitle) | ||
31 | { | 32 | { |
32 | $page_actuelle = "melaine"; | 33 | $headerImage = '<div class="photo" id="photo_' . $page . '" ></div>'; |
33 | $title = "Mais qui est Melaine Favennec?"; | ||
34 | 34 | ||
35 | // infos sur les fichiers | 35 | // infos sur les fichiers $Articles->fileList |
36 | $Articles = new Article($page_actuelle); | 36 | $Articles = new Article($page); |
37 | 37 | ||
38 | // données des dates | 38 | // données des dates |
39 | //print_r($Articles->fileList[$i]['date']); | 39 | //print_r($Articles->fileList[$i]['date']); |
40 | //getdate($Albums->fileList[$i]['fileCode']); | 40 | //getdate($Albums->fileList[$i]['fileCode']); |
41 | 41 | ||
42 | // ajout des données dans $Articles->fileList['content'] | 42 | // si la page n'est pas vide |
43 | if(!empty($Articles->fileList)) | 43 | if(!empty($Articles->fileList)) |
44 | { | 44 | { |
45 | // données dans $Articles->fileList['content'] | ||
45 | $Articles->readAll(); | 46 | $Articles->readAll(); |
46 | $Articles->fileList = array_reverse($Articles->fileList); | 47 | $Articles->fileList = array_reverse($Articles->fileList); |
47 | } | 48 | } |
48 | 49 | ||
49 | // variables $css, $js, $header et $content | 50 | // variables $css, $js, $header et $content |
50 | require('view/melaine.php'); | 51 | require('view/pageArticlesSimples.php'); |
51 | // HTML | 52 | // HTML |
52 | require('view/template.php'); | 53 | require('view/template.php'); |
53 | } | 54 | } |
54 | 55 | ||
56 | function melaineVisitor() | ||
57 | { | ||
58 | $page = "melaine"; | ||
59 | $title = "Mais qui est Melaine Favennec?"; | ||
60 | $headerPaintedTitle = 'Melaine Favennec'; | ||
61 | pageArticlesSimplesVisitor($page, $title, $headerPaintedTitle); | ||
62 | } | ||
63 | function concertsVisitor() | ||
64 | { | ||
65 | $page = "concerts"; | ||
66 | $title = "Concerts"; | ||
67 | $headerPaintedTitle = 'Concerts'; | ||
68 | pageArticlesSimplesVisitor($page, $title, $headerPaintedTitle); | ||
69 | } | ||
70 | function presseVisitor() | ||
71 | { | ||
72 | $page = "presse"; | ||
73 | $title = "La presse"; | ||
74 | $headerPaintedTitle = 'La Presse'; | ||
75 | pageArticlesSimplesVisitor($page, $title, $headerPaintedTitle); | ||
76 | } | ||
77 | function ateliersVisitor() | ||
78 | { | ||
79 | $page = "ateliers"; | ||
80 | $title = "Ateliers"; | ||
81 | $headerPaintedTitle = 'Les ateliers de Melaine'; | ||
82 | pageArticlesSimplesVisitor($page, $title, $headerPaintedTitle); | ||
83 | } | ||
84 | function liensVisitor() | ||
85 | { | ||
86 | $page = "liens"; | ||
87 | $title = "Liens"; | ||
88 | $headerPaintedTitle = 'Liens'; | ||
89 | pageArticlesSimplesVisitor($page, $title, $headerPaintedTitle); | ||
90 | } | ||
91 | function peintureVisitor() | ||
92 | { | ||
93 | $page = "peinture"; | ||
94 | $title = "peinture"; | ||
95 | $headerPaintedTitle = 'Celtic Boats'; | ||
96 | pageArticlesSimplesVisitor($page, $title, $headerPaintedTitle); | ||
97 | } | ||
98 | function archivesVisitor() | ||
99 | { | ||
100 | $page = "archives"; | ||
101 | $title = "Archives"; | ||
102 | $headerPaintedTitle = 'Archives'; | ||
103 | pageArticlesSimplesVisitor($page, $title, $headerPaintedTitle); | ||
104 | } | ||
105 | |||
106 | |||
107 | // page plus complexe que les autres | ||
55 | function discoVisitor() | 108 | function discoVisitor() |
56 | { | 109 | { |
57 | $page_actuelle = "discographie"; | 110 | $page = "discographie"; |
58 | $title = "Discographie"; | 111 | $title = "Discographie"; |
59 | 112 | ||
60 | // modèle | 113 | // modèle |
61 | $Albums = new Album($page_actuelle); | 114 | $Albums = new Album($page); |
62 | //var_dump($Albums->fileList); die(); | 115 | //var_dump($Albums->fileList); die(); |
63 | 116 | ||
64 | // on récupère tout: JSON, HTML, noms et chemins des fichiers | 117 | // on récupère tout: JSON, HTML, noms et chemins des fichiers |
@@ -117,27 +170,27 @@ function discoVisitor() | |||
117 | // page d'un album | 170 | // page d'un album |
118 | function album($fileCode) | 171 | function album($fileCode) |
119 | { | 172 | { |
120 | $page_actuelle = 'discographie'; // ??? | 173 | $page = 'discographie'; // = nom du dossier où sont les données |
121 | 174 | ||
122 | $Albums = new Album($page_actuelle); | 175 | $Albums = new Album($page); |
123 | $Albums->getAllJSON(); | 176 | $Albums->getAllJSON(); |
124 | $Albums->fileCode = $fileCode; | 177 | $Albums->fileCode = $fileCode; |
125 | $Albums->readOne(); | 178 | $Albums->readOne(); |
126 | 179 | ||
127 | //var_dump($Albums); die(); | 180 | $title = $Albums->oneAlbum['titre']; |
128 | |||
129 | $album = $Albums->oneAlbum['HTMLcontent']; | 181 | $album = $Albums->oneAlbum['HTMLcontent']; |
130 | //$album = Album::readOneHTML($fileCode); | ||
131 | 182 | ||
132 | for($i = 0; $i < $Albums->fileListCount; $i++) | 183 | for($i = 0; $i < $Albums->fileListCount; $i++) |
133 | { | 184 | { |
134 | if(file_exists('data/discographie/html/' . $Albums->fileList[$i]['fileCode'] . '.html')) | 185 | if(file_exists('data/discographie/html/' . $Albums->fileList[$i]['fileCode'] . '.html')) |
135 | { | 186 | { |
136 | $lienAlbum[$i] = 'page=album&file_code=' . $Albums->fileList[$i]['fileCode']; | 187 | $lienAlbum[$i] = 'page=album&file_code=' . $Albums->fileList[$i]['fileCode']; |
188 | $linkDiscoChrono[$i] = 'linkChrono'; // pour le css | ||
137 | } | 189 | } |
138 | else | 190 | else |
139 | { | 191 | { |
140 | $lienAlbum[$i] = 'page=discographie#' . $Albums->fileList[$i]['titre']; | 192 | $lienAlbum[$i] = 'page=discographie#' . $Albums->fileList[$i]['titre']; |
193 | $linkDiscoChrono[$i] = 'noLinkChrono'; // pour le css | ||
141 | } | 194 | } |
142 | } | 195 | } |
143 | 196 | ||
@@ -146,18 +199,3 @@ function album($fileCode) | |||
146 | // HTML | 199 | // HTML |
147 | require('view/template.php'); | 200 | require('view/template.php'); |
148 | } | 201 | } |
149 | |||
150 | function presse() | ||
151 | {} | ||
152 | |||
153 | function ateliers() | ||
154 | {} | ||
155 | |||
156 | function liens() | ||
157 | {} | ||
158 | |||
159 | function peinture() | ||
160 | {} | ||
161 | |||
162 | function archives() | ||
163 | {} \ No newline at end of file | ||