Loading module/Application/src/Application/Controller/ListeDiffusionController.php +13 −5 Changes for module/Application/src/Application/Controller/ListeDiffusionController.php: 13 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -99,7 +99,7 @@ class ListeDiffusionController extends AbstractController $this->listeDiffusionService->init(); $content = $this->listeDiffusionService->createMemberIncludeFileContent(); $this->handleMemberIncludeNotFoundEmails(); //$this->handleMemberIncludeNotFoundEmails(); // PAS POSSIBLE : Sympa interroge toutes les heures ! $filename = $this->listeDiffusionService->generateResultFileName('member'); $this->fileService->downloadFileFromContent($content, $filename); Loading @@ -118,7 +118,6 @@ class ListeDiffusionController extends AbstractController $this->listeDiffusionService->init(); $content = $this->listeDiffusionService->createOwnerIncludeFileContent(); $this->handleOwnerIncludeNotFoundEmails(); $filename = $this->listeDiffusionService->generateResultFileName('owner'); $this->fileService->downloadFileFromContent($content, $filename); Loading @@ -130,10 +129,19 @@ class ListeDiffusionController extends AbstractController private function handleMemberIncludeNotFoundEmails() { $individusSansAdresse = $this->listeDiffusionService->getIndividusSansAdresse(); if (empty($individusSansAdresse)) { return; } $individusAvecAdresse = $this->listeDiffusionService->getIndividusAvecAdresse(); // Solution retenue : Envoi d'une notif aux propriétaires de la liste. $ownerEmails = $this->fetchAdminTechEmails(); $this->notifierService->triggerAbonnesListeDiffusionSansAdresse($ownerEmails, $this->liste, $individusSansAdresse); // Envoi d'une notif aux admin tech $to = $this->fetchAdminTechEmails(); $this->notifierService->triggerAbonnesListeDiffusionSansAdresse( $to, $this->liste, $individusAvecAdresse, $individusSansAdresse); } /** Loading module/Application/src/Application/Service/ListeDiffusion/Plugin/ListeDiffusionPluginInterface.php +13 −12 Changes for module/Application/src/Application/Service/ListeDiffusion/Plugin/ListeDiffusionPluginInterface.php: 13 added lines, 12 removed lines. Original line number Diff line number Diff line Loading @@ -2,50 +2,51 @@ namespace Application\Service\ListeDiffusion\Plugin; use Application\Service\ListeDiffusion\ListeDiffusionParser; interface ListeDiffusionPluginInterface { /** * Spécifie la config. * * @param string[] $config */ public function setConfig(array $config); /** * Spécifie la liste concernée. * * @param string $liste */ public function setListe($liste); /** * Retourne <code>true</code> si ce plugin sait prendre en charge la liste courante. * * @return bool */ public function canHandleListe(); /** * * Initialisation OBLIGATOIRE. */ public function init(); /** * Retourne un tableau contenant les individus pour lesquels une adresse électronique a bien été trouvée. * * @return string[] [mail => nom individu] */ public function getIndividusAvecAdresse(); /** * Retourne un tableau contenant les individus pour lesquels aucune adresse électronique n'a été trouvée. * * @return string[] [id individu => nom individu] */ public function getIndividusSansAdresse(); // /** // * @return string[] // */ // public function fetchListesDiffusion(); /** * Génération du contenu du fichier attendu par Sympa pour obtenir les ABONNÉS d'une liste de diffusion. * * Le contenu retourné contient une adresse électronique par ligne. * * @return string */ public function createMemberIncludeFileContent(); Loading @@ -53,13 +54,13 @@ interface ListeDiffusionPluginInterface /** * Génération du contenu du fichier attendu par Sympa pour obtenir les PROPRIÉTAIRES d'une liste de diffusion. * * Le contenu retourné contient une adresse électronique par ligne. * * @return string */ public function createOwnerIncludeFileContent(); /** * Génère un nom pour le fichier attendu par Sympa. * * @param string $prefix * @return string */ Loading module/Application/src/Application/Service/Notification/NotifierService.php +18 −4 Changes for module/Application/src/Application/Service/Notification/NotifierService.php: 18 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -11,7 +11,6 @@ use Application\Entity\Db\Role; use Application\Entity\Db\These; use Application\Entity\Db\UniteRecherche; use Application\Entity\Db\Utilisateur; use Application\Entity\Db\ValiditeFichier; use Application\Entity\Db\Variable; use Application\Notification\CorrectionAttendueUpdatedNotification; use Application\Notification\ResultatTheseAdmisNotification; Loading Loading @@ -538,23 +537,37 @@ class NotifierService extends \Notification\Service\NotifierService /** * @param string[] $to * @param string $liste * @param string[] $individusAvecAdresse * @param string[] $individusSansAdresse */ public function triggerAbonnesListeDiffusionSansAdresse(array $to, $liste, array $individusSansAdresse) public function triggerAbonnesListeDiffusionSansAdresse( array $to, $liste, array $individusAvecAdresse, array $individusSansAdresse) { $to = array_unique(array_filter($to)); $notif = $this->createNotificationForAbonnesListeDiffusionSansAdresse($to, $liste, $individusSansAdresse); $notif = $this->createNotificationForAbonnesListeDiffusionSansAdresse( $to, $liste, $individusAvecAdresse, $individusSansAdresse); $this->trigger($notif); } /** * @param string[] $to * @param string $liste * @param string[] $individusAvecAdresse * @param string[] $individusSansAdresse * @return Notification */ private function createNotificationForAbonnesListeDiffusionSansAdresse(array $to, $liste, array $individusSansAdresse) private function createNotificationForAbonnesListeDiffusionSansAdresse( array $to, $liste, array $individusAvecAdresse, array $individusSansAdresse) { $notif = new Notification(); $notif Loading @@ -563,6 +576,7 @@ class NotifierService extends \Notification\Service\NotifierService ->setTemplatePath('application/liste-diffusion/mail/notif-abonnes-sans-adresse') ->setTemplateVariables([ 'liste' => $liste, 'individusAvecAdresse' => $individusAvecAdresse, 'individusSansAdresse' => $individusSansAdresse, ]); Loading module/Application/view/application/liste-diffusion/mail/notif-abonnes-sans-adresse.phtml +15 −2 Changes for module/Application/view/application/liste-diffusion/mail/notif-abonnes-sans-adresse.phtml: 15 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -5,7 +5,8 @@ use Application\View\Renderer\PhpRenderer; /** * @var PhpRenderer $this * @var string $liste * @var string[][] $individusSansAdresse * @var string[] $individusAvecAdresse * @var string[] $individusSansAdresse */ ?> Loading @@ -14,7 +15,7 @@ use Application\View\Renderer\PhpRenderer; Bonjour, </p> <p> Ceci est un mail envoyé automatiquement par l'application <?php echo $this->appInfos()->nom ?>. Ceci est un mail envoyé automatiquement par l'application <?php echo $app = $this->appInfos()->nom ?>. </p> <p> Vous êtes informé-e que des personnes sensées être abonnées à la liste de diffusion <?php echo $liste ?> Loading @@ -31,3 +32,15 @@ use Application\View\Renderer\PhpRenderer; <li><?php echo $individu ?></li> <?php endforeach ?> </ul> <p> Pour info, voici les personnes pour lesquelles <?php echo $app ?> dispose d'une adresse mail : </p> <ul> <?php foreach ($individusAvecAdresse as $individu): ?> <li><?php echo $individu ?></li> <?php endforeach ?> </ul> <p> Pour visualiser ces informations dans <?php echo $app ?>, cliquez sur <a href="<?php echo $url = $this->url('liste-diffusion/liste', ['liste' => $liste], ['force_canonical' => true]) ?>">ce lien</a>. </p> Loading
module/Application/src/Application/Controller/ListeDiffusionController.php +13 −5 Changes for module/Application/src/Application/Controller/ListeDiffusionController.php: 13 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -99,7 +99,7 @@ class ListeDiffusionController extends AbstractController $this->listeDiffusionService->init(); $content = $this->listeDiffusionService->createMemberIncludeFileContent(); $this->handleMemberIncludeNotFoundEmails(); //$this->handleMemberIncludeNotFoundEmails(); // PAS POSSIBLE : Sympa interroge toutes les heures ! $filename = $this->listeDiffusionService->generateResultFileName('member'); $this->fileService->downloadFileFromContent($content, $filename); Loading @@ -118,7 +118,6 @@ class ListeDiffusionController extends AbstractController $this->listeDiffusionService->init(); $content = $this->listeDiffusionService->createOwnerIncludeFileContent(); $this->handleOwnerIncludeNotFoundEmails(); $filename = $this->listeDiffusionService->generateResultFileName('owner'); $this->fileService->downloadFileFromContent($content, $filename); Loading @@ -130,10 +129,19 @@ class ListeDiffusionController extends AbstractController private function handleMemberIncludeNotFoundEmails() { $individusSansAdresse = $this->listeDiffusionService->getIndividusSansAdresse(); if (empty($individusSansAdresse)) { return; } $individusAvecAdresse = $this->listeDiffusionService->getIndividusAvecAdresse(); // Solution retenue : Envoi d'une notif aux propriétaires de la liste. $ownerEmails = $this->fetchAdminTechEmails(); $this->notifierService->triggerAbonnesListeDiffusionSansAdresse($ownerEmails, $this->liste, $individusSansAdresse); // Envoi d'une notif aux admin tech $to = $this->fetchAdminTechEmails(); $this->notifierService->triggerAbonnesListeDiffusionSansAdresse( $to, $this->liste, $individusAvecAdresse, $individusSansAdresse); } /** Loading
module/Application/src/Application/Service/ListeDiffusion/Plugin/ListeDiffusionPluginInterface.php +13 −12 Changes for module/Application/src/Application/Service/ListeDiffusion/Plugin/ListeDiffusionPluginInterface.php: 13 added lines, 12 removed lines. Original line number Diff line number Diff line Loading @@ -2,50 +2,51 @@ namespace Application\Service\ListeDiffusion\Plugin; use Application\Service\ListeDiffusion\ListeDiffusionParser; interface ListeDiffusionPluginInterface { /** * Spécifie la config. * * @param string[] $config */ public function setConfig(array $config); /** * Spécifie la liste concernée. * * @param string $liste */ public function setListe($liste); /** * Retourne <code>true</code> si ce plugin sait prendre en charge la liste courante. * * @return bool */ public function canHandleListe(); /** * * Initialisation OBLIGATOIRE. */ public function init(); /** * Retourne un tableau contenant les individus pour lesquels une adresse électronique a bien été trouvée. * * @return string[] [mail => nom individu] */ public function getIndividusAvecAdresse(); /** * Retourne un tableau contenant les individus pour lesquels aucune adresse électronique n'a été trouvée. * * @return string[] [id individu => nom individu] */ public function getIndividusSansAdresse(); // /** // * @return string[] // */ // public function fetchListesDiffusion(); /** * Génération du contenu du fichier attendu par Sympa pour obtenir les ABONNÉS d'une liste de diffusion. * * Le contenu retourné contient une adresse électronique par ligne. * * @return string */ public function createMemberIncludeFileContent(); Loading @@ -53,13 +54,13 @@ interface ListeDiffusionPluginInterface /** * Génération du contenu du fichier attendu par Sympa pour obtenir les PROPRIÉTAIRES d'une liste de diffusion. * * Le contenu retourné contient une adresse électronique par ligne. * * @return string */ public function createOwnerIncludeFileContent(); /** * Génère un nom pour le fichier attendu par Sympa. * * @param string $prefix * @return string */ Loading
module/Application/src/Application/Service/Notification/NotifierService.php +18 −4 Changes for module/Application/src/Application/Service/Notification/NotifierService.php: 18 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -11,7 +11,6 @@ use Application\Entity\Db\Role; use Application\Entity\Db\These; use Application\Entity\Db\UniteRecherche; use Application\Entity\Db\Utilisateur; use Application\Entity\Db\ValiditeFichier; use Application\Entity\Db\Variable; use Application\Notification\CorrectionAttendueUpdatedNotification; use Application\Notification\ResultatTheseAdmisNotification; Loading Loading @@ -538,23 +537,37 @@ class NotifierService extends \Notification\Service\NotifierService /** * @param string[] $to * @param string $liste * @param string[] $individusAvecAdresse * @param string[] $individusSansAdresse */ public function triggerAbonnesListeDiffusionSansAdresse(array $to, $liste, array $individusSansAdresse) public function triggerAbonnesListeDiffusionSansAdresse( array $to, $liste, array $individusAvecAdresse, array $individusSansAdresse) { $to = array_unique(array_filter($to)); $notif = $this->createNotificationForAbonnesListeDiffusionSansAdresse($to, $liste, $individusSansAdresse); $notif = $this->createNotificationForAbonnesListeDiffusionSansAdresse( $to, $liste, $individusAvecAdresse, $individusSansAdresse); $this->trigger($notif); } /** * @param string[] $to * @param string $liste * @param string[] $individusAvecAdresse * @param string[] $individusSansAdresse * @return Notification */ private function createNotificationForAbonnesListeDiffusionSansAdresse(array $to, $liste, array $individusSansAdresse) private function createNotificationForAbonnesListeDiffusionSansAdresse( array $to, $liste, array $individusAvecAdresse, array $individusSansAdresse) { $notif = new Notification(); $notif Loading @@ -563,6 +576,7 @@ class NotifierService extends \Notification\Service\NotifierService ->setTemplatePath('application/liste-diffusion/mail/notif-abonnes-sans-adresse') ->setTemplateVariables([ 'liste' => $liste, 'individusAvecAdresse' => $individusAvecAdresse, 'individusSansAdresse' => $individusSansAdresse, ]); Loading
module/Application/view/application/liste-diffusion/mail/notif-abonnes-sans-adresse.phtml +15 −2 Changes for module/Application/view/application/liste-diffusion/mail/notif-abonnes-sans-adresse.phtml: 15 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -5,7 +5,8 @@ use Application\View\Renderer\PhpRenderer; /** * @var PhpRenderer $this * @var string $liste * @var string[][] $individusSansAdresse * @var string[] $individusAvecAdresse * @var string[] $individusSansAdresse */ ?> Loading @@ -14,7 +15,7 @@ use Application\View\Renderer\PhpRenderer; Bonjour, </p> <p> Ceci est un mail envoyé automatiquement par l'application <?php echo $this->appInfos()->nom ?>. Ceci est un mail envoyé automatiquement par l'application <?php echo $app = $this->appInfos()->nom ?>. </p> <p> Vous êtes informé-e que des personnes sensées être abonnées à la liste de diffusion <?php echo $liste ?> Loading @@ -31,3 +32,15 @@ use Application\View\Renderer\PhpRenderer; <li><?php echo $individu ?></li> <?php endforeach ?> </ul> <p> Pour info, voici les personnes pour lesquelles <?php echo $app ?> dispose d'une adresse mail : </p> <ul> <?php foreach ($individusAvecAdresse as $individu): ?> <li><?php echo $individu ?></li> <?php endforeach ?> </ul> <p> Pour visualiser ces informations dans <?php echo $app ?>, cliquez sur <a href="<?php echo $url = $this->url('liste-diffusion/liste', ['liste' => $liste], ['force_canonical' => true]) ?>">ce lien</a>. </p>