vendor/sulu/sulu/src/Sulu/Bundle/TrashBundle/Infrastructure/Doctrine/Repository/TrashItemRepository.php line 46

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4.  * This file is part of Sulu.
  5.  *
  6.  * (c) Sulu GmbH
  7.  *
  8.  * This source file is subject to the MIT license that is bundled
  9.  * with this source code in the file LICENSE.
  10.  */
  11. namespace Sulu\Bundle\TrashBundle\Infrastructure\Doctrine\Repository;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Doctrine\ORM\EntityRepository;
  14. use Sulu\Bundle\TrashBundle\Domain\Exception\TrashItemNotFoundException;
  15. use Sulu\Bundle\TrashBundle\Domain\Model\TrashItemInterface;
  16. use Sulu\Bundle\TrashBundle\Domain\Repository\TrashItemRepositoryInterface;
  17. use Sulu\Component\Security\Authentication\UserInterface;
  18. use Symfony\Component\Security\Core\Security;
  19. final class TrashItemRepository implements TrashItemRepositoryInterface
  20. {
  21.     /**
  22.      * @var EntityManagerInterface
  23.      */
  24.     private $entityManager;
  25.     /**
  26.      * @var Security|null
  27.      */
  28.     private $security;
  29.     /**
  30.      * @var EntityRepository<TrashItemInterface>
  31.      */
  32.     private $entityRepository;
  33.     public function __construct(EntityManagerInterface $entityManager, ?Security $security)
  34.     {
  35.         $this->entityManager $entityManager;
  36.         $this->security $security;
  37.         $this->entityRepository $this->entityManager->getRepository(TrashItemInterface::class);
  38.     }
  39.     public function create(
  40.         string $resourceKey,
  41.         string $resourceId,
  42.         $resourceTitle,
  43.         array $restoreData,
  44.         ?string $restoreType,
  45.         array $restoreOptions,
  46.         ?string $resourceSecurityContext,
  47.         ?string $resourceSecurityObjectType,
  48.         ?string $resourceSecurityObjectId
  49.     ): TrashItemInterface {
  50.         /** @var class-string<TrashItemInterface> $className */
  51.         $className $this->entityRepository->getClassName();
  52.         /** @var TrashItemInterface $trashItem */
  53.         $trashItem = new $className();
  54.         $trashItem
  55.             ->setResourceKey($resourceKey)
  56.             ->setResourceId($resourceId)
  57.             ->setRestoreData($restoreData)
  58.             ->setRestoreType($restoreType)
  59.             ->setRestoreOptions($restoreOptions)
  60.             ->setResourceSecurityContext($resourceSecurityContext)
  61.             ->setResourceSecurityObjectType($resourceSecurityObjectType)
  62.             ->setResourceSecurityObjectId($resourceSecurityObjectId)
  63.             ->setUser($this->getCurrentUser());
  64.         if (\is_string($resourceTitle)) {
  65.             $trashItem->setResourceTitle($resourceTitle);
  66.         }
  67.         if (\is_array($resourceTitle)) {
  68.             foreach ($resourceTitle as $locale => $title) {
  69.                 $trashItem->setResourceTitle($title$locale);
  70.             }
  71.         }
  72.         return $trashItem;
  73.     }
  74.     public function add(TrashItemInterface $trashItem): void
  75.     {
  76.         $this->entityManager->persist($trashItem);
  77.     }
  78.     public function remove(TrashItemInterface $trashItem): void
  79.     {
  80.         $this->entityManager->remove($trashItem);
  81.     }
  82.     public function findOneBy(array $criteria): ?TrashItemInterface
  83.     {
  84.         return $this->entityRepository->findOneBy($criteria);
  85.     }
  86.     public function getOneBy(array $criteria): TrashItemInterface
  87.     {
  88.         $trashItem $this->findOneBy($criteria);
  89.         if (null === $trashItem) {
  90.             throw new TrashItemNotFoundException($criteria);
  91.         }
  92.         return $trashItem;
  93.     }
  94.     private function getCurrentUser(): ?UserInterface
  95.     {
  96.         if (null === $this->security) {
  97.             return null;
  98.         }
  99.         $user $this->security->getUser();
  100.         if (!($user instanceof UserInterface)) {
  101.             return null;
  102.         }
  103.         return $user;
  104.     }
  105. }