From b9fee6b96aae850f4929c6e1084b716f98a4d28f Mon Sep 17 00:00:00 2001
From: Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
Date: Sun, 22 Nov 2020 18:10:30 +0100
Subject: [PATCH] =?UTF-8?q?Aide=20de=20vue=20Messenger=20:=20collecte=20de?=
 =?UTF-8?q?s=20messages=20dans=20le=20namespace=20tel=20quel=20(fonctionne?=
 =?UTF-8?q?=20aussi=20si=20le=20namespace=20est=20une=20s=C3=A9v=C3=A9rit?=
 =?UTF-8?q?=C3=A9)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 CHANGELOG.md                             |  5 ++++
 src/UnicaenApp/View/Helper/Messenger.php | 37 ++++++++++++------------
 2 files changed, 23 insertions(+), 19 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index c273c0f9..5d10516b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 CHANGELOG
 =========
+
+3.1.12
+-------------------
+- Aide de vue Messenger : collecte des messages dans le namespace tel quel (fonctionne aussi si le namespace est une sévérité)
+
 3.1.11 (18/06/2020)
 -------------------
 Correction d'un bug au niveau de l'intranavigatuer : le sélecteur no-intranavigation fonctionne maintenant pour les formulaires
diff --git a/src/UnicaenApp/View/Helper/Messenger.php b/src/UnicaenApp/View/Helper/Messenger.php
index befd5a87..46ece215 100644
--- a/src/UnicaenApp/View/Helper/Messenger.php
+++ b/src/UnicaenApp/View/Helper/Messenger.php
@@ -181,38 +181,37 @@ class Messenger extends AbstractHelper implements MessageAwareInterface, EventMa
     }
 
     /**
-     * @param bool   $currentMessages
-     * @param string $namespace Facultatif, ex: 'info', 'these/danger', 'these/*', 'these' (i.e. 'these/*')
+     * @param bool $currentMessages
+     * @param string|null $namespace Facultatif, ex: 'info', 'these/danger', 'these/*', 'these' (i.e. 'these/*')
      * @return static
      */
-    private function _importFromFlashMessages($currentMessages, $namespace = null)
+    private function _importFromFlashMessages(bool $currentMessages, string $namespace = null)
     {
         $getMethod = $currentMessages ? 'getCurrentMessagesFromNamespace' : 'getMessagesFromNamespace';
 
         $fm = $this->getPluginFlashMessenger();
 
         if ($namespace) {
-            $severities = [self::ERROR, self::SUCCESS, self::INFO, self::WARNING];
-            if (in_array($namespace, $severities)) {
-                foreach ((array)$fm->$getMethod($namespace) as $message) {
-                    $this->addMessage($message, $namespace);
+            // collecte des messages dans les namespaces de la forme "namespace/sévérité"
+            $array = $this->extractSeveritiesAndNamespaces($namespace);
+            foreach ($array as $sev => $ns) {
+                foreach ($fm->$getMethod($ns) as $message) {
+                    $this->addMessage($message, $sev);
                 }
                 if ($currentMessages) {
                     /* Si on importe alors on nettoie pour éviter un deuxième affichage */
-                    $fm->clearCurrentMessagesFromNamespace($namespace);
-                }
-            } else {
-                $array = $this->extractSeveritiesAndNamespaces($namespace);
-                foreach ($array as $sev => $ns) {
-                    foreach ($fm->$getMethod($ns) as $message) {
-                        $this->addMessage($message, $sev);
-                    }
-                    if ($currentMessages) {
-                        /* Si on importe alors on nettoie pour éviter un deuxième affichage */
-                        $fm->clearCurrentMessagesFromNamespace($ns);
-                    }
+                    $fm->clearCurrentMessagesFromNamespace($ns);
                 }
             }
+
+            // collecte des messages dans le namespace tel quel (fonctionne aussi si le namespace est une sévérité)
+            foreach ((array)$fm->$getMethod($namespace) as $message) {
+                $this->addMessage($message, $namespace);
+            }
+            if ($currentMessages) {
+                /* Si on importe alors on nettoie pour éviter un deuxième affichage */
+                $fm->clearCurrentMessagesFromNamespace($namespace);
+            }
         }
         else {
             foreach ((array)$fm->$getMethod('error') as $message) {
-- 
GitLab