aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/EmailService.php4
-rw-r--r--src/controller/ContactFormController.php9
-rw-r--r--src/model/entities/NodeData.php2
-rw-r--r--src/router.php3
-rw-r--r--src/view/templates/form.php12
-rw-r--r--src/view/templates/form_admin.php7
-rw-r--r--src/view/templates/show_emails.php10
7 files changed, 34 insertions, 13 deletions
diff --git a/src/EmailService.php b/src/EmailService.php
index 8671817..5d1b2eb 100644
--- a/src/EmailService.php
+++ b/src/EmailService.php
@@ -11,6 +11,8 @@ use App\Entity\NodeData;
11 11
12class EmailService 12class EmailService
13{ 13{
14 const KEEP_EMAILS_DEFAULT = false;
15
14 static public function send(EntityManager $entityManager, NodeData $form_data, bool $test_email, string $name = '', string $email = '', string $message = ''): bool 16 static public function send(EntityManager $entityManager, NodeData $form_data, bool $test_email, string $name = '', string $email = '', string $message = ''): bool
15 { 17 {
16 $mail = new PHPMailer(true); // true => exceptions 18 $mail = new PHPMailer(true); // true => exceptions
@@ -64,7 +66,7 @@ class EmailService
64 $mail->send(); 66 $mail->send();
65 67
66 // copie en BDD 68 // copie en BDD
67 if(!$test_email){ 69 if(!$test_email && ($form_data->getData()['keep_emails'] ?? self::KEEP_EMAILS_DEFAULT)){
68 $db_email = new Email($name, $email, Config::$email_dest, $message); 70 $db_email = new Email($name, $email, Config::$email_dest, $message);
69 $entityManager->persist($db_email); 71 $entityManager->persist($db_email);
70 self::updateLastContactDate($entityManager, $email); 72 self::updateLastContactDate($entityManager, $email);
diff --git a/src/controller/ContactFormController.php b/src/controller/ContactFormController.php
index 01faa72..243740f 100644
--- a/src/controller/ContactFormController.php
+++ b/src/controller/ContactFormController.php
@@ -7,6 +7,15 @@ use Doctrine\ORM\EntityManager;
7 7
8class ContactFormController 8class ContactFormController
9{ 9{
10 static public function keepEmails(EntityManager $entityManager, array $json): void
11 {
12 $form_data = $entityManager->find('App\Entity\NodeData', $json['id']);
13 $form_data->updateData('keep_emails', $json['checked'] ? true : false);
14 $entityManager->persist($form_data);
15 $entityManager->flush();
16 echo json_encode(['success' => true, 'checked' => $json['checked']]);
17 die;
18 }
10 static public function setEmailParam(EntityManager $entityManager, array $json): void 19 static public function setEmailParam(EntityManager $entityManager, array $json): void
11 { 20 {
12 $form = new FormValidation($json, 'email_params'); 21 $form = new FormValidation($json, 'email_params');
diff --git a/src/model/entities/NodeData.php b/src/model/entities/NodeData.php
index 19670fe..4c07a69 100644
--- a/src/model/entities/NodeData.php
+++ b/src/model/entities/NodeData.php
@@ -70,7 +70,7 @@ class NodeData
70 { 70 {
71 $this->data = $data; 71 $this->data = $data;
72 }*/ 72 }*/
73 public function updateData(string $key, string|array $value = ''): void 73 public function updateData(string $key, string|bool|array $value = ''): void
74 { 74 {
75 if($value !== ''){ 75 if($value !== ''){
76 $this->data[$key] = $value; 76 $this->data[$key] = $value;
diff --git a/src/router.php b/src/router.php
index d2eba18..228fae2 100644
--- a/src/router.php
+++ b/src/router.php
@@ -112,6 +112,9 @@ elseif($request->getMethod() === 'POST'){
112 } 112 }
113 113
114 /* -- bloc Formulaire -- */ 114 /* -- bloc Formulaire -- */
115 elseif($_GET['action'] === 'keep_emails'){
116 ContactFormController::keepEmails($entityManager, $json);
117 }
115 elseif($_GET['action'] === 'set_email_param'){ 118 elseif($_GET['action'] === 'set_email_param'){
116 ContactFormController::setEmailParam($entityManager, $json); 119 ContactFormController::setEmailParam($entityManager, $json);
117 } 120 }
diff --git a/src/view/templates/form.php b/src/view/templates/form.php
index df1dd0f..54dcd02 100644
--- a/src/view/templates/form.php
+++ b/src/view/templates/form.php
@@ -3,20 +3,20 @@
3 <h3><?= $title ?></h3> 3 <h3><?= $title ?></h3>
4 <?= $admin_content ?> 4 <?= $admin_content ?>
5 <div class="form_inputs"> 5 <div class="form_inputs">
6 <label for="email_name">Votre nom</label> 6 <label for="email_name_<?= $node->getNodeData()->getId() ?>">Votre nom</label>
7 <input id="email_name_<?= $node->getNodeData()->getId() ?>" type="text" name="email_name" value=""> 7 <input id="email_name_<?= $node->getNodeData()->getId() ?>" type="text" name="email_name" value="">
8 8
9 <label for="email_address">Votre e-mail</label> 9 <label for="email_address_<?= $node->getNodeData()->getId() ?>">Votre e-mail</label>
10 <input id="email_address_<?= $node->getNodeData()->getId() ?>" type="email" name="email_address" placeholder="mon-adresse@email.fr" value="" onchange="checkCase(<?= $node->getNodeData()->getId() ?>)"> 10 <input id="email_address_<?= $node->getNodeData()->getId() ?>" type="email" name="email_address" placeholder="mon-adresse@email.fr" value="" onchange="checkCase(<?= $node->getNodeData()->getId() ?>)">
11 11
12 <label for="email_message">Votre message</label> 12 <label for="email_message_<?= $node->getNodeData()->getId() ?>">Votre message</label>
13 <textarea id="email_message_<?= $node->getNodeData()->getId() ?>" type="text" name="email_message" rows="4"></textarea> 13 <textarea id="email_message_<?= $node->getNodeData()->getId() ?>" type="text" name="email_message" rows="4"></textarea>
14 14
15 <div class="full_width_column"> 15 <div class="full_width_column">
16 <label for="captcha" >Montrez que vous n'êtes pas un robot</label> 16 <label for="email_captcha_<?= $node->getNodeData()->getId() ?>" >Montrez que vous n'êtes pas un robot</label>
17 </div> 17 </div>
18 18
19 <label for="email_captcha" >Combien font <?= self::$captcha->getA() ?> fois <?= self::$captcha->getB() ?>?</label> 19 <label for="email_captcha_<?= $node->getNodeData()->getId() ?>" >Combien font <?= self::$captcha->getA() ?> fois <?= self::$captcha->getB() ?>?</label>
20 <div> 20 <div>
21 <input id="email_captcha_<?= $node->getNodeData()->getId() ?>" type="text" name="email_captcha" size="1" autocomplete="off"> 21 <input id="email_captcha_<?= $node->getNodeData()->getId() ?>" type="text" name="email_captcha" size="1" autocomplete="off">
22 </div> 22 </div>
@@ -30,7 +30,7 @@
30 30
31 <p class="send_email_success_<?= $node->getNodeData()->getId() ?> full_width_column"></p> 31 <p class="send_email_success_<?= $node->getNodeData()->getId() ?> full_width_column"></p>
32 </div> 32 </div>
33 <p class="form_gdpr"><i> 33 <p id="form_warning_<?= $node->getNodeData()->getId() ?>" class="form_warning <?= ($keep_emails ?? false) ? '' : 'hidden' ?>"><i>
34 Une copie de votre e-mail (nom, adresse et message) sera conservée dans notre base de données dans le but de pouvoir répondre à votre demande et et éventuellement dans un but de prospection. Ces données seront traitées automatiquement par notre serveur et conservées pendant au maximum 3 ans à compter de votre dernier message.<br> 34 Une copie de votre e-mail (nom, adresse et message) sera conservée dans notre base de données dans le but de pouvoir répondre à votre demande et et éventuellement dans un but de prospection. Ces données seront traitées automatiquement par notre serveur et conservées pendant au maximum 3 ans à compter de votre dernier message.<br>
35 Ce traitement repose sur votre consentement. Vous pouvez consulter, modifier ou supprimer vos données en base de données sur simple demande. 35 Ce traitement repose sur votre consentement. Vous pouvez consulter, modifier ou supprimer vos données en base de données sur simple demande.
36 </i></p> 36 </i></p>
diff --git a/src/view/templates/form_admin.php b/src/view/templates/form_admin.php
index cabfeb0..bf281b5 100644
--- a/src/view/templates/form_admin.php
+++ b/src/view/templates/form_admin.php
@@ -4,7 +4,12 @@ declare(strict_types=1);
4// note: l'id ici n'est pas celui du noeud bloc mais celui de l'entrée dans node_data correspondante 4// note: l'id ici n'est pas celui du noeud bloc mais celui de l'entrée dans node_data correspondante
5?> 5?>
6<div class="admin_form"> 6<div class="admin_form">
7 <a href="<?= new URL(['page' => 'emails']) ?>"><button>Consulter tous les e-mails</button></a> 7 <p>
8 <label for="keep_emails_<?= $node->getNodeData()->getId() ?>">Conserver les e-mails en base de données</label>
9 <input type="checkbox" id="keep_emails_<?= $node->getNodeData()->getId() ?>" <?= ($keep_emails ?? false) ? 'checked' : '' ?> onclick="keepEmails(<?= $node->getNodeData()->getId() ?>)">
10 </p>
11 <p><i>Notez que ces enregistrements sont des données personnelles et sont concernés par le RGPD.</i></p>
12 <p><a href="<?= new URL(['page' => 'emails']) ?>"><button>Consulter les e-mails enregistrés</button></a></p>
8</div> 13</div>
9<div class="admin_form"> 14<div class="admin_form">
10 <h3>Paramètres d'envoi</h3> 15 <h3>Paramètres d'envoi</h3>
diff --git a/src/view/templates/show_emails.php b/src/view/templates/show_emails.php
index 9954c6f..2cb102e 100644
--- a/src/view/templates/show_emails.php
+++ b/src/view/templates/show_emails.php
@@ -2,18 +2,20 @@
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. Ils sont conservés dans un but pratique et éventuellement dans un but de prospection, ou dans tout autre but permettant de justifier leur conservation.<br> 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.
6 Ils sont "effacés" automatiquement au bout d'un certain temps comme le requièrt le RGPD. Un nettoyeur est exécuté à chaque connexion au mode admin ou éventuellement à l'aide d'une tâche CRON (le serveur doit pour ça être configuré pour exécuter periodiquement la commande "php /chemin/du/site/bin/cron.php").
7 </i></p> 6 </i></p>
8 <h4>Durées de conservation</h4> 7 <h4>Durées de conservation</h4>
9 <p><i> 8 <p><i>
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ù leur expéditeur le demande.<br> 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>
11 Théoriquement, ce même nettoyage des vieux messages devrait être également réalisé par vous-même dans votre boite de messagerie.
12 </i></p> 10 </i></p>
13 <p><i> 11 <p><i>
14 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> 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>
15 Les e-mails sensibles quand à eux sont supprimés 5 ans après être devenus sensibles (durée juridique d'une preuve). 13 Les e-mails sensibles quand à eux sont supprimés 5 ans après être devenus sensibles (durée juridique d'une preuve).
16 </i></p> 14 </i></p>
15 <p><i>
16 Un nettoyeur supprimant les messages dépassant ces durées est exécuté au moment de votre connexion au mode administrateur.<br>
17 Si vos connexions sont rares, il est possible d'automatiser ce nettoyage à l'aide d'une tâche CRON. Pour cela, vous devez configurer le serveur pour qu'il exécute periodiquement la commande "php /chemin/du/site/bin/cron.php".
18 </i></p>
17 <h4>Données sensibles</h4> 19 <h4>Données sensibles</h4>
18 <p><i> 20 <p><i>
19 Un e-mail peut-être considéré comme "sensible". Vous pouvez rendre un e-mail sensible lorsqu'il possède une valeur de preuve dans le cas d'un litige.<br> 21 Un e-mail peut-être considéré comme "sensible". Vous pouvez rendre un e-mail sensible lorsqu'il possède une valeur de preuve dans le cas d'un litige.<br>