From 308bf50e76f6b2f7f66def6daa4312fdf4abb026 Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Thu, 14 Sep 2017 12:17:21 +0200 Subject: [PATCH] MDL-60132 tool_mobile: Handle correctly moodle_url instances In Moodle there are some functions that can be overridden by themes. Some themes are returning incorrect value types in those functions --- admin/tool/mobile/classes/api.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/admin/tool/mobile/classes/api.php b/admin/tool/mobile/classes/api.php index 2fc0bfe6668..3c247e3e052 100644 --- a/admin/tool/mobile/classes/api.php +++ b/admin/tool/mobile/classes/api.php @@ -152,10 +152,11 @@ class api { $url = new moodle_url("/$CFG->admin/tool/mobile/launch.php"); $settings['launchurl'] = $url->out(false); - if ($logourl = $OUTPUT->get_logo_url()) { + // Check that we are receiving a moodle_url object, themes can override get_logo_url and may return incorrect values. + if (($logourl = $OUTPUT->get_logo_url()) && $logourl instanceof moodle_url) { $settings['logourl'] = $logourl->out(false); } - if ($compactlogourl = $OUTPUT->get_compact_logo_url()) { + if (($compactlogourl = $OUTPUT->get_compact_logo_url()) && $compactlogourl instanceof moodle_url) { $settings['compactlogourl'] = $compactlogourl->out(false); } @@ -215,7 +216,11 @@ class api { if (empty($section) or $section == 'gradessettings') { require_once($CFG->dirroot . '/user/lib.php'); - $settings->mygradesurl = user_mygrades_url()->out(false); + $settings->mygradesurl = user_mygrades_url(); + // The previous function may return moodle_url instances or plain string URLs. + if ($settings->mygradesurl instanceof moodle_url) { + $settings->mygradesurl = $settings->mygradesurl->out(false); + } } if (empty($section) or $section == 'mobileapp') {