From: moodler Date: Mon, 25 Sep 2006 01:34:21 +0000 (+0000) Subject: Added a checking flag to check_enrolment_plugins() to make sure that it X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=e4ec4e414930e58e89de4727095768bcff9ef00d;p=moodle.git Added a checking flag to check_enrolment_plugins() to make sure that it never repeats more than once in an invocation. Otherwise it's sometimes possible for role_assign() during the enrolment process to cause loops. --- diff --git a/lib/accesslib.php b/lib/accesslib.php index 4d5a68dd83..74866291e0 100755 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -742,6 +742,14 @@ function load_user_capability($capability='', $context ='', $userid='') { function check_enrolment_plugins(&$user) { global $CFG; + static $inprogress; // To prevent this function being called more than once in an invocation + + if (!empty($inprogress)) { + return; + } + + $inprogress = true; // Set the flag + require_once($CFG->dirroot .'/enrol/enrol.class.php'); if (!($plugins = explode(',', $CFG->enrol_plugins_enabled))) { @@ -766,6 +774,8 @@ function check_enrolment_plugins(&$user) { } unset($enrol); } + + $inprogress = false; // Unset the flag }