src/EventSubscriber/DoctrineEntityFilterSubscriber.php line 51

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.             ]) !== false) {
  42.             return;
  43.         }
  44.         $this->entityManager->getFilters()->enable('not_deleted_profile_filter');
  45.         $this->entityManager->getFilters()->enable('not_deleted_saloon_filter');
  46.     }
  47.     public function enableCommentFilters(RequestEvent $event): void
  48.     {
  49.         $request $event->getRequest();
  50.         if ('easyadmin' === $request->attributes->get('_route')) {
  51.             return;
  52.         }
  53.         if (=== strpos($request->attributes->get('_route'), 'management.')) {
  54.             return;
  55.         }
  56.         $this->entityManager->getFilters()->enable('not_deleted_profile_comment_filter');
  57.         $this->entityManager->getFilters()->enable('not_deleted_saloon_comment_filter');
  58.     }
  59.     /**
  60.      * @inheritDoc
  61.      */
  62.     public static function getSubscribedEvents()
  63.     {
  64.         return [
  65.             KernelEvents::REQUEST => [
  66.                 ['enableFilters'10],
  67.                 ['enableCommentFilters'0],
  68.             ],
  69.         ];
  70.     }
  71. }