diff --git a/SQL/001_tables.sql b/SQL/001_tables.sql index adb3f9c89be1cf6f3b2afaea7d2e08464fc4f509..a8ef5cec2a1e1b983a799a9eabfdc9cf203db859 100644 --- a/SQL/001_tables.sql +++ b/SQL/001_tables.sql @@ -5,6 +5,7 @@ date_envoi timestamp not null, status_envoi varchar(256) not null, destinataires text not null, destinataires_initials text, +copies text, sujet text, corps text, mots_clefs text, diff --git a/readme.md b/readme.md index 3224f968cedb9b6372d4e02fc7b33f03eb3177c1..d14ce396c40483876b448676d197d73175e8c52d 100644 --- a/readme.md +++ b/readme.md @@ -109,17 +109,18 @@ Tables pour les données du modules **unicaen_mail_mail** : table stockant les mails -| Column | Type | Obligatoire | Unique | Description | -|---|---|---|---|---| -| id | int | true | true | identifiant numerique du mail | -| date_envoi | timestamp| true | false | date de l'envoi du mail | -| status_envoi | varchar(256) | true | false | statut "indicatif" de l'envoi : FAILED, SUCCESS, PENDING | -| destinataires | text | true | false | chaîne de caractères concaténant les adresses des destinataires | -| destinataires_initials | text | false | false | Null si le mail n'as pas été redirigé. Sinon chaînes de caractères concaténant les adresse des destinataires initiaux du mail| -| sujet | text | false | false | sujet du mail | -| corps | text | false | false | corps du mail | -| mots_clefs | text | false | false | champ libre permettant d'associer des mots clefs aux mails (ie. id d'une entité, mots clés de recherche ...)| -| log | text | false | false | Log du mail | +| Column | Type | Obligatoire | Unique | Description | +|------------------------|---|---|---|-----------------------------------------------------------------------------------------------------------------------------| +| id | int | true | true | identifiant numerique du mail | +| date_envoi | timestamp| true | false | date de l'envoi du mail | +| status_envoi | varchar(256) | true | false | statut "indicatif" de l'envoi : FAILED, SUCCESS, PENDING | +| destinataires | text | true | false | chaîne de caractères concaténant les adresses des destinataires | +| destinataires_initials | text | false | false | Null si le mail n'a pas été redirigé. Sinon chaînes de caractères concaténant les adresse des destinataires initiaux du mail | +| copies | text | false | false | Null si le mail n'a pas de destinataire en copie | +| sujet | text | false | false | sujet du mail | +| corps | text | false | false | corps du mail | +| mots_clefs | text | false | false | champ libre permettant d'associer des mots clefs aux mails (ie. id d'une entité, mots clés de recherche ...) | +| log | text | false | false | Log du mail | Privilèges associés au module ============================= diff --git a/src/UnicaenMail/Entity/Db/Mail.php b/src/UnicaenMail/Entity/Db/Mail.php index d357f529d8e06bff4ca01ceb4cbc584a0eac56ee..ff6547355a06ff0ec53b8a33d8e7e3910f2178ed 100644 --- a/src/UnicaenMail/Entity/Db/Mail.php +++ b/src/UnicaenMail/Entity/Db/Mail.php @@ -14,6 +14,7 @@ class Mail { private ?int $id = null; private ?string $destinataires = null; private ?string $destinatairesInitials = null; + private ?string $copies = null; /** Contenu *******************************************************************************************************/ @@ -72,6 +73,16 @@ class Mail { $this->destinatairesInitials = $destinatairesInitials; } + public function getCopies(): ?string + { + return $this->copies; + } + + public function setCopies(?string $copies): void + { + $this->copies = $copies; + } + public function isRedirection() : bool { return $this->destinatairesInitials !== null; diff --git a/src/UnicaenMail/Entity/Db/Mapping/UnicaenMail.Entity.Db.Mail.dcm.xml b/src/UnicaenMail/Entity/Db/Mapping/UnicaenMail.Entity.Db.Mail.dcm.xml index c6e926bfd676eb1e29f18190a90369c77aaf49f2..2863a9836480166ec95b686ccc162b1687108bd1 100644 --- a/src/UnicaenMail/Entity/Db/Mapping/UnicaenMail.Entity.Db.Mail.dcm.xml +++ b/src/UnicaenMail/Entity/Db/Mapping/UnicaenMail.Entity.Db.Mail.dcm.xml @@ -10,6 +10,7 @@ <field name="statusEnvoi" type="string" length="256" column="status_envoi" nullable="false" /> <field name="destinataires" type="string" length="256" column="destinataires" nullable="false" /> <field name="destinatairesInitials" type="string" length="256" column="destinataires_initials" nullable="true" /> + <field name="copies" type="text" column="copies" nullable="true" /> <field name="sujet" type="string" length="9999" column="sujet" nullable="true" /> <field name="corps" type="string" length="9999" column="corps" nullable="true" /> <field name="motsClefs" type="string" length="9999" column="mots_clefs" nullable="true" /> diff --git a/src/UnicaenMail/Service/Mail/MailService.php b/src/UnicaenMail/Service/Mail/MailService.php index 166a985cd63cc11c0ce0f5cb96e45be62dd68fb2..b07131a555edb9f1aa864f1d31f44811ab71cc90 100644 --- a/src/UnicaenMail/Service/Mail/MailService.php +++ b/src/UnicaenMail/Service/Mail/MailService.php @@ -161,7 +161,7 @@ class MailService { return $value; } - public function sendMail($to, $subject, $texte, ?string $module = null, $attachement_path = null) : ?Mail + public function sendMail($to, $subject, $texte, ?string $module = null, $attachement_path = null, $copie = null) : ?Mail { try { $fromEmail = $this->fetchValueFromConfig('from_email', $module); @@ -182,6 +182,9 @@ class MailService { if (is_string($to)) $to=explode(',', $to); if (!is_array($to)) $to = [$to]; + if (is_string($copie)) $copie=explode(',', $copie); + if (!is_array($copie)) $copie = [$copie]; + /** @var Mail $mail */ $mail = $this->createMailEntity(); $mail->setDateEnvoi(new DateTime()); @@ -193,6 +196,7 @@ class MailService { } else { $mail->setDestinataires(implode(",",$to)); } + $mail->setCopies(implode(",", $copie)); $mail->setSujet($subject); @@ -208,6 +212,7 @@ class MailService { foreach ($redirectTo as $e) $message->addTo($e); } else { foreach ($to as $e) $message->addTo($e); + foreach ($copie as $e) $message->addCc($e); } $message->setSubject($sujet); $texte = "<p><i>Ce courrier électronique vous a été adressé <strong>automatiquement</strong> par l'application ".$subjectPrefix.". </i></p>" . $texte; @@ -220,6 +225,12 @@ class MailService { $texte .= "<ul>"; foreach (explode(",",$mail->getDestinatairesInitials()) as $t) $texte .= "<li>" . $t . "</li>"; $texte .= "</ul>"; + if ($copie !== null && !empty($copie)) { + $texte .= "Copie à :"; + $texte .= "<ul>"; + foreach ($copie as $e) $texte .= "<li>".$e."</li>"; + $texte .= "</ul>"; + } } $parts = []; diff --git a/src/UnicaenMail/View/Helper/partial/mail.phtml b/src/UnicaenMail/View/Helper/partial/mail.phtml index 9fdde0cf142ce7373cd763482d23e4082c4f59fd..2719f77a46e9ba340ef2765eb496b36ecd5e473a 100644 --- a/src/UnicaenMail/View/Helper/partial/mail.phtml +++ b/src/UnicaenMail/View/Helper/partial/mail.phtml @@ -43,6 +43,17 @@ use UnicaenMail\Entity\Db\Mail; <br/><span class="badge redir">Intialement : <?php echo $mail->getDestinatairesInitials(); ?></span> <?php endif; ?> </dd> + <dt> Copies </dt> + <dd> + <?php if ($mail->getCopies()) : ?> + <?php foreach (explode(',', $mail->getCopies()) as $m) : ?> + <?php if ($mail->isRedirection()) : ?> + <span class="badge redir">Intialement : + <?php endif; ?> + <?php echo $m; ?><br/> + <?php endforeach; ?> + <?php endif; ?> + </dd> <dt> Mots clefs </dt> <dd> <?php if ($mail->getMotsClefs() !== null) : ?> diff --git a/src/UnicaenMail/View/Helper/partial/mails.phtml b/src/UnicaenMail/View/Helper/partial/mails.phtml index b337419ac211acddce1fe1d6dcfc75ab1460a616..291f41431630cc1975af437089be72c048063191 100644 --- a/src/UnicaenMail/View/Helper/partial/mails.phtml +++ b/src/UnicaenMail/View/Helper/partial/mails.phtml @@ -60,6 +60,21 @@ if (!isset($options['droits']) OR !isset($options['droits']['supprimer'])) { <?php endforeach; ?> </ul> <?php endif; ?> + <?php if ($mail->getCopies() !== null and !empty($mail->getCopies())) : ?> + <ul> + <?php foreach (explode(',', $mail->getCopies()) as $c) : ?> + <li> + <span class="badge copie">copie </span> + <?php if ($mail->isRedirection()) : ?> + <span class="badge redir">Initialement : <?php echo $c; ?></span> + <?php else : ?> + <?php echo $c; ?> + <?php endif; ?> + </li> + <?php endforeach; ?> + </ul> + <?php endif; ?> + </td> <td data-order="<?php echo $mail->getDateEnvoi()->getTimestamp(); ?>"> <?php echo $mail->getDateEnvoi()->format('d/m/Y <br/> H:i'); ?> </td> <td> @@ -109,3 +124,8 @@ if (!isset($options['droits']) OR !isset($options['droits']['supprimer'])) { </tbody> </table> +<style> + span.copie { + background: #1b6d85; + } +</style> \ No newline at end of file