aboutsummaryrefslogtreecommitdiff
path: root/src/view
diff options
context:
space:
mode:
Diffstat (limited to 'src/view')
-rw-r--r--src/view/ShowEmailsBuilder.php69
-rw-r--r--src/view/templates/form.php16
-rw-r--r--src/view/templates/form_admin.php8
-rw-r--r--src/view/templates/show_emails.php29
4 files changed, 116 insertions, 6 deletions
diff --git a/src/view/ShowEmailsBuilder.php b/src/view/ShowEmailsBuilder.php
new file mode 100644
index 0000000..3d2d6a9
--- /dev/null
+++ b/src/view/ShowEmailsBuilder.php
@@ -0,0 +1,69 @@
1<?php
2// src/view/ShowEmailsBuilder.php
3
4declare(strict_types=1);
5
6use App\Entity\Node;
7use App\Entity\Page;
8
9class ShowEmailsBuilder extends AbstractBuilder
10{
11 public function __construct(Node $node = null)
12 {
13 //parent::__construct($node);
14 $viewFile = self::VIEWS_PATH . $node->getName() . '.php';
15 if(file_exists($viewFile))
16 {
17 // objets Email groupés par destinataire
18 $emails_by_recipient = [];
19 foreach($node->getNodeData()->getEmails() as $email){
20 $recipient = $email->getRecipient();
21 $emails_by_recipient[$recipient][] = $email;
22 }
23
24 // affiche une table par destinataire
25 $emails = '';
26 foreach($emails_by_recipient as $recipient => $emails_list){
27 $html = '<h4>Destinataire: ' . $recipient . '</h4>
28 <table>
29 <thead>
30 <tr>
31 <th>Expéditeur</th>
32 <th>Adresse</th>
33 <th>Contenu</th>
34 <th>Date</th>
35 <th>Effacement prévu le</th>
36 <th>Sensible</th>
37 <th class="email_delete_button"></th>
38 </tr>
39 </thead>
40 <tbody>';
41
42 // insère les données
43 foreach($emails_list as $email){
44 $html .= '<tr id="' . $email->getId() . '">
45 <td>' . htmlspecialchars($email->getSenderName()) . '</td>
46 <td>' . htmlspecialchars($email->getSenderAddress()) . '</td>
47 <td>' . htmlspecialchars($email->getContent()) . '</td>
48 <td>' . $email->getDateTime()->format('d/m/Y') . '</td>
49 <td class="deletion_date">' . $email->getDeletionDate()->format('d/m/Y') . '</td>
50 <td><input class="make_checkbox_sensitive" type="checkbox" ' . ($email->isSensitive() ? 'checked' : '') . ' onclick="toggleSensitiveEmail(' . $email->getId() . ')"></td>
51 <td class="email_delete_button"><img class="action_icon" src="assets/delete-bin.svg" onclick="deleteEmail(' . $email->getId() . ')"></td>
52 </tr>';
53 }
54
55 $html .= '</tbody>
56 </table>';
57 $emails .= $html;
58 }
59
60 ob_start();
61 require $viewFile; // insertion de $this->html généré par unfoldMenu
62 $this->html = ob_get_clean(); // pas de concaténation .= cette fois on écrase
63 }
64 else{
65 header('Location: ' . new URL(['error' => 'show_emails_view_not_found']));
66 die;
67 }
68 }
69} \ No newline at end of file
diff --git a/src/view/templates/form.php b/src/view/templates/form.php
index 5c959a0..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()"> 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,4 +30,8 @@
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 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>
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>
33</section> \ No newline at end of file 37</section> \ No newline at end of file
diff --git a/src/view/templates/form_admin.php b/src/view/templates/form_admin.php
index 3559d25..bf281b5 100644
--- a/src/view/templates/form_admin.php
+++ b/src/view/templates/form_admin.php
@@ -4,6 +4,14 @@ 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 <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>
13</div>
14<div class="admin_form">
7 <h3>Paramètres d'envoi</h3> 15 <h3>Paramètres d'envoi</h3>
8 <p> 16 <p>
9 <label for="smtp_host_<?= $node->getNodeData()->getId() ?>">Adresse serveur SMTP</label> 17 <label for="smtp_host_<?= $node->getNodeData()->getId() ?>">Adresse serveur SMTP</label>
diff --git a/src/view/templates/show_emails.php b/src/view/templates/show_emails.php
new file mode 100644
index 0000000..2cb102e
--- /dev/null
+++ b/src/view/templates/show_emails.php
@@ -0,0 +1,29 @@
1<?php declare(strict_types=1); ?>
2<section class="show_emails">
3 <h3>Table "<?= TABLE_PREFIX ?>email" de la base de données</h3>
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.
6 </i></p>
7 <h4>Durées de conservation</h4>
8 <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 </i></p>
11 <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 sensibles quand à eux sont supprimés 5 ans après être devenus sensibles (durée juridique d'une preuve).
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>
19 <h4>Données sensibles</h4>
20 <p><i>
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>
22 Lorsqu'une personne demande la suppression de ses données personnelles du serveur, les e-mails sensibles peuvent être conservés, vous aurez noté que la durée de conservation est calculée différement.
23 </i></p>
24 <p><i>
25 Les spams ne sont pas sensibles, c'est juste de la pollution, supprimez-les!
26 </i></p>
27
28 <?= $emails ?>
29</section> \ No newline at end of file