<?php
declare(strict_types=1);
namespace WnsSecurityComplianceSuite\Logging\Subscriber;
use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityWrittenEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use WnsSecurityComplianceSuite\Logging\Provider\SourceInfoProvider;
final class CacheInvalidationSubscriber implements EventSubscriberInterface
{
private SourceInfoProvider $sourceInfoProvider;
public function __construct(
SourceInfoProvider $sourceInfoProvider
) {
$this->sourceInfoProvider = $sourceInfoProvider;
}
public static function getSubscribedEvents()
{
return [
'user.written' => 'invalidateUserCache',
'user.deleted' => 'invalidateUserCache',
'integration.written' => 'invalidateIntegrationCache',
'integration.deleted' => 'invalidateIntegrationCache',
];
}
public function invalidateUserCache(EntityWrittenEvent $event): void
{
foreach ($event->getWriteResults() as $userWriteResult) {
/** @var string $userId */
$userId = $userWriteResult->getPrimaryKey();
$this->sourceInfoProvider->clearUserCache($userId);
}
}
public function invalidateIntegrationCache(EntityWrittenEvent $event): void
{
foreach ($event->getWriteResults() as $integrationWriteResult) {
/** @var string $integrationId */
$integrationId = $integrationWriteResult->getPrimaryKey();
$this->sourceInfoProvider->clearIntegrationCache($integrationId);
}
}
}