<?php declare(strict_types=1);
namespace Futi\FaqManagerSW6\Framework\Seo\SeoUrlRoute;
use Doctrine\DBAL\Connection;
use Futi\FaqManagerSW6\Entities\Categories\Events\FaqCategoriesIndexerEvent;
use Futi\FaqManagerSW6\Entities\Categories\FaqCategoriesEvents;
use Futi\FaqManagerSW6\Entities\Items\Events\FaqListIndexerEvent;
use Futi\FaqManagerSW6\Entities\Items\FaqListEvents;
use Futi\FaqManagerSW6\Entities\Pages\Events\FaqPagesIndexerEvent;
use Futi\FaqManagerSW6\Entities\Pages\FaqPagesEvents;
use Shopware\Core\Content\Seo\SeoUrlUpdater;
use Shopware\Core\Framework\DataAbstractionLayer\Indexing\EntityIndexerRegistry;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class FaqSeoUrlUpdateListener implements EventSubscriberInterface
{
/**
* @var SeoUrlUpdater
*/
private $seoUrlUpdater;
/**
* @var Connection
*/
private $connection;
/**
* @var EntityIndexerRegistry
*/
private $indexerRegistry;
public function __construct(SeoUrlUpdater $seoUrlUpdater, Connection $connection, EntityIndexerRegistry $indexerRegistry)
{
$this->seoUrlUpdater = $seoUrlUpdater;
$this->connection = $connection;
$this->indexerRegistry = $indexerRegistry;
}
public static function getSubscribedEvents()
{
return [
FaqPagesEvents::FAQ_PAGES_INDEXER_EVENT => 'updateFaqPagesUrls',
FaqCategoriesEvents::FAQ_PAGES_INDEXER_EVENT => 'updateFaqCategoriesUrls',
FaqListEvents::FAQ_LIST_INDEXER_EVENT => 'updateFaqListUrls'
];
}
public function updateFaqPagesUrls(FaqPagesIndexerEvent $event): void
{
$this->seoUrlUpdater->update('frontend.faq.page', $event->getIds());
}
public function updateFaqCategoriesUrls(FaqCategoriesIndexerEvent $event): void
{
$this->seoUrlUpdater->update('frontend.faq.category', $event->getIds());
}
public function updateFaqListUrls(FaqListIndexerEvent $event): void
{
$this->seoUrlUpdater->update('frontend.faq.list', $event->getIds());
}
}