diff --git a/lib/adminlib.php b/lib/adminlib.php index 2dbef38f49a..cb993f5bd88 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -4802,6 +4802,8 @@ class admin_setting_special_coursecontact extends admin_setting_pickroles { parent::__construct('coursecontact', get_string('coursecontact', 'admin'), get_string('coursecontact_desc', 'admin'), array('editingteacher')); + $this->set_updatedcallback(create_function('', + "cache::make('core', 'coursecontacts')->purge();")); } } diff --git a/lib/coursecatlib.php b/lib/coursecatlib.php index ee93258afea..69f3b8ce887 100644 --- a/lib/coursecatlib.php +++ b/lib/coursecatlib.php @@ -708,16 +708,7 @@ class coursecat implements renderable, cacheable_object, IteratorAggregate { } $managerroles = explode(',', $CFG->coursecontact); $cache = cache::make('core', 'coursecontacts'); - $cacheddata = $cache->get_many(array_merge(array('basic'), array_keys($courses))); - // Check if cache was set for the current course contacts and it is not yet expired. - if (empty($cacheddata['basic']) || $cacheddata['basic']['roles'] !== $CFG->coursecontact || - $cacheddata['basic']['lastreset'] < time() - self::CACHE_COURSE_CONTACTS_TTL) { - // Reset cache. - $keys = $DB->get_fieldset_select('course', 'id', ''); - $cache->delete_many($keys); - $cache->set('basic', array('roles' => $CFG->coursecontact, 'lastreset' => time())); - $cacheddata = $cache->get_many(array_merge(array('basic'), array_keys($courses))); - } + $cacheddata = $cache->get_many(array_keys($courses)); $courseids = array(); foreach (array_keys($courses) as $id) { if ($cacheddata[$id] !== false) { diff --git a/lib/db/caches.php b/lib/db/caches.php index e71dc577fee..3486ff3e437 100644 --- a/lib/db/caches.php +++ b/lib/db/caches.php @@ -179,6 +179,7 @@ $definitions = array( 'mode' => cache_store::MODE_APPLICATION, 'staticacceleration' => true, 'simplekeys' => true, + 'ttl' => 3600, ), // Used to store data for repositories to avoid repetitive DB queries within one request. 'repositories' => array(