vendor/ibexa/fieldtype-page/src/lib/Event/Subscriber/RichTextBlockSubscriber.php line 45

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\FieldTypePage\Event\Subscriber;
  8. use Ibexa\FieldTypePage\FieldType\Page\Block\Renderer\BlockRenderEvents;
  9. use Ibexa\FieldTypePage\FieldType\Page\Block\Renderer\Event\PreRenderEvent;
  10. use Ibexa\FieldTypePage\FieldType\Page\Block\Renderer\Twig\TwigRenderRequest;
  11. use Ibexa\FieldTypeRichText\RichText\DOMDocumentFactory;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. class RichTextBlockSubscriber implements EventSubscriberInterface
  14. {
  15.     private const EMPTY_RICHTEXT '<?xml version="1.0" encoding="UTF-8"?><section/>';
  16.     /** @var \Ibexa\FieldTypeRichText\RichText\DOMDocumentFactory */
  17.     private $domDocumentFactory;
  18.     /**
  19.      * @param \Ibexa\FieldTypeRichText\RichText\DOMDocumentFactory $domDocumentFactory
  20.      */
  21.     public function __construct(DOMDocumentFactory $domDocumentFactory)
  22.     {
  23.         $this->domDocumentFactory $domDocumentFactory;
  24.     }
  25.     /**
  26.      * {@inheritdoc}
  27.      */
  28.     public static function getSubscribedEvents(): array
  29.     {
  30.         return [
  31.             BlockRenderEvents::getBlockPreRenderEventName('richtext') => 'onBlockPreRender',
  32.         ];
  33.     }
  34.     /**
  35.      * @param \Ibexa\FieldTypePage\FieldType\Page\Block\Renderer\Event\PreRenderEvent $event
  36.      */
  37.     public function onBlockPreRender(PreRenderEvent $event): void
  38.     {
  39.         $renderRequest $event->getRenderRequest();
  40.         if (!$renderRequest instanceof TwigRenderRequest) {
  41.             return;
  42.         }
  43.         $xml $event->getBlockValue()->getAttribute('content')->getValue();
  44.         $parameters $renderRequest->getParameters();
  45.         $parameters['document'] = $this->domDocumentFactory->loadXMLString($xml ?? self::EMPTY_RICHTEXT);
  46.         $renderRequest->setParameters($parameters);
  47.     }
  48. }
  49. class_alias(RichTextBlockSubscriber::class, 'EzSystems\EzPlatformPageFieldType\Event\Subscriber\RichTextBlockSubscriber');