$PAGE->set_title($title);
$PAGE->set_heading($SITE->fullname);
+/* @var core_cache_renderer $renderer */
$renderer = $PAGE->get_renderer('core_cache');
echo $renderer->header();
}
}
}
+
+ /**
+ * Returns an array of stores that would meet the requirements for every definition.
+ *
+ * These stores would be 100% suitable to map as defaults for cache modes.
+ *
+ * @return array[] An array of stores, keys are the store names.
+ */
+ public static function get_stores_suitable_for_mode_default() {
+ $factory = cache_factory::instance();
+ $config = $factory->create_config_instance();
+ $requirements = 0;
+ foreach ($config->get_definitions() as $definition) {
+ $definition = cache_definition::load($definition['component'].'/'.$definition['area'], $definition);
+ $requirements = $requirements | $definition->get_requirements_bin();
+ }
+ $stores = array();
+ foreach ($config->get_all_stores() as $name => $store) {
+ if (!empty($store['features']) && ($store['features'] & $requirements)) {
+ $stores[$name] = $store;
+ }
+ }
+ return $stores;
+ }
}
* @return array An array containing sub-arrays, one for each mode.
*/
public static function get_default_mode_stores() {
+ global $OUTPUT;
$instance = cache_config::instance();
+ $adequatestores = cache_helper::get_stores_suitable_for_mode_default();
+ $icon = new pix_icon('i/warning', new lang_string('inadequatestoreformapping', 'cache'));
$storenames = array();
foreach ($instance->get_all_stores() as $key => $store) {
if (!empty($store['default'])) {
} else {
$modemappings[$mode][$mapping['store']] = $mapping['store'];
}
+ if (!array_key_exists($mapping['store'], $adequatestores)) {
+ $modemappings[$mode][$mapping['store']] = $modemappings[$mode][$mapping['store']].' '.$OUTPUT->render($icon);
+ }
}
return $modemappings;
}
$string['ex_unmetstorerequirements'] = 'You are unable to use this store at the present time. Please refer to the documentation to determine its requirements.';
$string['gethit'] = 'Get - Hit';
$string['getmiss'] = 'Get - Miss';
+$string['inadequatestoreformapping'] = 'This store doesn\'t meet the requirements for all known definitions. Definitions for which this store is inadequate will be given the original default store instead of the selected store.';
$string['invalidlock'] = 'Invalid lock';
$string['invalidplugin'] = 'Invalid plugin';
$string['invalidstore'] = 'Invalid cache store provided';