vendor/contao/news-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\NewsBundle\EventListener;
  11. use Contao\CoreBundle\Event\PreviewUrlConvertEvent;
  12. use Contao\CoreBundle\Framework\ContaoFramework;
  13. use Contao\News;
  14. use Contao\NewsModel;
  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 === ($news $this->getNewsModel($event->getRequest()))) {
  35.             return;
  36.         }
  37.         $event->setUrl($this->framework->getAdapter(News::class)->generateNewsUrl($newsfalsetrue));
  38.     }
  39.     private function getNewsModel(Request $request): ?NewsModel
  40.     {
  41.         if (!$request->query->has('news')) {
  42.             return null;
  43.         }
  44.         return $this->framework->getAdapter(NewsModel::class)->findByPk($request->query->get('news'));
  45.     }
  46. }