vendor/shopware/core/Content/Rule/DataAbstractionLayer/RuleIndexerSubscriber.php line 44
<?php declare(strict_types=1);namespace Shopware\Core\Content\Rule\DataAbstractionLayer;use Doctrine\DBAL\Connection;use Shopware\Core\Checkout\Cart\CartRuleLoader;use Shopware\Core\Content\Rule\RuleEvents;use Shopware\Core\Framework\DataAbstractionLayer\Doctrine\RetryableQuery;use Shopware\Core\Framework\Log\Package;use Shopware\Core\Framework\Plugin\Event\PluginPostActivateEvent;use Shopware\Core\Framework\Plugin\Event\PluginPostDeactivateEvent;use Shopware\Core\Framework\Plugin\Event\PluginPostInstallEvent;use Shopware\Core\Framework\Plugin\Event\PluginPostUninstallEvent;use Shopware\Core\Framework\Plugin\Event\PluginPostUpdateEvent;use Symfony\Component\EventDispatcher\EventSubscriberInterface;/*** @internal*/#[Package('business-ops')]class RuleIndexerSubscriber implements EventSubscriberInterface{/*** @internal*/public function __construct(private readonly Connection $connection,private readonly CartRuleLoader $cartRuleLoader) {}public static function getSubscribedEvents(): array{return [PluginPostInstallEvent::class => 'refreshPlugin',PluginPostActivateEvent::class => 'refreshPlugin',PluginPostUpdateEvent::class => 'refreshPlugin',PluginPostDeactivateEvent::class => 'refreshPlugin',PluginPostUninstallEvent::class => 'refreshPlugin',RuleEvents::RULE_WRITTEN_EVENT => 'onRuleWritten',];}public function refreshPlugin(): void{// Delete the payload and invalid flag of all rules$update = new RetryableQuery($this->connection,$this->connection->prepare('UPDATE `rule` SET `payload` = null, `invalid` = 0'));$update->execute();}public function onRuleWritten(): void{$this->cartRuleLoader->invalidate();}}