From 04bcd1ce39aa0dbfe034b36fd3d94a14608298a7 Mon Sep 17 00:00:00 2001 From: Sam Hemelryk Date: Tue, 27 Mar 2012 11:32:09 +1300 Subject: [PATCH 1/2] MDL-29678 navigation: Navigation AJAX require_login calls no longer set wantsurl or redirect --- lib/navigationlib.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/navigationlib.php b/lib/navigationlib.php index 45ef60e491a..5d2890c5e28 100644 --- a/lib/navigationlib.php +++ b/lib/navigationlib.php @@ -2643,7 +2643,7 @@ class global_navigation_for_ajax extends global_navigation { break; case self::TYPE_COURSE : $course = $DB->get_record('course', array('id' => $this->instanceid), '*', MUST_EXIST); - require_course_login($course); + require_course_login($course, true, null, false, true); $this->page->set_context(get_context_instance(CONTEXT_COURSE, $course->id)); $coursenode = $this->add_course($course); $this->add_course_essentials($coursenode, $course); @@ -2657,7 +2657,7 @@ class global_navigation_for_ajax extends global_navigation { LEFT JOIN {course_sections} cs ON cs.course = c.id WHERE cs.id = ?'; $course = $DB->get_record_sql($sql, array($this->instanceid), MUST_EXIST); - require_course_login($course); + require_course_login($course, true, null, false, true); $this->page->set_context(get_context_instance(CONTEXT_COURSE, $course->id)); $coursenode = $this->add_course($course); $this->add_course_essentials($coursenode, $course); @@ -2674,7 +2674,7 @@ class global_navigation_for_ajax extends global_navigation { $course = $DB->get_record_sql($sql, $params, MUST_EXIST); $modinfo = get_fast_modinfo($course); $cm = $modinfo->get_cm($this->instanceid); - require_course_login($course, true, $cm); + require_course_login($course, true, $cm, false, true); $this->page->set_context(get_context_instance(CONTEXT_MODULE, $cm->id)); $coursenode = $this->load_course($course); if ($course->id == SITEID) { From aa4a6566a57ec5855382bd707f2496891783163a Mon Sep 17 00:00:00 2001 From: Sam Hemelryk Date: Tue, 27 Mar 2012 11:48:51 +1300 Subject: [PATCH 2/2] MDL-29678 lib: Require login now overrides to false for AJAX scripts --- lib/moodlelib.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/moodlelib.php b/lib/moodlelib.php index fe642a914b6..0353c866fcc 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -2682,6 +2682,13 @@ function require_login($courseorid = NULL, $autologinguest = true, $cm = NULL, $ } } + // If this is an AJAX request and $setwantsurltome is true then we need to override it and set it to false. + // Otherwise the AJAX request URL will be set to $SESSION->wantsurl and events such as self enrolment in the future + // risk leading the user back to the AJAX request URL. + if ($setwantsurltome && defined('AJAX_SCRIPT') && AJAX_SCRIPT) { + $setwantsurltome = false; + } + // If the user is not even logged in yet then make sure they are if (!isloggedin()) { if ($autologinguest and !empty($CFG->guestloginbutton) and !empty($CFG->autologinguests)) {