. namespace core_cache; use core\exception\coding_exception; use core_cache\exception\cache_exception; use cachestore_static; use cachestore_session; use cachestore_file; /** * The cache config 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_config extends config_writer { /** * Returns an instance of the configuration writer. * * @return disabled_config */ public static function instance() { $factory = factory::instance(); return $factory->create_config_instance(true); } /** * Saves the current configuration. */ protected function config_save() { // Nothing to do here. } /** * Generates a configuration array suitable to be written to the config file. * * @return array */ protected function generate_configuration_array() { $configuration = []; $configuration['stores'] = $this->configstores; $configuration['modemappings'] = $this->configmodemappings; $configuration['definitions'] = $this->configdefinitions; $configuration['definitionmappings'] = $this->configdefinitionmappings; $configuration['locks'] = $this->configlocks; return $configuration; } /** * Adds a plugin instance. * * @param string $name Unused. * @param string $plugin Unused. * @param array $configuration Unused. * @return bool * @throws cache_exception */ public function add_store_instance($name, $plugin, array $configuration = []) { return false; } /** * Sets the mode mappings. * * @param array $modemappings Unused. * @return bool * @throws cache_exception */ public function set_mode_mappings(array $modemappings) { return false; } /** * Edits a give plugin instance. * * @param string $name Unused. * @param string $plugin Unused. * @param array $configuration Unused. * @return bool * @throws cache_exception */ public function edit_store_instance($name, $plugin, $configuration) { return false; } /** * Deletes a store instance. * * @param string $name Unused. * @return bool * @throws cache_exception */ public function delete_store_instance($name) { return false; } /** * Creates the default configuration and saves it. * * @param bool $forcesave Ignored because we are disabled! * @return array */ public static function create_default_configuration($forcesave = false) { global $CFG; // HACK ALERT. // We probably need to come up with a better way to create the default stores, or at least ensure 100% that the // default store plugins are protected from deletion. require_once($CFG->dirroot . '/cache/stores/file/lib.php'); require_once($CFG->dirroot . '/cache/stores/session/lib.php'); require_once($CFG->dirroot . '/cache/stores/static/lib.php'); $writer = new self(); $writer->configstores = [ 'default_application' => [ 'name' => 'default_application', 'plugin' => 'file', 'configuration' => [], 'features' => cachestore_file::get_supported_features(), 'modes' => store::MODE_APPLICATION, 'default' => true, ], 'default_session' => [ 'name' => 'default_session', 'plugin' => 'session', 'configuration' => [], 'features' => cachestore_session::get_supported_features(), 'modes' => store::MODE_SESSION, 'default' => true, ], 'default_request' => [ 'name' => 'default_request', 'plugin' => 'static', 'configuration' => [], 'features' => cachestore_static::get_supported_features(), 'modes' => store::MODE_REQUEST, 'default' => true, ], ]; $writer->configdefinitions = []; $writer->configmodemappings = [ [ 'mode' => store::MODE_APPLICATION, 'store' => 'default_application', 'sort' => -1, ], [ 'mode' => store::MODE_SESSION, 'store' => 'default_session', 'sort' => -1, ], [ 'mode' => store::MODE_REQUEST, 'store' => 'default_request', 'sort' => -1, ], ]; $writer->configlocks = [ 'default_file_lock' => [ 'name' => 'cachelock_file_default', 'type' => 'cachelock_file', 'dir' => 'filelocks', 'default' => true, ], ]; return $writer->generate_configuration_array(); } /** * Updates the definition in the configuration from those found in the cache files. * * @param bool $coreonly Unused. */ public static function update_definitions($coreonly = false) { // Nothing to do here. } /** * Locates all of the definition files. * * @param bool $coreonly Unused. * @return array */ protected static function locate_definitions($coreonly = false) { return []; } /** * Sets the mappings for a given definition. * * @param string $definition Unused. * @param array $mappings Unused. * @throws coding_exception */ public function set_definition_mappings($definition, $mappings) { // Nothing to do here. } } // 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_config::class, \cache_config_disabled::class);