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 ContaoFramework $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.         if (null === ($eventModel $this->getEventModel($event->getRequest()))) {
  35.             return;
  36.         }
  37.         $event->setUrl($this->framework->getAdapter(Events::class)->generateEventUrl($eventModeltrue));
  38.     }
  39.     private function getEventModel(Request $request): ?CalendarEventsModel
  40.     {
  41.         if (!$request->query->has('calendar')) {
  42.             return null;
  43.         }
  44.         return $this->framework->getAdapter(CalendarEventsModel::class)->findByPk($request->query->get('calendar'));
  45.     }
  46. }