12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\CacheInvalidate\Observer;
- use Magento\Framework\Event\ObserverInterface;
- class InvalidateVarnishObserver implements ObserverInterface
- {
- /**
- * Application config object
- *
- * @var \Magento\Framework\App\Config\ScopeConfigInterface
- */
- protected $config;
- /**
- * @var \Magento\CacheInvalidate\Model\PurgeCache
- */
- protected $purgeCache;
- /**
- * Invalidation tags resolver
- *
- * @var \Magento\Framework\App\Cache\Tag\Resolver
- */
- private $tagResolver;
- /**
- * @param \Magento\PageCache\Model\Config $config
- * @param \Magento\CacheInvalidate\Model\PurgeCache $purgeCache
- */
- public function __construct(
- \Magento\PageCache\Model\Config $config,
- \Magento\CacheInvalidate\Model\PurgeCache $purgeCache
- ) {
- $this->config = $config;
- $this->purgeCache = $purgeCache;
- }
- /**
- * If Varnish caching is enabled it collects array of tags
- * of incoming object and asks to clean cache.
- *
- * @param \Magento\Framework\Event\Observer $observer
- * @return void
- */
- public function execute(\Magento\Framework\Event\Observer $observer)
- {
- $object = $observer->getEvent()->getObject();
- if (!is_object($object)) {
- return;
- }
- if ($this->config->getType() == \Magento\PageCache\Model\Config::VARNISH && $this->config->isEnabled()) {
- $bareTags = $this->getTagResolver()->getTags($object);
- $tags = [];
- $pattern = "((^|,)%s(,|$))";
- foreach ($bareTags as $tag) {
- $tags[] = sprintf($pattern, $tag);
- }
- if (!empty($tags)) {
- $this->purgeCache->sendPurgeRequest(implode('|', array_unique($tags)));
- }
- }
- }
- /**
- * @deprecated 100.1.2
- * @return \Magento\Framework\App\Cache\Tag\Resolver
- */
- private function getTagResolver()
- {
- if ($this->tagResolver === null) {
- $this->tagResolver = \Magento\Framework\App\ObjectManager::getInstance()
- ->get(\Magento\Framework\App\Cache\Tag\Resolver::class);
- }
- return $this->tagResolver;
- }
- }
|