<?php
/**
* NOTICE OF LICENSE
*
* @copyright Copyright (c) 11.01.2021 brainstation GbR
* @author Mike Becker<mike@brainstation.de>
*/
declare(strict_types=1);
namespace BstRegisterType6\Storefront\Subscriber;
use Psr\Log\LoggerInterface;
use Shopware\Core\Content\Media\MediaService;
use Shopware\Storefront\Page\Address\Listing\AddressListingPageLoadedEvent;
use Shopware\Storefront\Pagelet\Header\HeaderPageletLoadedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use BstRegisterType6\Settings\Service\SettingsService;
use BstRegisterType6\Settings\Struct\SettingsStruct;
class Frontend implements EventSubscriberInterface
{
/** @var SettingsService */
private $settingsService;
/** @var LoggerInterface */
private $logger;
/** @var SessionInterface */
private $session;
/** @var MediaService */
private $mediaService;
/** @var SettingsStruct */
private $settings;
/**
* Frontend constructor.
* @param SettingsService $settingsService
* @param MediaService $mediaService
* @param SessionInterface $session
* @param LoggerInterface $logger
*/
public function __construct(
SettingsService $settingsService,
MediaService $mediaService,
SessionInterface $session,
LoggerInterface $logger
)
{
$this->settingsService = $settingsService;
$this->mediaService = $mediaService;
$this->session = $session;
$this->logger = $logger;
}
/**
* @return array
*/
public static function getSubscribedEvents(): array
{
return [
HeaderPageletLoadedEvent::class => 'onPageLoaded',
AddressListingPageLoadedEvent::class => 'onAddressLoaded',
];
}
/**
* @param HeaderPageletLoadedEvent $event
*/
public function onPageLoaded(HeaderPageletLoadedEvent $event): void
{
$this->settings = $this->settingsService->getSettings($event->getSalesChannelContext()->getSalesChannel()->getId());
$event->getPagelet()->addExtension('BstRegisterType6', $this->settings);
}
/**
* @param AddressListingPageLoadedEvent $event
*/
public function onAddressLoaded(AddressListingPageLoadedEvent $event): void
{
$this->settings = $this->settingsService->getSettings($event->getSalesChannelContext()->getSalesChannel()->getId());
$event->getPage()->addExtension('BstRegisterType6', $this->settings);
}
}