vendor/ibexa/connector-qualifio/src/lib/Event/Subscriber/Block/QualifioBlockSubscriber.php line 47

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\ConnectorQualifio\Event\Subscriber\Block;
  8. use Ibexa\Contracts\ConnectorQualifio\QualifioServiceInterface;
  9. use Ibexa\Contracts\FieldTypePage\FieldType\Page\Block\Definition\BlockDefinitionEvents;
  10. use Ibexa\FieldTypePage\FieldType\Page\Block\Definition\Event\BlockDefinitionEvent;
  11. use Ibexa\FieldTypePage\FieldType\Page\Block\Renderer\BlockRenderEvents;
  12. use Ibexa\FieldTypePage\FieldType\Page\Block\Renderer\Event\PreRenderEvent;
  13. use Ibexa\FieldTypePage\FieldType\Page\Block\Renderer\Twig\TwigRenderRequest;
  14. use LogicException;
  15. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  16. final class QualifioBlockSubscriber implements EventSubscriberInterface
  17. {
  18.     private const BLOCK_IDENTIFIER 'qualifio';
  19.     private QualifioServiceInterface $qualifioService;
  20.     public function __construct(
  21.         QualifioServiceInterface $qualifioService
  22.     ) {
  23.         $this->qualifioService $qualifioService;
  24.     }
  25.     public static function getSubscribedEvents(): array
  26.     {
  27.         return [
  28.             BlockRenderEvents::getBlockPreRenderEventName(self::BLOCK_IDENTIFIER) => 'onBlockPreRender',
  29.             BlockDefinitionEvents::getBlockDefinitionEventName(self::BLOCK_IDENTIFIER) => 'onBlockDefinition',
  30.         ];
  31.     }
  32.     public function onBlockDefinition(BlockDefinitionEvent $event): void
  33.     {
  34.         if (!$this->qualifioService->isConfigured()) {
  35.             $event->getDefinition()->setVisible(false);
  36.         }
  37.     }
  38.     public function onBlockPreRender(PreRenderEvent $event): void
  39.     {
  40.         $renderRequest $event->getRenderRequest();
  41.         if (!$renderRequest instanceof TwigRenderRequest) {
  42.             throw new LogicException(sprintf(
  43.                 'Expected an instance of %s, received %s.',
  44.                 TwigRenderRequest::class,
  45.                 get_debug_type($renderRequest),
  46.             ));
  47.         }
  48.         $parameters $renderRequest->getParameters();
  49.         if (!array_key_exists('campaign'$parameters)) {
  50.             return;
  51.         }
  52.         $campaignId = (int)$parameters['campaign'];
  53.         if ($campaignUrl $this->qualifioService->buildCampaignUrl($campaignId)) {
  54.             $parameters['url'] = $campaignUrl;
  55.         }
  56.         $renderRequest->setParameters($parameters);
  57.     }
  58. }