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.
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user