src/EntityManager/ForumAccessManager.php line 56

Open in your IDE?
  1. <?php
  2. namespace App\EntityManager;
  3. use App\Entity\Forum;
  4. use App\Entity\ForumAccess;
  5. use App\Entity\User;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Knp\Component\Pager\PaginatorInterface;
  8. use Psr\SimpleCache\CacheInterface;
  9. use Symfony\Component\HttpFoundation\RequestStack;
  10. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  11. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  12. use Symfony\Component\Security\Core\Security;
  13. class ForumAccessManager extends AbstractEntityManager
  14. {
  15.     const SESSION_FORUM_ACCESS_KEY 'forumAccess';
  16.     protected $session;
  17.     public function __construct(
  18.         EntityManagerInterface $entityManager,
  19.         TokenStorageInterface $tokenStorage,
  20.         CacheInterface $cache,
  21.         RequestStack $requestStack,
  22.         PaginatorInterface $paginator,
  23.         SessionInterface $session,
  24.         Security $security
  25.     ) {
  26.         parent::__construct($entityManager$tokenStorage$cache$requestStack$paginator$security);
  27.         $this->session $session;
  28.     }
  29.     public function getForumAccess(Forum $forum): ?ForumAccess
  30.     {
  31.         return $this->getRepository()->getByForum($forum);
  32.     }
  33.     public function getForumAccessForCurrentUser(Forum $forum): ?ForumAccess
  34.     {
  35.         /** @var ForumAccess[] $forumAccess */
  36.         $forumAccess $this->session->get(self::SESSION_FORUM_ACCESS_KEY);
  37.         return $forumAccess[$forum->getId()] ?? null;
  38.     }
  39.     public function setAccessInUserSession(User $user)
  40.     {
  41.         $access $this->getRepository()->getByUser($user);
  42.         $this->session->set(self::SESSION_FORUM_ACCESS_KEY$access);
  43.     }
  44.     public function getForumWithReadAccessForCurrentUser()
  45.     {
  46.         return $this->getRepository()->getForumWithReadAccessForUser($this->getUser());
  47.     }
  48.     protected function getRepository()
  49.     {
  50.         return $this->entityManager->getRepository(ForumAccess::class);
  51.     }
  52. }