Configurator.php 1.73 KB
Newer Older
Julien Jorry committed
1
<?php
2

Julien Jorry committed
3 4 5 6 7
namespace App\Filter;

use Doctrine\ORM\EntityManagerInterface;
use Sonata\AdminBundle\Action\SetObjectFieldValueAction;
use Sonata\AdminBundle\Controller\CoreController;
8
use Sonata\AdminBundle\Controller\CRUDController;
Julien Jorry committed
9 10 11 12
use Sonata\AdminBundle\Controller\HelperController;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;

/**
13
 * Class Configurator.
Julien Jorry committed
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
 */
class Configurator
{
    /**
     * @var EntityManagerInterface
     */
    private $em;

    /**
     * @param EntityManagerInterface $em
     */
    public function __construct(EntityManagerInterface $em)
    {
        $this->em = $em;
    }

    /**
31
     * onKernelRequest.
Julien Jorry committed
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
     */
    public function onKernelController(FilterControllerEvent $event)
    {
        $controller = $event->getController();

        // when a controller class defines multiple action methods, the controller
        // is returned as [$controllerInstance, 'methodName']
        if (is_array($controller)) {
            $controller = $controller[0];
        }

        $isAdminController =
            $controller instanceof CRUDController ||
            $controller instanceof CoreController ||
            $controller instanceof HelperController ||
            $controller instanceof SetObjectFieldValueAction
        ;

        if ($isAdminController) {
            // @TODO : sur le backoffice, mettre un bouton pour afficher les éléments supprimés
            // (pas vraiment, avec le filtre softdelete) et une variable en session pour activer ou non le filtrer Doctrine
            // $this->em->getFilters()->disable('softdeleteable');
54
            if ($this->em->getFilters()->isEnabled('enabled_filter')) {
55 56
                $this->em->getFilters()->disable('enabled_filter');
            }
Julien Jorry committed
57 58 59
        }
    }
}