]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-15039 Apostrophes in idnumber prevent users from being unenrolled via LDAP
authoriarenaza <iarenaza>
Mon, 2 Jun 2008 22:39:39 +0000 (22:39 +0000)
committeriarenaza <iarenaza>
Mon, 2 Jun 2008 22:39:39 +0000 (22:39 +0000)
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.

enrol/ldap/enrol.php

index 33d73bf5a6d24f6b9bc6a06e9c7ceb469097615b..999f1b73b65360b69254e392474fb9c8b878e63e 100755 (executable)
@@ -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";
                             }
                         }
                     }