src/EventListener/SoftDeletableReadListener.php line 34

  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\Address;
  4. use App\Entity\Area;
  5. use App\Entity\Article;
  6. use App\Entity\Detergent;
  7. use App\Entity\Lead;
  8. use App\Entity\Pbm;
  9. use App\Entity\Person;
  10. use App\Entity\Project;
  11. use App\Entity\Quote;
  12. use App\Entity\QuoteBaseArticle;
  13. use App\Entity\QuoteRule;
  14. use App\Entity\QuoteRuleType;
  15. use App\Entity\QuoteType;
  16. use App\Entity\Report;
  17. use App\Entity\Trap;
  18. use App\Entity\User;
  19. use Doctrine\ORM\EntityManagerInterface;
  20. use Symfony\Component\HttpKernel\Event\RequestEvent;
  21. class SoftDeletableReadListener
  22. {
  23.     private $em;
  24.     public function __construct(EntityManagerInterface $em)
  25.     {
  26.         $this->em $em;
  27.     }
  28.     public function onKernelRequest(RequestEvent $event)
  29.     {
  30.         $request $event->getRequest();
  31.         $filters $this->em->getFilters()->getEnabledFilters();
  32.         if (!array_key_exists('softdeleteable', (array) $filters)) {
  33.             return;
  34.         }
  35.     
  36.         /**
  37.          * @var FilterCollection
  38.          */
  39.         $filter $this->em->getFilters()->getFilter('softdeleteable');
  40.         
  41.         if (!str_contains($request->attributes->get('_route'), '/users')) {
  42.             $filter->disableForEntity(User::class);
  43.         }
  44.         
  45.         if (!str_contains($request->attributes->get('_route'), '/projects')) {
  46.             $filter->disableForEntity(Project::class);
  47.         }
  48.         
  49.         if (!str_contains($request->attributes->get('_route'), '/addresses') && !str_contains($request->attributes->get('_route'), '/projects')) {
  50.             $filter->disableForEntity(Address::class);
  51.         }
  52.         
  53.         if (!str_contains($request->attributes->get('_route'), '/areas') && !str_contains($request->attributes->get('_route'), '/addresses')) {
  54.             $filter->disableForEntity(Area::class);
  55.         }
  56.         
  57.         if (!str_contains($request->attributes->get('_route'), '/people')) {
  58.             $filter->disableForEntity(Person::class);
  59.         }
  60.         if (!str_contains($request->attributes->get('_route'), '/articles') && !str_contains($request->attributes->get('_route'), '/article_categories')) {
  61.             $filter->disableForEntity(Article::class);
  62.         }
  63.         if (!str_contains($request->attributes->get('_route'), '/pbms')) {
  64.             $filter->disableForEntity(Pbm::class);
  65.         }
  66.         if (!str_contains($request->attributes->get('_route'), '/detergents')) {
  67.             $filter->disableForEntity(Detergent::class);
  68.         }
  69.         if (!str_contains($request->attributes->get('_route'), '/traps')) {
  70.             $filter->disableForEntity(Trap::class);
  71.         }
  72.         if (!str_contains($request->attributes->get('_route'), '/reports')) {
  73.             $filter->disableForEntity(Report::class);
  74.         }
  75.         if (!str_contains($request->attributes->get('_route'), '/leads')) {
  76.             $filter->disableForEntity(Lead::class);
  77.         }
  78.         if (!str_contains($request->attributes->get('_route'), '/quotes')) {
  79.             $filter->disableForEntity(Quote::class);
  80.         }
  81.         if (!str_contains($request->attributes->get('_route'), '/quote_rule_types')) {
  82.             $filter->disableForEntity(QuoteRuleType::class);
  83.         }
  84.         if (!str_contains($request->attributes->get('_route'), '/quote_base_articles')) {
  85.             $filter->disableForEntity(QuoteBaseArticle::class);
  86.         }
  87.         if (!str_contains($request->attributes->get('_route'), '/quote_rules')) {
  88.             $filter->disableForEntity(QuoteRule::class);
  89.         }
  90.         if (!str_contains($request->attributes->get('_route'), '/quote_types')) {
  91.             $filter->disableForEntity(QuoteType::class);
  92.         }
  93.     }
  94. }