HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/magento.bikenow.co/vendor/magento/framework/App/Cache/Manager.php
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

namespace Magento\Framework\App\Cache;

use Magento\Framework\App;

/**
 * Cache status manager
 *
 * @api
 * @since 100.0.2
 */
class Manager
{
    /**
     * Cache types list
     *
     * @var TypeListInterface
     */
    private $cacheTypeList;

    /**
     * Cache state service
     *
     * @var StateInterface
     */
    private $cacheState;

    /**
     * Cache types pool
     *
     * @var Type\FrontendPool
     */
    private $pool;

    /**
     * Constructor
     *
     * @param TypeListInterface $cacheTypeList
     * @param StateInterface $cacheState
     * @param Type\FrontendPool $pool
     */
    public function __construct(
        TypeListInterface $cacheTypeList,
        StateInterface $cacheState,
        Type\FrontendPool $pool
    ) {
        $this->cacheTypeList = $cacheTypeList;
        $this->cacheState = $cacheState;
        $this->pool = $pool;
    }

    /**
     * Updates cache status for the requested types
     *
     * @param string[] $types
     * @param bool $isEnabled
     * @return array List of types with changed status
     */
    public function setEnabled(array $types, $isEnabled)
    {
        $changedStatusTypes = [];
        $isUpdated = false;
        foreach ($types as $type) {
            if ($this->cacheState->isEnabled($type) === $isEnabled) { // no need to poke it, if is not going to change
                continue;
            }
            $this->cacheState->setEnabled($type, $isEnabled);
            $isUpdated = true;
            $changedStatusTypes[] = $type;
        }
        if ($isUpdated) {
            $this->cacheState->persist();
        }
        return $changedStatusTypes;
    }

    /**
     * Cleans up caches
     *
     * @param array $types
     * @return void
     */
    public function clean(array $types)
    {
        foreach ($types as $type) {
            $this->cacheTypeList->cleanType($type);
        }
    }

    /**
     * Flushes specified cache storages
     *
     * @param string[] $types
     * @return void
     */
    public function flush(array $types)
    {
        $flushedBackend = [];
        foreach ($types as $type) {
            $backend = $this->pool->get($type)->getBackend();
            if (in_array($backend, $flushedBackend, true)) { // it was already flushed from another frontend
                continue;
            }
            $backend->clean();
            $flushedBackend[] = $backend;
        }
    }

    /**
     * Presents summary about cache status
     *
     * @return array
     */
    public function getStatus()
    {
        $result = [];
        foreach ($this->cacheTypeList->getTypes() as $type) {
            $result[$type['id']] = $type['status'];
        }
        return $result;
    }

    /**
     * @return array
     */
    public function getAvailableTypes()
    {
        $result = [];
        foreach ($this->cacheTypeList->getTypes() as $type) {
            $result[] = $type['id'];
        }
        return $result;
    }
}