diff --git a/src/Manager/LabelManager.php b/src/Manager/LabelManager.php index 9d139ced81dffb426a2622f3addf9453b0ad6574..e6dd8762526da2da375a2f5f62b90df706e0cd0b 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 fb1385bd18665ffe72b2ef3ca0cad801de66dd07..997a085d8ec9a0e08372dee46c25fd34d0151b3c 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) %}