Commit 25730b77 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Amélioration mais désactivaiton pour l'instant de la notif en cas d'abonnés sans adresse

parent 669b7f31
Loading
Loading
Loading
Loading
+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
@@ -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);
@@ -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);
@@ -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);
    }

    /**
+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
@@ -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();
@@ -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
     */
+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
@@ -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;
@@ -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
@@ -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,
            ]);

+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
@@ -5,7 +5,8 @@ use Application\View\Renderer\PhpRenderer;
/**
 * @var PhpRenderer $this
 * @var string $liste
 * @var string[][] $individusSansAdresse
 * @var string[] $individusAvecAdresse
 * @var string[] $individusSansAdresse
 */

?>
@@ -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 ?>
@@ -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>