diff --git a/course/lib.php b/course/lib.php index f9c50d3280f..6ed5bb5f0b2 100644 --- a/course/lib.php +++ b/course/lib.php @@ -959,7 +959,9 @@ function get_array_of_activities($courseid) { $mod[$seq]->extraclasses = $info->extraclasses; } if (!empty($info->iconurl)) { - $mod[$seq]->iconurl = $info->iconurl; + // Convert URL to string as it's easier to store. Also serialized object contains \0 byte and can not be written to Postgres DB. + $url = new moodle_url($info->iconurl); + $mod[$seq]->iconurl = $url->out(false); } if (!empty($info->onclick)) { $mod[$seq]->onclick = $info->onclick; diff --git a/lib/modinfolib.php b/lib/modinfolib.php index d48504ec640..8772b9ad59d 100644 --- a/lib/modinfolib.php +++ b/lib/modinfolib.php @@ -1079,7 +1079,8 @@ class cm_info extends stdClass { $this->indent = isset($mod->indent) ? $mod->indent : 0; $this->extra = isset($mod->extra) ? $mod->extra : ''; $this->extraclasses = isset($mod->extraclasses) ? $mod->extraclasses : ''; - $this->iconurl = isset($mod->iconurl) ? $mod->iconurl : ''; + // iconurl may be stored as either string or instance of moodle_url. + $this->iconurl = isset($mod->iconurl) ? new moodle_url($mod->iconurl) : ''; $this->onclick = isset($mod->onclick) ? $mod->onclick : ''; $this->content = isset($mod->content) ? $mod->content : ''; $this->icon = isset($mod->icon) ? $mod->icon : '';