src/LiteDesk/KnowledgeBundle/EventListener/PresetListener.php line 30

Open in your IDE?
  1. <?php
  2. namespace LiteDesk\KnowledgeBundle\EventListener;
  3. use LiteDesk\KnowledgeBundle\Controller\PresetsController;
  4. use LiteDesk\KnowledgeBundle\Library\Controller\KnowledgeBaseInterface;
  5. use Symfony\Component\DependencyInjection\ContainerInterface;
  6. use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
  7. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  8. class PresetListener
  9. {
  10.     /**
  11.      * @var ContainerInterface
  12.      */
  13.     protected $container;
  14.     /**
  15.      * PresetListener constructor.
  16.      * @param ContainerInterface $container
  17.      */
  18.     public function __construct(ContainerInterface $container)
  19.     {
  20.         $this->container $container;
  21.     }
  22.     /**
  23.      * @param FilterControllerEvent $event
  24.      */
  25.     public function onKernelController(FilterControllerEvent $event)
  26.     {
  27.         $controller $event->getController();
  28.         $whiteList = [
  29.             'litedesk_knowledge_knowledge_help',
  30.         ];
  31.         $currentRoute $event->getRequest()->get('_route');
  32.         /*
  33.          * $controller passed can be either a class or a Closure.
  34.          * This is not usual in Symfony but it may happen.
  35.          * If it is a class, it comes in array format
  36.          */
  37.         if (!is_array($controller)) {
  38.             return;
  39.         }
  40.         if (
  41.             $controller[0] instanceof KnowledgeBaseInterface &&
  42.             !($controller[0] instanceof PresetsController) &&
  43.             !in_array($currentRoute$whiteList)
  44.         ) {
  45.             $presets $this->container->get('knowledge.preset')->getAll();
  46.             if (empty($presets)) {
  47.                 header("Location: " .
  48.                     $this->container->get('router')->generate('litedesk_knowledge_presets_create', [], UrlGeneratorInterface::ABSOLUTE_URL) . '?nopreset=true');
  49.             }
  50.         }
  51.     }
  52. }