MDL-36115 cache: Fixed up requirements check in cache admin interfaces
authorSam Hemelryk <sam@moodle.com>
Thu, 18 Oct 2012 06:40:51 +0000 (14:40 +0800)
committerSam Hemelryk <sam@moodle.com>
Fri, 19 Oct 2012 00:12:32 +0000 (08:12 +0800)
cache/admin.php
cache/locallib.php
lang/en/cache.php

index aeed928..ce26856 100644 (file)
@@ -54,6 +54,9 @@ if (!empty($action) && confirm_sesskey()) {
             break;
         case 'addstore' : // Add the requested store.
             $plugin = required_param('plugin', PARAM_PLUGIN);
+            if (!$plugins[$plugin]['canaddinstance']) {
+                print_error('ex_unmetstorerequirements', 'cache');
+            }
             $mform = cache_administration_helper::get_add_store_form($plugin);
             $title = get_string('addstore', 'cache', $plugins[$plugin]['name']);
             if ($mform->is_cancelled()) {
index 08a3ca9..8b6c3ab 100644 (file)
@@ -566,7 +566,7 @@ abstract class cache_administration_helper extends cache_helper {
                     'nativelocking' => (in_array('cache_is_lockable', class_implements($class))),
                     'keyawareness' => (array_key_exists('cache_is_key_aware', class_implements($class))),
                 ),
-                'canaddinstance' => ($class::can_add_instance())
+                'canaddinstance' => ($class::can_add_instance() && $class::are_requirements_met())
             );
         }
 
@@ -702,7 +702,7 @@ abstract class cache_administration_helper extends cache_helper {
      */
     public static function get_store_plugin_actions($name, array $plugindetails) {
         $actions = array();
-        if (has_capability('moodle/site:config', get_system_context())) {
+        if (has_capability('moodle/site:config', context_system::instance())) {
             if (!empty($plugindetails['canaddinstance'])) {
                 $url = new moodle_url('/cache/admin.php', array('action' => 'addstore', 'plugin' => $name, 'sesskey' => sesskey()));
                 $actions[] = array(
index 75383e8..aab4e50 100644 (file)
@@ -63,6 +63,7 @@ $string['editdefinitionmappings'] = '{$a} definition store mappings';
 $string['ex_configcannotsave'] = 'Unable to save the cache config to file.';
 $string['ex_nodefaultlock'] = 'Unable to find a default lock instance.';
 $string['ex_unabletolock'] = 'Unable to acquire a lock for caching.';
+$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['invalidplugin'] = 'Invalid plugin';