aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2026-05-08 18:14:38 +0200
committerpolo <ordipolo@gmx.fr>2026-05-08 18:14:38 +0200
commit08dfc9125edf35ccbe3a6e21d9a9918c4b7fd6e9 (patch)
treea59e8dfc92596cdd15c7fbbb1dc0967c1f28b02a
parent69981561f83ba3a05217e75cac6c68e8dc671c45 (diff)
downloadcms-08dfc9125edf35ccbe3a6e21d9a9918c4b7fd6e9.tar.gz
cms-08dfc9125edf35ccbe3a6e21d9a9918c4b7fd6e9.tar.bz2
cms-08dfc9125edf35ccbe3a6e21d9a9918c4b7fd6e9.zip
page maintenance: voir/supprimer les logs et lien vers voir les e-mails, suppression des modes de fonctionnement
-rw-r--r--config/config-template.ini10
-rw-r--r--public/css/show_emails.css5
-rw-r--r--public/index.php20
-rw-r--r--public/js/maintenance.js36
-rw-r--r--src/controller/MaintenanceController.php50
-rw-r--r--src/model/DatabaseSettingUp.php8
-rw-r--r--src/model/entities/Log.php9
-rw-r--r--src/service/AppMode.php56
-rw-r--r--src/service/Config.php10
-rw-r--r--src/service/EmailService.php8
-rw-r--r--src/service/router.php12
-rw-r--r--src/view/FooterBuilder.php13
-rw-r--r--src/view/MaintenanceBuilder.php19
-rw-r--r--src/view/MenuBuilder.php6
-rw-r--r--src/view/templates/form_admin.php7
-rw-r--r--src/view/templates/maintenance.php51
-rw-r--r--src/view/templates/show_emails.php5
17 files changed, 195 insertions, 130 deletions
diff --git a/config/config-template.ini b/config/config-template.ini
index 07946f6..0bd02fc 100644
--- a/config/config-template.ini
+++ b/config/config-template.ini
@@ -11,12 +11,16 @@ protocol="http"
11port="80" 11port="80"
12 12
13[email] 13[email]
14; obligatoires pour que ça fonctionne
14smtp_host="smtp.service.de.messagerie" 15smtp_host="smtp.service.de.messagerie"
15smtp_username="adresse@email" 16smtp_username="adresse@email"
16smtp_password="" 17smtp_password=""
17; choisir "tls" (smarttls) ou "ssl" (smtps) ou "plain_text"/chaine vide 18; choisir "tls" (smarttls) ou "ssl" (smtps) ou "plain_text"/chaine vide
18smtp_secure="tls" 19smtp_secure="tls"
19email_from=""
20email_from_name=""
21email_dest="adresse@email" 20email_dest="adresse@email"
22email_dest_name="" \ No newline at end of file 21
22; optionnels
23; renseigner email_from pour montrer au destinataire une adresse différente de celle réellement utilisée pour lui éviter de "répondre au site web"
24email_from=""
25email_from_name="site web"
26email_dest_name="moi" \ No newline at end of file
diff --git a/public/css/show_emails.css b/public/css/show_emails.css
index 4fb9f3b..3f3c1d3 100644
--- a/public/css/show_emails.css
+++ b/public/css/show_emails.css
@@ -2,13 +2,12 @@
2 font-size: smaller; 2 font-size: smaller;
3} 3}
4.show_emails table{ 4.show_emails table{
5 5 background-color: white;
6 padding: 10px; 6 /*padding: 10px;*/
7 border-collapse: collapse; 7 border-collapse: collapse;
8 font-size: smaller; 8 font-size: smaller;
9} 9}
10.show_emails table th, .show_emails table td{ 10.show_emails table th, .show_emails table td{
11 background-color: white;
12 border: 1px black solid; 11 border: 1px black solid;
13} 12}
14.show_emails table td{ 13.show_emails table td{
diff --git a/public/index.php b/public/index.php
index 7d53b5c..bd6725e 100644
--- a/public/index.php
+++ b/public/index.php
@@ -41,27 +41,15 @@ require '../src/model/doctrine-bootstrap.php'; // isDevMode est sur "true", DSN
41require('../src/service/session.php'); 41require('../src/service/session.php');
42startSession($entityManager); 42startSession($entityManager);
43 43
44// mode de fonctionnement
45AppMode::load($entityManager);
46
47// tests de bon fonctionnement 44// tests de bon fonctionnement
48if(IS_ADMIN && AppMode::is('maintenance')){ 45if(IS_ADMIN){
49 Installation::phpDependancies(); 46 Installation::phpDependancies();
50 Installation::checkFilesAndFoldersRights(); 47 Installation::checkFilesAndFoldersRights();
51} 48}
52if(AppMode::is('maintenance')){ 49// remplit la BDD initiale, ne fonctionne que si la BDD est vide
53 // si appelée pour la 1ère fois, remplit la BDD et active le mode "run" 50DatabaseSettingUp::run($entityManager);
54 DatabaseSettingUp::run($entityManager);
55}
56$request = Request::createFromGlobals();
57 51
58// en mode maintenance laisser la possibilité de se logger, bloquer le reste du site aux visiteurs 52$request = Request::createFromGlobals();
59if(AppMode::is('maintenance') && !IS_ADMIN
60 && !($request->query->has('page') && $request->query->get('page') === 'connection')
61 && !($request->query->has('action') && $request->query->get('action') === 'connection')){
62 require '../src/view/templates/maintenance.php';
63 die;
64}
65 53
66 54
67/* -- partie 2: routage et contrôleurs -- */ 55/* -- partie 2: routage et contrôleurs -- */
diff --git a/public/js/maintenance.js b/public/js/maintenance.js
new file mode 100644
index 0000000..7406e0a
--- /dev/null
+++ b/public/js/maintenance.js
@@ -0,0 +1,36 @@
1function displayLogs(){
2 const log_table = getElementOrThrow('log_table');
3 console.log(log_table);
4
5 let fetcher = new Fetcher({
6 endpoint: 'index.php?action=get_logs',
7 method: 'POST',
8 onSuccess: (data) => {
9 log_table.innerHTML = data.view;
10 console.log(log_table);
11 },
12 onFailure: () => {
13 toastNotify("Aucune donnée disponible");
14 }
15 });
16 fetcher.send({});
17}
18function cleanLogs(){
19 if(!confirm('Voulez-vous vraiment supprimer cette entrée?')){
20 return;
21 }
22 const log_table = getElementOrThrow('log_table');
23
24 let fetcher = new Fetcher({
25 endpoint: 'index.php?action=erase_logs',
26 method: 'POST',
27 onSuccess: () => {
28 log_table.innerHTML = '';
29 toastNotify('Les journaux de connexion ont été effacés');
30 },
31 onFailure: () => {
32 toastNotify("L'application a rencontré une erreur, rien n'a été effacé");
33 }
34 });
35 fetcher.send({});
36} \ No newline at end of file
diff --git a/src/controller/MaintenanceController.php b/src/controller/MaintenanceController.php
new file mode 100644
index 0000000..49ec23f
--- /dev/null
+++ b/src/controller/MaintenanceController.php
@@ -0,0 +1,50 @@
1<?php
2// src/controller/MaintenanceController.php
3
4declare(strict_types=1);
5
6use Doctrine\ORM\EntityManager;
7use App\Entity\log;
8
9class MaintenanceController
10{
11 static public function getLogs(EntityManager $entityManager): void
12 {
13 $data = $entityManager->getRepository(Log::class)->findAll();
14 if(empty($data)){
15 echo json_encode(['success' => false]);
16 }
17 else{
18 $view = '<h4>Table ' . TABLE_PREFIX . 'log de la BDD</h4>
19 <table style="border-collapse: collapse; font-size: smaller;">
20 <thead>
21 <tr>
22 <th style="border: 1px black solid;">date et heure (Greenwich)</th>
23 <th style="border: 1px black solid;">connexion réussie</th>
24 </tr>
25 </thead>
26 <tbody>';
27 foreach($data as $entry){
28 $view .= '<tr>
29 <td style="border: 1px black solid;">' . $entry->getFormatedDate() . '</td>
30 <td style="border: 1px black solid;">' . ($entry->getSuccess() ? 'oui' : 'non') . '</td>
31 </tr>';
32 }
33 $view .= '</tbody></table>';
34 echo json_encode(['success' => true, 'view' => $view]);
35 }
36 die;
37 }
38 static public function eraseLogs(EntityManager $entityManager): void
39 {
40 try{
41 $table = $entityManager->getClassMetadata(Log::class)->getTableName();
42 $entityManager->getConnection()->executeStatement("TRUNCATE TABLE {$table}"); // SQL donné à DBAL
43 echo json_encode(['success' => true]);
44 }
45 catch(Exception $e){
46 echo json_encode(['success' => false]);
47 }
48 die;
49 }
50} \ No newline at end of file
diff --git a/src/model/DatabaseSettingUp.php b/src/model/DatabaseSettingUp.php
index 9ff7344..d64f226 100644
--- a/src/model/DatabaseSettingUp.php
+++ b/src/model/DatabaseSettingUp.php
@@ -28,9 +28,6 @@ class DatabaseSettingUp
28 // empêcher la réutilisation de cette fonction 28 // empêcher la réutilisation de cette fonction
29 self::preventReinstallation($entityManager); 29 self::preventReinstallation($entityManager);
30 30
31 // fin de l'installation
32 AppMode::set($entityManager, 'run');
33
34 // recharger la page? 31 // recharger la page?
35 //header('Location: ' . new URL); 32 //header('Location: ' . new URL);
36 } 33 }
@@ -83,6 +80,8 @@ class DatabaseSettingUp
83 $emails = new Page("Courriels", 'emails', "Consulter les courriels en base de données", true, false, false, NULL, NULL); 80 $emails = new Page("Courriels", 'emails', "Consulter les courriels en base de données", true, false, false, NULL, NULL);
84 $emails->addCSS('show_emails'); 81 $emails->addCSS('show_emails');
85 $emails->addJS('form'); 82 $emails->addJS('form');
83 $maintenance = new Page("Maintenance", 'maintenance', "Opérations de maintenance, installation, sauvegarde, restauration", true, false, false, NULL, NULL);
84 $maintenance->addJS('maintenance');
86 85
87 /* -- table node -- */ 86 /* -- table node -- */
88 // paramètres: name_node, article_timestamp, attributes, position, parent, page, article 87 // paramètres: name_node, article_timestamp, attributes, position, parent, page, article
@@ -97,6 +96,7 @@ class DatabaseSettingUp
97 $bloc_edit_menu = new Node('menu', 1, $main, $menu_paths, NULL); 96 $bloc_edit_menu = new Node('menu', 1, $main, $menu_paths, NULL);
98 $bloc_new_page = new Node('new_page', 1, $main, $new_page, NULL); 97 $bloc_new_page = new Node('new_page', 1, $main, $new_page, NULL);
99 $bloc_emails = new Node('show_emails', 1, $main, $emails, NULL); 98 $bloc_emails = new Node('show_emails', 1, $main, $emails, NULL);
99 $bloc_maintenance = new Node('maintenance', 1, $main, $maintenance, NULL);
100 100
101 /* -- table node_data -- */ 101 /* -- table node_data -- */
102 // paramètres: data, node, images 102 // paramètres: data, node, images
@@ -113,6 +113,7 @@ class DatabaseSettingUp
113 $entityManager->persist($menu_paths); 113 $entityManager->persist($menu_paths);
114 $entityManager->persist($new_page); 114 $entityManager->persist($new_page);
115 $entityManager->persist($emails); 115 $entityManager->persist($emails);
116 $entityManager->persist($maintenance);
116 117
117 /* -- table node -- */ 118 /* -- table node -- */
118 $entityManager->persist($head); 119 $entityManager->persist($head);
@@ -126,6 +127,7 @@ class DatabaseSettingUp
126 $entityManager->persist($bloc_edit_menu); 127 $entityManager->persist($bloc_edit_menu);
127 $entityManager->persist($bloc_new_page); 128 $entityManager->persist($bloc_new_page);
128 $entityManager->persist($bloc_emails); 129 $entityManager->persist($bloc_emails);
130 $entityManager->persist($bloc_maintenance);
129 131
130 /* -- table node_data -- */ 132 /* -- table node_data -- */
131 $entityManager->persist($head_data); 133 $entityManager->persist($head_data);
diff --git a/src/model/entities/Log.php b/src/model/entities/Log.php
index eeb76e4..222b8db 100644
--- a/src/model/entities/Log.php
+++ b/src/model/entities/Log.php
@@ -26,4 +26,13 @@ class Log
26 $this->date_time = new \DateTime; 26 $this->date_time = new \DateTime;
27 $this->success = $success; 27 $this->success = $success;
28 } 28 }
29
30 public function getFormatedDate(): string
31 {
32 return $this->date_time->format('d/m/Y à H\hi');
33 }
34 public function getSuccess(): bool
35 {
36 return $this->success;
37 }
29} 38}
diff --git a/src/service/AppMode.php b/src/service/AppMode.php
deleted file mode 100644
index 60b58bd..0000000
--- a/src/service/AppMode.php
+++ /dev/null
@@ -1,56 +0,0 @@
1<?php
2// src/service/AppMode.php
3
4// comme dans AppMetadata, prévoir d'ajouter des champs "since" et "by" (qui a changé quoi quel jour?)
5
6declare(strict_types=1);
7
8use App\Entity\AppMetadata;
9use Doctrine\ORM\EntityManager;
10
11class AppMode
12{
13 private static string $mode;
14
15 public static function load(EntityManager $entityManager): void
16 {
17 $metadata = $entityManager->getRepository(AppMetadata::class)->find('mode');
18 if(!$metadata){
19 self::$mode = 'maintenance';
20 }
21 else{
22 self::$mode = $metadata->getValue();
23 }
24 }
25
26 public static function is(string $mode): bool
27 {
28 return self::$mode === $mode;
29 }
30
31 public static function get(): string
32 {
33 return self::$mode;
34 }
35
36 public static function set(EntityManager $entityManager, string $mode): void
37 {
38 self::$mode = $mode;
39
40 $metadata = $entityManager->find(AppMetadata::class, 'mode');
41 if($metadata){
42 $metadata->setValue($mode);
43 }
44 else{
45 $metadata = new AppMetadata('mode', $mode);
46 $entityManager->persist($metadata);
47 }
48 $entityManager->flush();
49
50 /*self::$data = [
51 'mode' => $mode,
52 'since' => (new DateTimeImmutable())->format('c'),
53 'by' => $by,
54 ];*/
55 }
56} \ No newline at end of file
diff --git a/src/service/Config.php b/src/service/Config.php
index e59f728..7077e01 100644
--- a/src/service/Config.php
+++ b/src/service/Config.php
@@ -18,15 +18,17 @@ class Config
18 static public string $index_path = ''; 18 static public string $index_path = '';
19 static public string $port = '80'; 19 static public string $port = '80';
20 20
21 // e-mails 21 // envoi e-mails
22 static public string $smtp_host = ''; 22 static public string $smtp_host = '';
23 static public string $smtp_username = ''; 23 static public string $smtp_username = '';
24 static public string $smtp_password = ''; 24 static public string $smtp_password = '';
25 static public string $smtp_secure = ''; // tls (smarttls) ou ssl (smtps) ou plain_text/chaine vide 25 static public string $smtp_secure = ''; // tls (smarttls) ou ssl (smtps) ou plain_text/chaine vide
26 static public string $email_from = 'mon_adresse@email.fr'; 26
27 // destination e-mails
28 static public string $email_from = ''; // correspondant affiché dans la boite de réception
27 static public string $email_from_name = 'site web'; 29 static public string $email_from_name = 'site web';
28 static public string $email_dest = ''; 30 static public string $email_dest = ''; // destinataire affiché dans la boite de réception
29 static public string $email_dest_name = 'destinataire formulaire'; 31 static public string $email_dest_name = 'moi';
30 32
31 // copier dans ce tableau les variables contenant des chemins 33 // copier dans ce tableau les variables contenant des chemins
32 static private array $path_vars = []; 34 static private array $path_vars = [];
diff --git a/src/service/EmailService.php b/src/service/EmailService.php
index 6f4e93d..0ea8f39 100644
--- a/src/service/EmailService.php
+++ b/src/service/EmailService.php
@@ -22,8 +22,10 @@ class EmailService
22 $smtp_secure = $form_data->getData()['smtp_secure'] ?? Config::$smtp_secure; 22 $smtp_secure = $form_data->getData()['smtp_secure'] ?? Config::$smtp_secure;
23 $smtp_username = $form_data->getData()['smtp_username'] ?? Config::$smtp_username; 23 $smtp_username = $form_data->getData()['smtp_username'] ?? Config::$smtp_username;
24 $smtp_password = $form_data->getData()['smtp_password'] ?? Config::$smtp_password; 24 $smtp_password = $form_data->getData()['smtp_password'] ?? Config::$smtp_password;
25 $email_from = $form_data->getData()['email_from'] ?? Config::$email_from; // une adresse bidon est donnée à setFrom() 25
26 $email_from_name = $form_data->getData()['email_from_name'] ?? Config::$email_from_name; // = site web 26 $email_from = $form_data->getData()['email_from'] ?? Config::$email_from; // adresse de l'expéditeur affichée
27 $email_from = empty($email_from) ? $smtp_username : $email_from; // si vide
28 $email_from_name = $form_data->getData()['email_from_name'] ?? Config::$email_from_name; // = nom de l'expéditeur affiché
27 $email_dest = $form_data->getData()['email_dest'] ?? Config::$email_dest; 29 $email_dest = $form_data->getData()['email_dest'] ?? Config::$email_dest;
28 $email_dest_name = $form_data->getData()['email_dest_name'] ?? Config::$email_dest_name; // = destinataire formulaire 30 $email_dest_name = $form_data->getData()['email_dest_name'] ?? Config::$email_dest_name; // = destinataire formulaire
29 31
@@ -67,7 +69,7 @@ class EmailService
67 69
68 // copie en BDD 70 // copie en BDD
69 if(!$test_email && ($form_data->getData()['keep_emails'] ?? self::KEEP_EMAILS_DEFAULT)){ 71 if(!$test_email && ($form_data->getData()['keep_emails'] ?? self::KEEP_EMAILS_DEFAULT)){
70 $db_email = new Email($name, $email, Config::$email_dest, $message, $form_data); 72 $db_email = new Email($name, $email, $email_dest, $message, $form_data);
71 $entityManager->persist($db_email); 73 $entityManager->persist($db_email);
72 self::updateLastContactDate($entityManager, $email); 74 self::updateLastContactDate($entityManager, $email);
73 $entityManager->flush(); 75 $entityManager->flush();
diff --git a/src/service/router.php b/src/service/router.php
index fc6b028..508721c 100644
--- a/src/service/router.php
+++ b/src/service/router.php
@@ -39,7 +39,7 @@ if($request->getMethod() === 'GET'){
39 } 39 }
40 40
41 // pages interdites 41 // pages interdites
42 if(!IS_ADMIN && in_array(CURRENT_PAGE, ['menu_paths', 'new_page', 'user_edit', 'emails'])){ 42 if(!IS_ADMIN && in_array(CURRENT_PAGE, ['menu_paths', 'new_page', 'user_edit', 'emails', 'maintenance'])){
43 header('Location: ' . new URL); 43 header('Location: ' . new URL);
44 die; 44 die;
45 } 45 }
@@ -154,6 +154,16 @@ elseif($request->getMethod() === 'POST'){
154 elseif($request->query->get('action') === 'remove_event'){ 154 elseif($request->query->get('action') === 'remove_event'){
155 CalendarController::removeEvent($json, $entityManager); 155 CalendarController::removeEvent($json, $entityManager);
156 } 156 }
157
158 /* -- mode maintenance -- */
159 elseif($request->query->get('action') === 'get_logs'){
160 MaintenanceController::getLogs($entityManager);
161 die;
162 }
163 elseif($request->query->get('action') === 'erase_logs'){
164 MaintenanceController::eraseLogs($entityManager);
165 die;
166 }
157 else{ 167 else{
158 echo json_encode(['success' => false]); 168 echo json_encode(['success' => false]);
159 die; 169 die;
diff --git a/src/view/FooterBuilder.php b/src/view/FooterBuilder.php
index f1623e7..da16758 100644
--- a/src/view/FooterBuilder.php
+++ b/src/view/FooterBuilder.php
@@ -58,8 +58,6 @@ class FooterBuilder extends AbstractBuilder
58 $mode = 'administrateur'; 58 $mode = 'administrateur';
59 $div_admin = 'logged_in'; 59 $div_admin = 'logged_in';
60 } 60 }
61 $link_new_page = new URL(['page' => 'new_page']);
62 $link_change_paths = new URL(['page' => 'menu_paths']);
63 61
64 $link_change_password = new URL(['page' => 'user_edit', 'from' => CURRENT_PAGE]); 62 $link_change_password = new URL(['page' => 'user_edit', 'from' => CURRENT_PAGE]);
65 isset($_GET['id']) ? $link_change_password->addParams(['id' => $_GET['id']]) : ''; 63 isset($_GET['id']) ? $link_change_password->addParams(['id' => $_GET['id']]) : '';
@@ -69,10 +67,11 @@ class FooterBuilder extends AbstractBuilder
69 67
70 $zone_admin = '<div class="admin_buttons_zone"> 68 $zone_admin = '<div class="admin_buttons_zone">
71 <p>Vous êtes en mode ' . $mode . ".</p>\n" . 69 <p>Vous êtes en mode ' . $mode . ".</p>\n" .
72 '<div><a href="' . $link_new_page . '"><button>Nouvelle page</button></a></div>' . "\n"; 70 '<div><a href="' . new URL(['page' => 'new_page']) . '"><button>Nouvelle page</button></a></div>' . "\n" .
73 $zone_admin .= $this->makePageModifModeButton(); 71 $this->makePageModifModeButton() . "\n" .
74 $zone_admin .= '<div><a href="' . $link_change_paths . '"><button>Menu et chemins</button></a></div>' . "\n" . 72 '<div><a href="' . new URL(['page' => 'menu_paths']) . '"><button>Menu et chemins</button></a></div>' . "\n" .
75 '<div><a href="' . $link_change_password . '"><button>Mon compte</button></a></div>' . "\n" . 73 '<div><a href="' . $link_change_password . '"><button>Mon compte</button></a></div>' . "\n" .
74 '<div><a href="' . new URL(['page' => 'maintenance']) . '"><button>Maintenance</button></a></div>' . "\n" .
76 '<div><a href="' . $link_logout . '"><button>Déconnexion</button></a></div>' . "\n" . 75 '<div><a href="' . $link_logout . '"><button>Déconnexion</button></a></div>' . "\n" .
77 '</div>' . "\n"; 76 '</div>' . "\n";
78 } 77 }
@@ -100,7 +99,7 @@ class FooterBuilder extends AbstractBuilder
100 private function makePageModifModeButton(): string 99 private function makePageModifModeButton(): string
101 { 100 {
102 $link_edit_page = new URL(['page' => CURRENT_PAGE]); 101 $link_edit_page = new URL(['page' => CURRENT_PAGE]);
103 if(!in_array(CURRENT_PAGE, ['article', 'new_page', 'menu_paths'])) // ajouter 'user_edit' et 'connection' le jour où ces pages auront un footer 102 if(!in_array(CURRENT_PAGE, ['article', 'new_page', 'menu_paths', 'maintenance'])) // ajouter 'user_edit' et 'connection' le jour où ces pages auront un footer
104 { 103 {
105 if(MainBuilder::$modif_mode){ 104 if(MainBuilder::$modif_mode){
106 $link_edit_label = 'Sortir du mode modification'; 105 $link_edit_label = 'Sortir du mode modification';
@@ -109,7 +108,7 @@ class FooterBuilder extends AbstractBuilder
109 $link_edit_page->addParams(['mode' => 'page_modif']); 108 $link_edit_page->addParams(['mode' => 'page_modif']);
110 $link_edit_label = 'Modifier la page'; 109 $link_edit_label = 'Modifier la page';
111 } 110 }
112 return '<div><a href="' . $link_edit_page . '"><button>' . $link_edit_label . '</button></a></div>' . "\n"; 111 return '<div><a href="' . $link_edit_page . '"><button>' . $link_edit_label . '</button></a></div>';
113 } 112 }
114 else{ 113 else{
115 return ''; 114 return '';
diff --git a/src/view/MaintenanceBuilder.php b/src/view/MaintenanceBuilder.php
new file mode 100644
index 0000000..f5c60ed
--- /dev/null
+++ b/src/view/MaintenanceBuilder.php
@@ -0,0 +1,19 @@
1<?php
2// src/view/MaintenanceBuilder.php
3
4declare(strict_types=1);
5
6use App\Entity\Node;
7
8class MaintenanceBuilder extends AbstractBuilder
9{
10 public function __construct(Node $node){
11 $viewFile = self::VIEWS_PATH . $node->getName() . '.php';
12
13 if(file_exists($viewFile)){
14 ob_start();
15 require $viewFile;
16 $this->html = ob_get_clean();
17 }
18 }
19} \ No newline at end of file
diff --git a/src/view/MenuBuilder.php b/src/view/MenuBuilder.php
index 41ee189..85335df 100644
--- a/src/view/MenuBuilder.php
+++ b/src/view/MenuBuilder.php
@@ -13,10 +13,10 @@ class MenuBuilder extends AbstractBuilder
13 //private int $margin_left_multiplier = 29; 13 //private int $margin_left_multiplier = 29;
14 private string $options = ''; 14 private string $options = '';
15 15
16 public function __construct(?Node $node, bool $template = true) 16 public function __construct(Node $node, bool $template = true)
17 { 17 {
18 // impossible de me rappeler pourquoi j'ai écrit ce test sur $node, pourquoi $node serait null? 18 // dans une ancienne version $node pouvait être null mais je ne sais plus pourquoi
19 $viewFile = $node === null ? self::VIEWS_PATH . 'menu.php' : self::VIEWS_PATH . $node->getName() . '.php'; 19 $viewFile = self::VIEWS_PATH . $node->getName() . '.php';
20 20
21 if(file_exists($viewFile)) 21 if(file_exists($viewFile))
22 { 22 {
diff --git a/src/view/templates/form_admin.php b/src/view/templates/form_admin.php
index 7156374..d745656 100644
--- a/src/view/templates/form_admin.php
+++ b/src/view/templates/form_admin.php
@@ -49,7 +49,12 @@ declare(strict_types=1);
49 <input type="hidden" id="smtp_password_hidden_<?= $node->getNodeData()->getId() ?>" value=""> 49 <input type="hidden" id="smtp_password_hidden_<?= $node->getNodeData()->getId() ?>" value="">
50 <button onclick="setEmailParam('smtp_password', <?= $node->getNodeData()->getId() ?>)">Valider</button> 50 <button onclick="setEmailParam('smtp_password', <?= $node->getNodeData()->getId() ?>)">Valider</button>
51 </p> 51 </p>
52 <p><i>Il s'agit du service qui acheminera les messages envoyés par ce formulaire. Les services d'envoi de courriels nécéssitent généralement de s'y connecter avec un identifiant et un mot de passe. Les adresses d'envoi et de réception peuvent être identiques. Le site web peut ne pas réussir à se connecter à certains fournisseurs.</i></p> 52 <p><i>Il s'agit du service qui acheminera les messages envoyés par ce formulaire.<br>
53 Site web => serveur d'envoi => serveur de réception => votre application "mail"</i></p>
54 <p><i>
55 Ce formulaire utilise les paramètres dans le fichier config.ini sur le serveur à mois que vous n'en renseignez d'autres ci-dessus. Les adresses d'envoi et de réception peuvent être identiques.
56 </i></p>
57 <p><i>Le site web peut ne pas réussir à se connecter à certains fournisseurs.</i></p>
53</div> 58</div>
54<div class="admin_form"> 59<div class="admin_form">
55 <h3>Paramètres de réception</h3> 60 <h3>Paramètres de réception</h3>
diff --git a/src/view/templates/maintenance.php b/src/view/templates/maintenance.php
index 9a2434f..426831f 100644
--- a/src/view/templates/maintenance.php
+++ b/src/view/templates/maintenance.php
@@ -1,29 +1,24 @@
1<?php declare(strict_types=1); ?> 1<?php declare(strict_types=1); ?>
2<!DOCTYPE html> 2<section>
3<html lang="fr"> 3 <h3>Maintenance du site</h3>
4 <head> 4 <div class="basic_div">
5 <meta charset="utf-8"> 5 <p>
6 <title>Site en maintenance</title> 6 <button onclick="displayLogs()">Consulter les journaux de connexion</button><br>
7 <link rel="icon" type="" href=""> 7 <i>Qui a essayé de se connecter, quand et a-t'il réussi?</i>
8 <meta name="description" content="site en maintenance"> 8 </p>
9 <meta name="viewport" content="width=device-width"> 9 <p>
10 <link rel="stylesheet" href="css/head.css"> 10 <button onclick="cleanLogs()">Effacer les journaux de connexion</button>
11 <link rel="stylesheet" href="css/body.css"> 11 </p>
12 <link rel="stylesheet" href="css/foot.css"> 12 <div id="log_table"></div>
13 <meta http-equiv="refresh" content="60" /> <!-- rafraîchissement automatique toutes les minutes --> 13 </div>
14 </head> 14 <div class="basic_div">
15 <body> 15 <p>
16 <main> 16 <a href="http://nageurs.localhost/index.php?page=emails"><button>Consulter les emails</button></a><br>
17 <p>Le site est en cours de maintenance.</p> 17 <i>Emails reçus depuis tous les formulaires de contact</i>
18 <p>Il devrait être de nouveau accessible rapidement.</p> 18 </p>
19 <?= !empty(Config::$email_dest) ? '<p>Contact: ' . Config::$email_dest . '</p>' : '' ?> 19 </div>
20 </main> 20
21 <footer> 21 <div class="basic_div">
22 <div class="logged_out"> 22 <a href="http://nageurs.localhost/index.php"><button>Retour au site</button></a>
23 <button> 23 </div>
24 <a href="<?= new URL(['page' => 'connection']) ?>">Mode admin</a> 24</section> \ No newline at end of file
25 </button>
26 </div>
27 </footer>
28 </body>
29</html> \ No newline at end of file
diff --git a/src/view/templates/show_emails.php b/src/view/templates/show_emails.php
index 2cb102e..f561dc7 100644
--- a/src/view/templates/show_emails.php
+++ b/src/view/templates/show_emails.php
@@ -2,14 +2,15 @@
2<section class="show_emails"> 2<section class="show_emails">
3 <h3>Table "<?= TABLE_PREFIX ?>email" de la base de données</h3> 3 <h3>Table "<?= TABLE_PREFIX ?>email" de la base de données</h3>
4 <p><i> 4 <p><i>
5 Les e-mails ci-dessous sont des copies de ceux arrivés dans votre boite de messagerie (qui en théorie sont également concernés par le RGPD) depuis tous les formulaires existant sur le site. Ils sont conservés dans un but pratique et éventuellement dans un but de prospection, ou dans tout autre but justifiant leur conservation. 5 Les e-mails ci-dessous sont des copies de ceux arrivés dans votre boite de messagerie depuis tous les formulaires existant sur le site. Ils sont conservés dans un but pratique (historique, prospection) ou dans tout autre but justifiant leur conservation. Cette conservation est optionnelle et règlementée par la loi européenne RGPD.<br>
6 <b>Notez qu'utiliser cette application ne vous garantit pas d'être en conformité avec la loi, c'est un outil vous permettant de faire les choses comme vous l'entendez. Si tout ceci vous gêne, désactivez le stockage des e-mails et supprimez ceux déjà enregistrés (ci-dessous).</b>
6 </i></p> 7 </i></p>
7 <h4>Durées de conservation</h4> 8 <h4>Durées de conservation</h4>
8 <p><i> 9 <p><i>
9 Ce sont des durées maximales, les données peuvent être supprimées plus tôt ou même immédiatement. Le faire est d'ailleurs une obligation dans le cas où les personnes concernées le demandent.<br> 10 Ce sont des durées maximales, les données peuvent être supprimées plus tôt ou même immédiatement. Le faire est d'ailleurs une obligation dans le cas où les personnes concernées le demandent.<br>
10 </i></p> 11 </i></p>
11 <p><i> 12 <p><i>
12 Les e-mails ordinaires d'un même expéditeur (même adresse e-mail) sont tous supprimés simultanément lorsque le plus récent d'entre eux atteint les 3 ans (utilisateur "inactif").<br> 13 Les e-mails ordinaires d'un même expéditeur (même adresse e-mail) sont tous supprimés simultanément lorsque le plus récent d'entre eux atteint les 3 ans (utilisateur est considéré inactif).<br>
13 Les e-mails sensibles quand à eux sont supprimés 5 ans après être devenus sensibles (durée juridique d'une preuve). 14 Les e-mails sensibles quand à eux sont supprimés 5 ans après être devenus sensibles (durée juridique d'une preuve).
14 </i></p> 15 </i></p>
15 <p><i> 16 <p><i>