vendor/shopware/storefront/Theme/CachedResolvedConfigLoaderInvalidator.php line 63

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Storefront\Theme;
  3. use Shopware\Core\Framework\Adapter\Cache\CacheInvalidator;
  4. use Shopware\Core\Framework\Log\Package;
  5. use Shopware\Storefront\Framework\Routing\CachedDomainLoader;
  6. use Shopware\Storefront\Theme\Event\ThemeAssignedEvent;
  7. use Shopware\Storefront\Theme\Event\ThemeConfigChangedEvent;
  8. use Shopware\Storefront\Theme\Event\ThemeConfigResetEvent;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. /**
  11. * @deprecated tag:v6.5.0 - reason:becomes-internal - EventSubscribers will become internal in v6.5.0
  12. */
  13. #[Package('storefront')]
  14. class CachedResolvedConfigLoaderInvalidator implements EventSubscriberInterface
  15. {
  16. private CacheInvalidator $logger;
  17. /**
  18. * @internal
  19. */
  20. public function __construct(CacheInvalidator $logger)
  21. {
  22. $this->logger = $logger;
  23. }
  24. /**
  25. * @return array<string, string|array{0: string, 1: int}|list<array{0: string, 1?: int}>>
  26. */
  27. public static function getSubscribedEvents()
  28. {
  29. return [
  30. ThemeConfigChangedEvent::class => 'invalidate',
  31. ThemeAssignedEvent::class => 'assigned',
  32. ThemeConfigResetEvent::class => 'reset',
  33. ];
  34. }
  35. public function invalidate(ThemeConfigChangedEvent $event): void
  36. {
  37. $tags = [CachedResolvedConfigLoader::buildName($event->getThemeId())];
  38. $keys = array_keys($event->getConfig());
  39. foreach ($keys as $key) {
  40. $tags[] = ThemeConfigValueAccessor::buildName($key);
  41. }
  42. $this->logger->invalidate($tags);
  43. }
  44. public function assigned(ThemeAssignedEvent $event): void
  45. {
  46. $this->logger->invalidate([CachedResolvedConfigLoader::buildName($event->getThemeId())]);
  47. $this->logger->invalidate([CachedDomainLoader::CACHE_KEY]);
  48. $salesChannelId = $event->getSalesChannelId();
  49. $this->logger->invalidate(['translation.catalog.' . $salesChannelId], true);
  50. }
  51. public function reset(ThemeConfigResetEvent $event): void
  52. {
  53. $this->logger->invalidate([CachedResolvedConfigLoader::buildName($event->getThemeId())]);
  54. }
  55. }