<?php declare(strict_types=1);
namespace Zeobv\GetNotified\DataResolver;
use Shopware\Core\Content\Cms\Aggregate\CmsSlot\CmsSlotEntity;
use Shopware\Core\Content\Cms\DataResolver\CriteriaCollection;
use Shopware\Core\Content\Cms\DataResolver\Element\AbstractCmsElementResolver;
use Shopware\Core\Content\Cms\DataResolver\Element\CmsElementResolverInterface;
use Shopware\Core\Content\Cms\DataResolver\Element\ElementDataCollection;
use Shopware\Core\Content\Cms\DataResolver\ResolverContext\ResolverContext;
use Shopware\Core\Content\Cms\SalesChannel\Struct\ProductListingStruct;
use Shopware\Core\Framework\Struct\ArrayStruct;
use Zeobv\GetNotified\Service\ConfigService;
class ListingCmsElementResolver extends AbstractCmsElementResolver
{
protected CmsElementResolverInterface $decorator;
protected ConfigService $configService;
public function __construct(
CmsElementResolverInterface $decorator,
ConfigService $configService
)
{
$this->decorator = $decorator;
$this->configService = $configService;
}
public function enrich(CmsSlotEntity $slot, ResolverContext $resolverContext, ElementDataCollection $result): void
{
$this->decorator->enrich(...func_get_args());
$data = $slot->getData();
if (!$data instanceof ProductListingStruct) {
return;
}
$hideForm = $this->configService->getHideStockSubscriptionFormOnListingPage($resolverContext->getSalesChannelContext()->getSalesChannel());
$resolverContext->getSalesChannelContext()->addExtension('zeobvGetNotifiedEnabled', new ArrayStruct(['enabled' => !$hideForm]));
}
public function getType(): string
{
return $this->decorator->getType();
}
public function collect(CmsSlotEntity $slot, ResolverContext $resolverContext): ?CriteriaCollection
{
return $this->decorator->collect(...func_get_args());
}
}