custom/plugins/KlarnaPayment/src/Components/EventListener/TemplateDataEventListener.php line 44

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace KlarnaPayment\Components\EventListener;
  4. use KlarnaPayment\Components\ConfigReader\ConfigReaderInterface;
  5. use KlarnaPayment\Components\Extension\TemplateData\OnsiteMessagingDataExtension;
  6. use KlarnaPayment\Components\OnsiteMessagingReplacer\PlaceholderReplacerInterface;
  7. use KlarnaPayment\Components\Validator\OnsiteMessagingValidator;
  8. use Shopware\Storefront\Page\Product\ProductPageLoadedEvent;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. class TemplateDataEventListener implements EventSubscriberInterface
  11. {
  12.     /** @var ConfigReaderInterface */
  13.     private $configReader;
  14.     /** @var PlaceholderReplacerInterface */
  15.     private $productPriceReplacer;
  16.     /** @var OnsiteMessagingValidator */
  17.     private $onsiteMessagingValidator;
  18.     public function __construct(
  19.         ConfigReaderInterface $configReader,
  20.         PlaceholderReplacerInterface $productPriceReplacer,
  21.         OnsiteMessagingValidator $onsiteMessagingValidator
  22.     ) {
  23.         $this->configReader             $configReader;
  24.         $this->productPriceReplacer     $productPriceReplacer;
  25.         $this->onsiteMessagingValidator $onsiteMessagingValidator;
  26.     }
  27.     public static function getSubscribedEvents(): array
  28.     {
  29.         return [
  30.             ProductPageLoadedEvent::class => [
  31.                 ['addOnsiteTemplateData'100],
  32.             ],
  33.         ];
  34.     }
  35.     public function addOnsiteTemplateData(ProductPageLoadedEvent $event): void
  36.     {
  37.         $pluginConfig           $this->configReader->read($event->getSalesChannelContext()->getSalesChannel()->getId());
  38.         $isActive               = (bool) $pluginConfig->get('isOnsiteMessagingActive');
  39.         $onsiteMessagingSnippet = (string) $pluginConfig->get('onsiteMessagingSnippet');
  40.         $onsiteMessagingScript  = (string) $pluginConfig->get('onsiteMessagingScript');
  41.         if (!$this->onsiteMessagingValidator->isValid($isActive$onsiteMessagingSnippet$onsiteMessagingScript)) {
  42.             return;
  43.         }
  44.         $onsiteMessagingSnippet $this->productPriceReplacer->replace($onsiteMessagingSnippet$event);
  45.         $templateData = new OnsiteMessagingDataExtension([
  46.             'klarnaOnsiteMessagingSnippet' => preg_replace("/\r|\n/"''$onsiteMessagingSnippet),
  47.             'klarnaOnsiteMessagingScript'  => $onsiteMessagingScript,
  48.         ]);
  49.         $event->getPage()->addExtension(OnsiteMessagingDataExtension::EXTENSION_NAME$templateData);
  50.     }
  51. }