mirror of
https://github.com/moodle/moodle.git
synced 2025-08-03 16:13:28 +02:00
MDL-15039 Apostrophes in idnumber prevent users from being unenrolled via LDAP
If any member of a course has an ID number containing an apostrophe (eg. CN=Paddy O'Brien,OU=Students,DC=etc...), no other members will ever be unenrolled via LDAP. Thanks to Michael Woods for the bug report and proposed solution. Merged from MOODLE_18_STABLE.
This commit is contained in:
parent
7e60297f54
commit
37ad7544f9
1 changed files with 5 additions and 4 deletions
|
@ -237,6 +237,7 @@ function sync_enrolments($type, $enrol = false) {
|
|||
|
||||
$ldapmembers = $course[strtolower($CFG->{'enrol_ldap_memberattribute_role'.$role->id} )];
|
||||
unset($ldapmembers['count']); // remove oddity ;)
|
||||
$ldapmembers = addslashes_recursive($ldapmembers);
|
||||
}
|
||||
|
||||
// prune old ldap enrolments
|
||||
|
@ -274,18 +275,18 @@ function sync_enrolments($type, $enrol = false) {
|
|||
$sql = 'SELECT id,1 FROM {user} '
|
||||
." WHERE idnumber=?";
|
||||
$member = $DB->get_record_sql($sql, array($ldapmember));
|
||||
// print "sql: $sql \nidnumber = $ldapmember \n" . var_dump($member);
|
||||
// print "sql: $sql \nidnumber = ".stripslashes($ldapmember)." \n".var_dump($member);
|
||||
if(empty($member) || empty($member->id)){
|
||||
print "Could not find user $ldapmember, skipping\n";
|
||||
print "Could not find user ".stripslashes($ldapmember).", skipping\n";
|
||||
continue;
|
||||
}
|
||||
$member = $member->id;
|
||||
if (!$DB->get_record('role_assignments', array('roleid'=>$role->id,
|
||||
'contextid'=>$context->id, 'userid'=>$member, 'enrol'=>'ldap'))){
|
||||
if (role_assign($role->id, $member, 0, $context->id, 0, 0, 0, 'ldap')){
|
||||
print "Assigned role $type to $member ($ldapmember) for course $course_obj->id ($course_obj->shortname)\n";
|
||||
print "Assigned role $type to $member (".stripslashes($ldapmember).") for course $course_obj->id ($course_obj->shortname)\n";
|
||||
} else {
|
||||
print "Failed to assign role $type to $member ($ldapmember) for course $course_obj->id ($course_obj->shortname)\n";
|
||||
print "Failed to assign role $type to $member (".stripslashes($ldapmember).") for course $course_obj->id ($course_obj->shortname)\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue