vendor/ibexa/dashboard/src/bundle/EventSubscriber/PageBuilder/IbexaNewsBlockSubscriber.php line 40

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4.  * @license For full copyright and license information view LICENSE file distributed with this source code.
  5.  */
  6. declare(strict_types=1);
  7. namespace Ibexa\Bundle\Dashboard\EventSubscriber\PageBuilder;
  8. use Ibexa\Dashboard\News\FeedException;
  9. use Ibexa\Dashboard\News\FeedInterface;
  10. use Ibexa\FieldTypePage\FieldType\Page\Block\Renderer\BlockRenderEvents;
  11. use Ibexa\FieldTypePage\FieldType\Page\Block\Renderer\Event\PreRenderEvent;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. final class IbexaNewsBlockSubscriber implements EventSubscriberInterface
  14. {
  15.     private const BLOCK_IDENTIFIER 'ibexa_news';
  16.     private FeedInterface $feed;
  17.     private string $url;
  18.     public function __construct(
  19.         FeedInterface $feed,
  20.         string $url
  21.     ) {
  22.         $this->feed $feed;
  23.         $this->url $url;
  24.     }
  25.     public static function getSubscribedEvents(): array
  26.     {
  27.         return [
  28.             BlockRenderEvents::getBlockPreRenderEventName(self::BLOCK_IDENTIFIER) => 'onBlockPreRender',
  29.         ];
  30.     }
  31.     public function onBlockPreRender(PreRenderEvent $event): void
  32.     {
  33.         $ibexaNews = [];
  34.         /** @var \Ibexa\FieldTypePage\FieldType\Page\Block\Renderer\Twig\TwigRenderRequest $request */
  35.         $request $event->getRenderRequest();
  36.         $request->addParameter('block_name'$event->getBlockValue()->getName());
  37.         try {
  38.             $ibexaNews $this->feed->fetch(
  39.                 $this->url,
  40.                 (int)$request->getParameters()['limit'],
  41.             );
  42.         } catch (FeedException $e) {
  43.             /** @var \Ibexa\FieldTypePage\FieldType\Page\Block\Renderer\Twig\TwigRenderRequest $renderRequest */
  44.             $renderRequest $event->getRenderRequest();
  45.             $renderRequest->setTemplate(
  46.                 '@ibexadesign/ui/page_builder/blocks/ibexa_news_unable_to_fetch.html.twig'
  47.             );
  48.         }
  49.         $request->addParameter(
  50.             'ibexa_news',
  51.             $ibexaNews
  52.         );
  53.     }
  54. }