get_granted_base()); $qb = $this ->createQueryBuilder('f'); $qb->where($qb->expr()->isNull('f.baseId')) ->orWhere($qb->expr()->eq('f.public', $qb->expr()->literal(true))); if (count($restrictions) > 0 && count($base_ids) > 0) { $base_ids = array_intersect($base_ids, $restrictions); } if (empty($base_ids) && count($restrictions) > 0) { $base_ids = $restrictions; } if (count($base_ids) > 0) { $qb->orWhere($qb->expr()->in('f.baseId', $base_ids)); } $qb->orderBy('f.updatedOn', 'DESC'); return $qb->getQuery()->getResult(); } /** * Returns all the feeds from a given array containing their id. * * @param array $feedIds * @return Feed[] */ public function findByIds(array $feedIds) { $qb = $this->createQueryBuilder('f'); if (!empty($feedIds)) { $qb->Where($qb->expr()->in('f.id', $feedIds)); } $qb->orderBy('f.updatedOn', 'DESC'); return $qb->getQuery()->getResult(); } /** * Returns all the feeds from a given array containing their id. * * @param \ACL $userACL * @param array $feedIds * * @return Feed[] */ public function filterUserAccessibleByIds(\ACL $userACL, array $feedIds) { $qb = $this->createQueryBuilder('f'); // is public feed? $orx = $qb->expr()->orX( $qb->expr()->isNull('f.baseId'), $qb->expr()->eq('f.public', $qb->expr()->literal(true)) ); // is granted base? $grantedBases = array_keys($userACL->get_granted_base()); if ($grantedBases) { $orx->add($qb->expr()->in('f.baseId', $grantedBases)); } if (empty($feedIds)) { throw new \LogicException('At least one feed id should be provided'); } $qb->where($qb->expr()->in('f.id', $feedIds), $orx); $qb->orderBy('f.updatedOn', 'DESC'); return $qb->getQuery()->getResult(); } }