src/EventSubscriber/DoctrineEntityFilterSubscriber.php line 57

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by simpson <simpsonwork@gmail.com>
  4.  * Date: 2019-05-23
  5.  * Time: 18:39
  6.  */
  7. namespace App\EventSubscriber;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  11. use Symfony\Component\HttpKernel\Event\RequestEvent;
  12. use Symfony\Component\HttpKernel\KernelEvents;
  13. class DoctrineEntityFilterSubscriber implements EventSubscriberInterface
  14. {
  15.     protected EntityManagerInterface $entityManager;
  16.     public function __construct(EntityManagerInterface $entityManager)
  17.     {
  18.         $this->entityManager = $entityManager;
  19.     }
  20.     public function enableFilters(RequestEvent $event): void
  21.     {
  22.         $request = $event->getRequest();
  23.         if ('easyadmin' === $request->attributes->get('_route')) {
  24.             return;
  25.         }
  26.         if (array_search($request->attributes->get('_route'), [
  27.                 'account.finances.transactions',
  28.                 'account.finances.transactions._pagination',
  29.                 'account.favourites.add',
  30.                 'account.favourites.remove',
  31.                 'management.deleted_profiles.export.today',
  32.                 'management.deleted_profiles.export.this_week',
  33.                 'management.deleted_profiles.export.all_time',
  34.                 'management.deleted_profiles.export.interval',
  35.                 'management.deleted_saloons.export.today',
  36.                 'management.deleted_saloons.export.this_week',
  37.                 'management.deleted_saloons.export.all_time',
  38.                 'management.deleted_saloons.export.interval',
  39.                 'profile_preview.page',
  40.                 'saloon_preview.page',
  41.                 'api.profiles.preview',
  42.                 'api.saloons.preview',
  43.             ]) !== false) {
  44.             return;
  45.         }
  46.         $this->entityManager->getFilters()->enable('not_deleted_profile_filter');
  47.         $this->entityManager->getFilters()->enable('not_deleted_saloon_filter');
  48.     }
  49.     public function enableCommentFilters(RequestEvent $event): void
  50.     {
  51.         $request = $event->getRequest();
  52.         if ('easyadmin' === $request->attributes->get('_route')) {
  53.             return;
  54.         }
  55.         if (0 === strpos($request->attributes->get('_route'), 'management.')) {
  56.             return;
  57.         }
  58.         $this->entityManager->getFilters()->enable('not_deleted_profile_comment_filter');
  59.         $this->entityManager->getFilters()->enable('not_deleted_saloon_comment_filter');
  60.     }
  61.     /**
  62.      * @inheritDoc
  63.      */
  64.     public static function getSubscribedEvents()
  65.     {
  66.         return [
  67.             KernelEvents::REQUEST => [
  68.                 ['enableFilters', 10],
  69.                 ['enableCommentFilters', 0],
  70.             ],
  71.         ];
  72.     }
  73. }