diff options
| author | polo <ordipolo@gmx.fr> | 2025-12-16 22:41:57 +0100 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2025-12-16 22:41:57 +0100 |
| commit | 423755b019a09111b971e36c53e2557e2f5a704f (patch) | |
| tree | 022c0a911133d676dd8e4e90379f8b186863fc88 /src/view | |
| parent | 22da81bbcb9bb61fa484c9af6fbb667b685d2f9b (diff) | |
| download | cms-423755b019a09111b971e36c53e2557e2f5a704f.tar.gz cms-423755b019a09111b971e36c53e2557e2f5a704f.tar.bz2 cms-423755b019a09111b971e36c53e2557e2f5a704f.zip | |
page emails, application du RGPD: table email et nettoyeur, renommage de $id_email
Diffstat (limited to 'src/view')
| -rw-r--r-- | src/view/ShowEmailsBuilder.php | 69 | ||||
| -rw-r--r-- | src/view/templates/form.php | 6 | ||||
| -rw-r--r-- | src/view/templates/form_admin.php | 3 | ||||
| -rw-r--r-- | src/view/templates/show_emails.php | 27 |
4 files changed, 104 insertions, 1 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 | |||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 6 | use App\Entity\Node; | ||
| 7 | use App\Entity\Page; | ||
| 8 | |||
| 9 | class 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..df1dd0f 100644 --- a/src/view/templates/form.php +++ b/src/view/templates/form.php | |||
| @@ -7,7 +7,7 @@ | |||
| 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">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">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> |
| @@ -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 class="form_gdpr"><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..cabfeb0 100644 --- a/src/view/templates/form_admin.php +++ b/src/view/templates/form_admin.php | |||
| @@ -4,6 +4,9 @@ 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> | ||
| 8 | </div> | ||
| 9 | <div class="admin_form"> | ||
| 7 | <h3>Paramètres d'envoi</h3> | 10 | <h3>Paramètres d'envoi</h3> |
| 8 | <p> | 11 | <p> |
| 9 | <label for="smtp_host_<?= $node->getNodeData()->getId() ?>">Adresse serveur SMTP</label> | 12 | <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..9954c6f --- /dev/null +++ b/src/view/templates/show_emails.php | |||
| @@ -0,0 +1,27 @@ | |||
| 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. 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> | ||
| 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> | ||
| 8 | <h4>Durées de conservation</h4> | ||
| 9 | <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> | ||
| 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> | ||
| 13 | <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> | ||
| 15 | 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> | ||
| 17 | <h4>Données sensibles</h4> | ||
| 18 | <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> | ||
| 20 | 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. | ||
| 21 | </i></p> | ||
| 22 | <p><i> | ||
| 23 | Les spams ne sont pas sensibles, c'est juste de la pollution, supprimez-les! | ||
| 24 | </i></p> | ||
| 25 | |||
| 26 | <?= $emails ?> | ||
| 27 | </section> \ No newline at end of file | ||
