vendor/contao/calendar-bundle/src/EventListener/PreviewUrlConvertListener.php line 36

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4.  * This file is part of Contao.
  5.  *
  6.  * (c) Leo Feyer
  7.  *
  8.  * @license LGPL-3.0-or-later
  9.  */
  10. namespace Contao\CalendarBundle\EventListener;
  11. use Contao\CalendarEventsModel;
  12. use Contao\CoreBundle\Event\PreviewUrlConvertEvent;
  13. use Contao\CoreBundle\Framework\ContaoFramework;
  14. use Contao\Events;
  15. use Symfony\Component\HttpFoundation\Request;
  16. /**
  17.  * @internal
  18.  */
  19. class PreviewUrlConvertListener
  20. {
  21.     private $framework;
  22.     public function __construct(ContaoFramework $framework)
  23.     {
  24.         $this->framework $framework;
  25.     }
  26.     /**
  27.      * Adds the front end preview URL to the event.
  28.      */
  29.     public function __invoke(PreviewUrlConvertEvent $event): void
  30.     {
  31.         if (!$this->framework->isInitialized()) {
  32.             return;
  33.         }
  34.         $request $event->getRequest();
  35.         if (null === $request || null === ($eventModel $this->getEventModel($request))) {
  36.             return;
  37.         }
  38.         /** @var Events $eventsAdapter */
  39.         $eventsAdapter $this->framework->getAdapter(Events::class);
  40.         $event->setUrl($eventsAdapter->generateEventUrl($eventModeltrue));
  41.     }
  42.     private function getEventModel(Request $request): ?CalendarEventsModel
  43.     {
  44.         if (!$request->query->has('calendar')) {
  45.             return null;
  46.         }
  47.         /** @var CalendarEventsModel $adapter */
  48.         $adapter $this->framework->getAdapter(CalendarEventsModel::class);
  49.         return $adapter->findByPk($request->query->get('calendar'));
  50.     }
  51. }