<?php
namespace Abcpremium\DataObjectQualityBundle\Event\Subscriber;
use Abcpremium\DataObjectQualityBundle\Cache\BundleCache;
use Pimcore\Event\DataObjectEvents;
use Pimcore\Event\Model\DataObjectEvent;
use Pimcore\Model\DataObject\DataQualityConfig;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class InvalidateCacheOnConfigSave implements EventSubscriberInterface
{
private BundleCache $cache;
public function __construct(
BundleCache $cache
) {
$this->cache = $cache;
}
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents(): array
{
return [
DataObjectEvents::POST_UPDATE => 'invalidateCacheForClassId',
];
}
public function invalidateCacheForClassId(DataObjectEvent $event): void
{
if (true === $this->isAutoSave($event->getArguments())) {
return;
}
$element = $event->getElement();
if (!$element instanceof DataQualityConfig) {
return;
}
if (null === $element->getDataObjectClassId()) {
return;
}
$this->cache->deleteCachesByClassId($element->getDataObjectClassId());
}
private function isAutoSave(array $eventArguments): bool
{
if (isset($eventArguments['isAutoSave']) && true === $eventArguments['isAutoSave']) {
return true;
}
return false;
}
}