Merge branch 'wip-MDL-26781' of git://github.com/sammarshallou/moodle
[moodle.git] / lib / adminlib.php
index 4668e0a..ffbd3d2 100644 (file)
@@ -1382,6 +1382,8 @@ abstract class admin_setting {
     public $plugin; // null means main config table
     /** @var bool true indicates this setting does not actually save anything, just information */
     public $nosave = false;
+    /** @var bool if set, indicates that a change to this setting requires rebuild course cache */
+    public $affectsmodinfo = false;
 
     /**
      * Constructor
@@ -1443,6 +1445,14 @@ abstract class admin_setting {
         return 'id_s_'.$this->plugin.'_'.$this->name;
     }
 
+    /**
+     * @param bool $affectsmodinfo If true, changes to this setting will
+     *   cause the course cache to be rebuilt
+     */
+    public function set_affects_modinfo($affectsmodinfo) {
+        $this->affectsmodinfo = $affectsmodinfo;
+    }
+
     /**
      * Returns the config if possible
      *
@@ -1489,6 +1499,12 @@ abstract class admin_setting {
         // store change
         set_config($name, $value, $this->plugin);
 
+        // Some admin settings affect course modinfo
+        if ($this->affectsmodinfo) {
+            // Clear course cache for all courses
+            rebuild_course_cache(0, true);
+        }
+
         // log change
         $log = new stdClass();
         $log->userid       = during_initial_install() ? 0 :$USER->id; // 0 as user id during install