diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/ItemRepository.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/ItemRepository.php index 46c7016a..6ec3aadd 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/ItemRepository.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/ItemRepository.php @@ -34,6 +34,7 @@ class ItemRepository extends EntityRepository $items=new ArrayCollection(); // Récupération des items par rôles + $itemsroles=[]; foreach($roles as $role) { $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('item') @@ -57,6 +58,7 @@ class ItemRepository extends EntityRepository } // Récupération des items par group + $itemsgroups=[]; foreach($groups as $group) { $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('item') @@ -75,7 +77,6 @@ class ItemRepository extends EntityRepository } $itemsgroups=$qb->getQuery()->getResult(); - foreach($itemsgroups as $itemgroup) { if(!$bookmarksitems->contains($itemgroup) && !$items->contains($itemgroup)) $items->add($itemgroup); } @@ -83,6 +84,7 @@ class ItemRepository extends EntityRepository // Récupération des items par niveau01 + $itemsniveau01s=[]; if($niveau01) { $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('item') @@ -107,6 +109,7 @@ class ItemRepository extends EntityRepository } // Récupération des items par ssoitem + $itemsssoitems=[]; foreach($ssoitems as $ssoitem) { $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('item') @@ -125,12 +128,22 @@ class ItemRepository extends EntityRepository } $itemsssoitems=$qb->getQuery()->getResult(); - foreach($itemsssoitems as $itemssoitem) { if(!$bookmarksitems->contains($itemssoitem) && !$items->contains($itemssoitem)) $items->add($itemssoitem); } } + // Pour chaque bookmark lié à un item : on vérifie qu'il est tjr la permission de voir cet item sinon on l'enlève de ses fav + foreach($bookmarks as $key => $bookmark) { + $item=$bookmark->getItem(); + if($item) { + if(!in_array($item,$itemsroles) && !in_array($item,$itemsgroups) && !in_array($item,$itemsniveau01s) && !in_array($item,$itemsssoitems) ) { + unset($bookmarks[$key]); + } + } + } + + // Trie des items $itemsordered = $items->getIterator(); $itemsordered->uasort(function ($first, $second) {