<?php
/**
 * Mirasvit
 *
 * This source file is subject to the Mirasvit Software License, which is available at https://mirasvit.com/license/.
 * Do not edit or add to this file if you wish to upgrade the to newer versions in the future.
 * If you wish to customize this module for your needs.
 * Please refer to http://www.magentocommerce.com for more information.
 *
 * @category  Mirasvit
 * @package   mirasvit/module-cache-warmer
 * @version   1.11.13
 * @copyright Copyright (C) 2026 Mirasvit (https://mirasvit.com/)
 */


declare(strict_types=1);


namespace Mirasvit\CacheWarmer\Plugin\Litemage\Model\CachePurge;


use Magento\Framework\App\DeploymentConfig;
use Magento\Framework\App\ObjectManager;
use Mirasvit\CacheWarmer\Model\Config;
use Mirasvit\CacheWarmer\Service\Config\ExtendedConfig;

class ForbidCacheFlushPlugin
{
    public function aroundAddPurgeTags($subject, $proceed, $tags, $source)
    {
        if ($this->isCacheFlushAllowed()) {
            return $proceed($tags, $source);
        }

        if (PHP_SAPI == 'cli' || strpos((string)$source, 'CLI') !== false) {
            return $proceed($tags, $source);
        }

        return;
    }

    private function getExtendedConfig()
    {
        return ObjectManager::getInstance()->get(ExtendedConfig::class);
    }

    private function getModuleConfig()
    {
        return ObjectManager::getInstance()->get(Config::class);
    }

    private function isCacheFlushAllowed(): bool
    {
        return !$this->getModuleConfig()->isEnabled()
            || !$this->getExtendedConfig()->isForbidCacheFlush();
    }
}
