<?php
/**
* Created by simpson <simpsonwork@gmail.com>
* Date: 2019-05-23
* Time: 18:39
*/
namespace App\EventSubscriber;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class DoctrineEntityFilterSubscriber implements EventSubscriberInterface
{
protected EntityManagerInterface $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
public function enableFilters(RequestEvent $event): void
{
$request = $event->getRequest();
if ('easyadmin' === $request->attributes->get('_route')) {
return;
}
if (array_search($request->attributes->get('_route'), [
'account.finances.transactions',
'account.finances.transactions._pagination',
'account.favourites.add',
'account.favourites.remove',
'management.deleted_profiles.export.today',
'management.deleted_profiles.export.this_week',
'management.deleted_profiles.export.all_time',
'management.deleted_profiles.export.interval',
'management.deleted_saloons.export.today',
'management.deleted_saloons.export.this_week',
'management.deleted_saloons.export.all_time',
'management.deleted_saloons.export.interval',
'profile_preview.page',
'saloon_preview.page',
]) !== false) {
return;
}
$this->entityManager->getFilters()->enable('not_deleted_profile_filter');
$this->entityManager->getFilters()->enable('not_deleted_saloon_filter');
}
public function enableCommentFilters(RequestEvent $event): void
{
$request = $event->getRequest();
if ('easyadmin' === $request->attributes->get('_route')) {
return;
}
if (0 === strpos($request->attributes->get('_route'), 'management.')) {
return;
}
$this->entityManager->getFilters()->enable('not_deleted_profile_comment_filter');
$this->entityManager->getFilters()->enable('not_deleted_saloon_comment_filter');
}
/**
* @inheritDoc
*/
public static function getSubscribedEvents()
{
return [
KernelEvents::REQUEST => [
['enableFilters', 10],
['enableCommentFilters', 0],
],
];
}
}