123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- <?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;
- }
- }
|