supprimer des bookmark les items qui ne sont plus lié au profil (fixes #31269)

This commit is contained in:
afornerot 2021-03-03 18:04:00 +01:00
parent 55e34b7526
commit 3c47ed1d40
1 changed files with 15 additions and 2 deletions

View File

@ -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) {