diff --git a/lib/modinfolib.php b/lib/modinfolib.php
index b5e3d87b8ad..d0c310db9e6 100644
--- a/lib/modinfolib.php
+++ b/lib/modinfolib.php
@@ -701,7 +701,7 @@ class course_modinfo {
* {@link cached_cm_info}
*
* Stage 2 - dynamic data.
- * Dynamic data is user-dependend, it is stored in request-level cache. To reset this cache
+ * Dynamic data is user-dependent, it is stored in request-level cache. To reset this cache
* {@link get_fast_modinfo()} with $reset argument may be called.
*
* Dynamic data is obtained when any of the following properties/methods is requested:
@@ -722,6 +722,7 @@ class course_modinfo {
* - {@link cm_info::set_user_visible()}
* - {@link cm_info::set_on_click()}
* - {@link cm_info::set_icon_url()}
+ * - {@link cm_info::override_customdata()}
* Any methods affecting view elements can also be set in this callback.
*
* Stage 3 (view data).
@@ -1422,6 +1423,7 @@ class cm_info implements IteratorAggregate {
* @return mixed Optional custom data stored in modinfo cache for this activity, or null if none
*/
private function get_custom_data() {
+ $this->obtain_dynamic_data();
return $this->customdata;
}
@@ -1679,6 +1681,16 @@ class cm_info implements IteratorAggregate {
$this->onclick = $onclick;
}
+ /**
+ * Overrides the value of an element in the customdata array.
+ *
+ * @param string $name The key in the customdata array
+ * @param mixed $value The value
+ */
+ public function override_customdata($name, $value) {
+ $this->customdata[$name] = $value;
+ }
+
/**
* Sets HTML that displays after link on course view page.
* @param string $afterlink HTML string (empty string if none)