. namespace core_cache; use core\exception\coding_exception; /** * The cache loader class used when the Cache has been disabled. * * @package core_cache * @copyright 2012 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class disabled_cache extends cache implements loader_with_locking_interface { /** * Constructs the cache. * * @param definition $definition * @param store $store * @param null $loader Unused. */ public function __construct(definition $definition, store $store, $loader = null) { if ($loader instanceof data_source_interface) { // Set the data source to allow data sources to work when caching is entirely disabled. $this->set_data_source($loader); } // No other features are handled. } /** * Gets a key from the cache. * * @param int|string $key * @param int $requiredversion Minimum required version of the data or cache::VERSION_NONE * @param int $strictness Unused. * @param mixed &$actualversion If specified, will be set to the actual version number retrieved * @return bool */ protected function get_implementation($key, int $requiredversion, int $strictness, &$actualversion = null) { $datasource = $this->get_datasource(); if ($datasource !== false) { if ($requiredversion === cache::VERSION_NONE) { return $datasource->load_for_cache($key); } else { if (!$datasource instanceof versionable_data_source_interface) { throw new coding_exception('Data source is not versionable'); } $result = $datasource->load_for_cache_versioned($key, $requiredversion, $actualversion); if ($result && $actualversion < $requiredversion) { throw new coding_exception('Data source returned outdated version'); } return $result; } } return false; } /** * Gets many keys at once from the cache. * * @param array $keys * @param int $strictness Unused. * @return array */ public function get_many(array $keys, $strictness = IGNORE_MISSING) { if ($this->get_datasource() !== false) { return $this->get_datasource()->load_many_for_cache($keys); } return array_combine($keys, array_fill(0, count($keys), false)); } /** * Sets a key value pair in the cache. * * @param int|string $key Unused. * @param int $version Unused. * @param mixed $data Unused. * @param bool $setparents Unused. * @return bool */ protected function set_implementation($key, int $version, $data, bool $setparents = true): bool { return false; } /** * Sets many key value pairs in the cache at once. * * @param array $keyvaluearray Unused. * @return int */ public function set_many(array $keyvaluearray) { return 0; } /** * Deletes an item from the cache. * * @param int|string $key Unused. * @param bool $recurse Unused. * @return bool */ public function delete($key, $recurse = true) { return false; } /** * Deletes many items at once from the cache. * * @param array $keys Unused. * @param bool $recurse Unused. * @return int */ public function delete_many(array $keys, $recurse = true) { return 0; } /** * Checks if the cache has the requested key. * * @param int|string $key Unused. * @param bool $tryloadifpossible Unused. * @return bool */ public function has($key, $tryloadifpossible = false) { $result = $this->get($key); return $result !== false; } /** * Checks if the cache has all of the requested keys. * @param array $keys Unused. * @return bool */ public function has_all(array $keys) { if (!$this->get_datasource()) { return false; } foreach ($keys as $key) { if (!$this->has($key)) { return false; } } return true; } /** * Checks if the cache has any of the requested keys. * * @param array $keys Unused. * @return bool */ public function has_any(array $keys) { foreach ($keys as $key) { if ($this->has($key)) { return true; } } return false; } /** * Purges all items from the cache. * * @return bool */ public function purge() { return true; } /** * Pretend that we got a lock to avoid errors. * * @param int|string $key * @return bool */ public function acquire_lock($key): bool { return true; } /** * Pretend that we released a lock to avoid errors. * * @param int|string $key * @return bool */ public function release_lock($key): bool { return true; } /** * Pretend that we have a lock to avoid errors. * * @param int|string $key * @return bool */ public function check_lock_state($key): bool { return true; } } // Alias this class to the old name. // This file will be autoloaded by the legacyclasses autoload system. // In future all uses of this class will be corrected and the legacy references will be removed. class_alias(disabled_cache::class, \cache_disabled::class);