From 20db851a7eb50fb95174d75e468fa3c1585085a1 Mon Sep 17 00:00:00 2001
From: pfleu <fleutotp@gmail.com>
Date: Mon, 12 Jun 2023 18:11:21 +0200
Subject: [PATCH] =?UTF-8?q?Ajout=20d'un=20label=20:=20on=20ne=20filtre=20p?=
 =?UTF-8?q?as=20en=20fonction=20de=20la=20visibilit=C3=A9.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/Manager/LabelManager.php           | 42 +++++++++++++++-----------
 templates/entry/_chooseLabel.html.twig |  2 +-
 2 files changed, 26 insertions(+), 18 deletions(-)

diff --git a/src/Manager/LabelManager.php b/src/Manager/LabelManager.php
index 9d139ce..e6dd876 100644
--- a/src/Manager/LabelManager.php
+++ b/src/Manager/LabelManager.php
@@ -42,23 +42,25 @@ class LabelManager
         foreach ($labelDeleted->getHeadwords() as $headword) {
             $headword->addLabel($labelMerged);
         }
-        // pour chaque invisibilité liée à labelDeleted, on regarde si on a une invisibilité pour le même lexique dans labelMerged
-        // Si ce n'est pas le cas, on en ajoute une
-        foreach ($labelDeleted->getLabelInvisibilities() as $labelInvisibilityDeleted) {
-            $labelMergedHasSameLexiconVisibility = false;
-            foreach ($labelMerged->getLabelInvisibilities() as $labelInvisibilityMerged) {
-                if ($labelInvisibilityDeleted->getLexicon() == $labelInvisibilityMerged->getLexicon()) {
-                    $labelMergedHasSameLexiconVisibility = true; break;
-                }
-            }
-            if (false === $labelMergedHasSameLexiconVisibility) {
-                $labelInvisibility = new LabelInvisibility();
-                $labelInvisibility->setLexicon($labelInvisibilityDeleted->getLexicon());
-                $labelInvisibility->setLabel($labelMerged);
-                $labelInvisibility->setUser($labelInvisibilityDeleted->getUser());
-                $this->doctrine->getManager()->persist($labelInvisibility);
-            }
-        }
+        // On ne reporte pas les invisibilités du label supprimé dans le label fusionné
+
+//        // pour chaque invisibilité liée à labelDeleted, on regarde si on a une invisibilité pour le même lexique dans labelMerged
+//        // Si ce n'est pas le cas, on en ajoute une
+//        foreach ($labelDeleted->getLabelInvisibilities() as $labelInvisibilityDeleted) {
+//            $labelMergedHasSameLexiconVisibility = false;
+//            foreach ($labelMerged->getLabelInvisibilities() as $labelInvisibilityMerged) {
+//                if ($labelInvisibilityDeleted->getLexicon() == $labelInvisibilityMerged->getLexicon()) {
+//                    $labelMergedHasSameLexiconVisibility = true; break;
+//                }
+//            }
+//            if (false === $labelMergedHasSameLexiconVisibility) {
+//                $labelInvisibility = new LabelInvisibility();
+//                $labelInvisibility->setLexicon($labelInvisibilityDeleted->getLexicon());
+//                $labelInvisibility->setLabel($labelMerged);
+//                $labelInvisibility->setUser($labelInvisibilityDeleted->getUser());
+//                $this->doctrine->getManager()->persist($labelInvisibility);
+//            }
+//        }
         $this->doctrine->getManager()->remove($labelDeleted);
     }
 
@@ -118,6 +120,12 @@ class LabelManager
         return array_intersect($entry->getHeadword()->getLabelsForCategory($category), $labelsVisiblesInLexicon);
     }
 
+    // Retourne les labels visibles pour un user, sans tenir compte des invisibilités (pour une catégorie si renseignée)
+    public function getVisibleLabelsForUser(User $user, $category = null)
+    {
+        return $this->doctrine->getRepository(Label::class)->queryVisiblesByUser($user, $category)->getQuery()->getresult();
+    }
+
     public function filter($filter)
     {
         if ($this->searchString) {
diff --git a/templates/entry/_chooseLabel.html.twig b/templates/entry/_chooseLabel.html.twig
index fb1385b..997a085 100644
--- a/templates/entry/_chooseLabel.html.twig
+++ b/templates/entry/_chooseLabel.html.twig
@@ -36,7 +36,7 @@
 
     {% set master = '' %}
     <div id="chooseLabelList">
-        {% for label in label_manager.visibleLabelsInLexicon(lexicon, app.user, category) %}
+        {% for label in label_manager.visibleLabelsForUser(app.user, category) %}
 
             {% if entry|default(null) %}
 
-- 
GitLab