Le site est en cours de maintenance.
-Il devrait être de nouveau accessible rapidement.
- = !empty(Config::$email_dest) ? 'Contact: ' . Config::$email_dest . '
' : '' ?> -From 08dfc9125edf35ccbe3a6e21d9a9918c4b7fd6e9 Mon Sep 17 00:00:00 2001
From: polo Table ' . TABLE_PREFIX . 'log de la BDD
+
+
+
';
+ echo json_encode(['success' => true, 'view' => $view]);
+ }
+ die;
+ }
+ static public function eraseLogs(EntityManager $entityManager): void
+ {
+ try{
+ $table = $entityManager->getClassMetadata(Log::class)->getTableName();
+ $entityManager->getConnection()->executeStatement("TRUNCATE TABLE {$table}"); // SQL donné à DBAL
+ echo json_encode(['success' => true]);
+ }
+ catch(Exception $e){
+ echo json_encode(['success' => false]);
+ }
+ die;
+ }
+}
\ 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
// empêcher la réutilisation de cette fonction
self::preventReinstallation($entityManager);
- // fin de l'installation
- AppMode::set($entityManager, 'run');
-
// recharger la page?
//header('Location: ' . new URL);
}
@@ -83,6 +80,8 @@ class DatabaseSettingUp
$emails = new Page("Courriels", 'emails', "Consulter les courriels en base de données", true, false, false, NULL, NULL);
$emails->addCSS('show_emails');
$emails->addJS('form');
+ $maintenance = new Page("Maintenance", 'maintenance', "Opérations de maintenance, installation, sauvegarde, restauration", true, false, false, NULL, NULL);
+ $maintenance->addJS('maintenance');
/* -- table node -- */
// paramètres: name_node, article_timestamp, attributes, position, parent, page, article
@@ -97,6 +96,7 @@ class DatabaseSettingUp
$bloc_edit_menu = new Node('menu', 1, $main, $menu_paths, NULL);
$bloc_new_page = new Node('new_page', 1, $main, $new_page, NULL);
$bloc_emails = new Node('show_emails', 1, $main, $emails, NULL);
+ $bloc_maintenance = new Node('maintenance', 1, $main, $maintenance, NULL);
/* -- table node_data -- */
// paramètres: data, node, images
@@ -113,6 +113,7 @@ class DatabaseSettingUp
$entityManager->persist($menu_paths);
$entityManager->persist($new_page);
$entityManager->persist($emails);
+ $entityManager->persist($maintenance);
/* -- table node -- */
$entityManager->persist($head);
@@ -126,6 +127,7 @@ class DatabaseSettingUp
$entityManager->persist($bloc_edit_menu);
$entityManager->persist($bloc_new_page);
$entityManager->persist($bloc_emails);
+ $entityManager->persist($bloc_maintenance);
/* -- table node_data -- */
$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
$this->date_time = new \DateTime;
$this->success = $success;
}
+
+ public function getFormatedDate(): string
+ {
+ return $this->date_time->format('d/m/Y à H\hi');
+ }
+ public function getSuccess(): bool
+ {
+ return $this->success;
+ }
}
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 @@
-getRepository(AppMetadata::class)->find('mode');
- if(!$metadata){
- self::$mode = 'maintenance';
- }
- else{
- self::$mode = $metadata->getValue();
- }
- }
-
- public static function is(string $mode): bool
- {
- return self::$mode === $mode;
- }
-
- public static function get(): string
- {
- return self::$mode;
- }
-
- public static function set(EntityManager $entityManager, string $mode): void
- {
- self::$mode = $mode;
-
- $metadata = $entityManager->find(AppMetadata::class, 'mode');
- if($metadata){
- $metadata->setValue($mode);
- }
- else{
- $metadata = new AppMetadata('mode', $mode);
- $entityManager->persist($metadata);
- }
- $entityManager->flush();
-
- /*self::$data = [
- 'mode' => $mode,
- 'since' => (new DateTimeImmutable())->format('c'),
- 'by' => $by,
- ];*/
- }
-}
\ 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
static public string $index_path = '';
static public string $port = '80';
- // e-mails
+ // envoi e-mails
static public string $smtp_host = '';
static public string $smtp_username = '';
static public string $smtp_password = '';
static public string $smtp_secure = ''; // tls (smarttls) ou ssl (smtps) ou plain_text/chaine vide
- static public string $email_from = 'mon_adresse@email.fr';
+
+ // destination e-mails
+ static public string $email_from = ''; // correspondant affiché dans la boite de réception
static public string $email_from_name = 'site web';
- static public string $email_dest = '';
- static public string $email_dest_name = 'destinataire formulaire';
+ static public string $email_dest = ''; // destinataire affiché dans la boite de réception
+ static public string $email_dest_name = 'moi';
// copier dans ce tableau les variables contenant des chemins
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
$smtp_secure = $form_data->getData()['smtp_secure'] ?? Config::$smtp_secure;
$smtp_username = $form_data->getData()['smtp_username'] ?? Config::$smtp_username;
$smtp_password = $form_data->getData()['smtp_password'] ?? Config::$smtp_password;
- $email_from = $form_data->getData()['email_from'] ?? Config::$email_from; // une adresse bidon est donnée à setFrom()
- $email_from_name = $form_data->getData()['email_from_name'] ?? Config::$email_from_name; // = site web
+
+ $email_from = $form_data->getData()['email_from'] ?? Config::$email_from; // adresse de l'expéditeur affichée
+ $email_from = empty($email_from) ? $smtp_username : $email_from; // si vide
+ $email_from_name = $form_data->getData()['email_from_name'] ?? Config::$email_from_name; // = nom de l'expéditeur affiché
$email_dest = $form_data->getData()['email_dest'] ?? Config::$email_dest;
$email_dest_name = $form_data->getData()['email_dest_name'] ?? Config::$email_dest_name; // = destinataire formulaire
@@ -67,7 +69,7 @@ class EmailService
// copie en BDD
if(!$test_email && ($form_data->getData()['keep_emails'] ?? self::KEEP_EMAILS_DEFAULT)){
- $db_email = new Email($name, $email, Config::$email_dest, $message, $form_data);
+ $db_email = new Email($name, $email, $email_dest, $message, $form_data);
$entityManager->persist($db_email);
self::updateLastContactDate($entityManager, $email);
$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'){
}
// pages interdites
- if(!IS_ADMIN && in_array(CURRENT_PAGE, ['menu_paths', 'new_page', 'user_edit', 'emails'])){
+ if(!IS_ADMIN && in_array(CURRENT_PAGE, ['menu_paths', 'new_page', 'user_edit', 'emails', 'maintenance'])){
header('Location: ' . new URL);
die;
}
@@ -154,6 +154,16 @@ elseif($request->getMethod() === 'POST'){
elseif($request->query->get('action') === 'remove_event'){
CalendarController::removeEvent($json, $entityManager);
}
+
+ /* -- mode maintenance -- */
+ elseif($request->query->get('action') === 'get_logs'){
+ MaintenanceController::getLogs($entityManager);
+ die;
+ }
+ elseif($request->query->get('action') === 'erase_logs'){
+ MaintenanceController::eraseLogs($entityManager);
+ die;
+ }
else{
echo json_encode(['success' => false]);
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
$mode = 'administrateur';
$div_admin = 'logged_in';
}
- $link_new_page = new URL(['page' => 'new_page']);
- $link_change_paths = new URL(['page' => 'menu_paths']);
$link_change_password = new URL(['page' => 'user_edit', 'from' => CURRENT_PAGE]);
isset($_GET['id']) ? $link_change_password->addParams(['id' => $_GET['id']]) : '';
@@ -69,10 +67,11 @@ class FooterBuilder extends AbstractBuilder
$zone_admin = '' . "\n";
}
@@ -100,7 +99,7 @@ class FooterBuilder extends AbstractBuilder
private function makePageModifModeButton(): string
{
$link_edit_page = new URL(['page' => CURRENT_PAGE]);
- if(!in_array(CURRENT_PAGE, ['article', 'new_page', 'menu_paths'])) // ajouter 'user_edit' et 'connection' le jour où ces pages auront un footer
+ if(!in_array(CURRENT_PAGE, ['article', 'new_page', 'menu_paths', 'maintenance'])) // ajouter 'user_edit' et 'connection' le jour où ces pages auront un footer
{
if(MainBuilder::$modif_mode){
$link_edit_label = 'Sortir du mode modification';
@@ -109,7 +108,7 @@ class FooterBuilder extends AbstractBuilder
$link_edit_page->addParams(['mode' => 'page_modif']);
$link_edit_label = 'Modifier la page';
}
- return '' . "\n";
+ return '';
}
else{
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 @@
+getName() . '.php';
+
+ if(file_exists($viewFile)){
+ ob_start();
+ require $viewFile;
+ $this->html = ob_get_clean();
+ }
+ }
+}
\ 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
//private int $margin_left_multiplier = 29;
private string $options = '';
- public function __construct(?Node $node, bool $template = true)
+ public function __construct(Node $node, bool $template = true)
{
- // impossible de me rappeler pourquoi j'ai écrit ce test sur $node, pourquoi $node serait null?
- $viewFile = $node === null ? self::VIEWS_PATH . 'menu.php' : self::VIEWS_PATH . $node->getName() . '.php';
+ // dans une ancienne version $node pouvait être null mais je ne sais plus pourquoi
+ $viewFile = self::VIEWS_PATH . $node->getName() . '.php';
if(file_exists($viewFile))
{
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);
+
+
+ ';
+ foreach($data as $entry){
+ $view .= 'date et heure (Greenwich)
+ connexion réussie
+
+ ';
+ }
+ $view .= '' . $entry->getFormatedDate() . '
+ ' . ($entry->getSuccess() ? 'oui' : 'non') . '
+
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.
+Il s'agit du service qui acheminera les messages envoyés par ce formulaire.
+ Site web => serveur d'envoi => serveur de réception => votre application "mail"
+ 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. +
+Le site web peut ne pas réussir à se connecter à certains fournisseurs.
Le site est en cours de maintenance.
-Il devrait être de nouveau accessible rapidement.
- = !empty(Config::$email_dest) ? 'Contact: ' . Config::$email_dest . '
' : '' ?> -
+
+ Qui a essayé de se connecter, quand et a-t'il réussi?
+
+ +
+ +
- 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.
+ 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.
+ 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).
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.
- 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").
+ 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).
Les e-mails sensibles quand à eux sont supprimés 5 ans après être devenus sensibles (durée juridique d'une preuve).
-- cgit v1.2.3