<?php declare(strict_types=1);
namespace OttOffcanvasNewsletter\Subscriber;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\Struct\ArrayEntity;
use Shopware\Core\System\SalesChannel\Entity\SalesChannelRepositoryInterface;
use Shopware\Storefront\Pagelet\Footer\FooterPageletLoadedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class FooterSubscriber implements EventSubscriberInterface
{
private $salutationRepository;
public function __construct(SalesChannelRepositoryInterface $salutationRepository)
{
$this->salutationRepository = $salutationRepository;
}
public static function getSubscribedEvents(): array
{
return [
FooterPageletLoadedEvent::class => 'onFooterPageletLoadedEvent',
];
}
public function onFooterPageletLoadedEvent(FooterPageletLoadedEvent $event): void
{
$pagelet = $event->getPagelet();
$salutationCollection = $this->salutationRepository->search(new Criteria(), $event->getSalesChannelContext())->getEntities();
$salutationIds = [];
foreach ($salutationCollection as $salutation) {
$salutationKey = $salutation->getSalutationKey();
$salutationId = $salutation->getId();
if ('mr' === $salutationKey) {
$salutationIds['mr'] = $salutationId;
} elseif ('mrs' === $salutationKey) {
$salutationIds['mrs'] = $salutationId;
}
}
$pagelet->addExtension('ottSaleschannelNewsletterSalutations', new ArrayEntity($salutationIds));
}
}