Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Usersync is almost working now. Only unescaped dots etc.. can broke

database updates.
  • Loading branch information...
commit e472709dddca8ca099e099f8af41ccbfecb5cbd2 1 parent 6a1bdf4
paca70 authored
Showing with 20 additions and 16 deletions.
  1. +20 −16 auth/ldap/lib.php
View
36 auth/ldap/lib.php
@@ -316,13 +316,13 @@ function auth_sync_users ($firstsync=0, $unsafe_optimizations = false, $bulk_ins
/// blinding fast inserts -- but test it: you may hit mysqld's
/// max_allowed_packet limit.
- global $CFG ;
+ global $CFG,$db ;
auth_ldap_init();
$ldapusers = auth_get_users('*', true); //list all but created users from ldap
if (!$unsafe_optimizations) {
//NORMAL SYNRONIZATION ROUTINE STARTS
-
+ $db->SetFetchMode(ADODB_FETCH_ASSOC) ;
if ($firstsync) {
//fill idnumbers
$users = get_records(user, 'auth', 'ldap', '', 'id, username', '');
@@ -358,15 +358,16 @@ function auth_sync_users ($firstsync=0, $unsafe_optimizations = false, $bulk_ins
//make information available with idnumber
$moodleldapusers = array(); //all users in moodle db
- foreach ($users as $user){
- $moodleldapusers[$user->idnumber]= $user;
+ foreach ($users as $id=>$info){
+ $moodleldapusers[$info->idnumber]= $info;
+ $moodleldapusers[$info->idnumber]->id=$id;
}
unset($users); //not needed anymore
//get attributemappings
$attrmap = auth_ldap_attributes();
- $updatelocals = array();
+ $updatelocals = array('username');
$updateremotes = array();
foreach ($attrmap as $key=>$value) {
if (isset($CFG->{'auth_user_'.$key.'_updatelocal'}) && $CFG->{'auth_user_'.$key.'_updatelocal'} ) {
@@ -389,8 +390,8 @@ function auth_sync_users ($firstsync=0, $unsafe_optimizations = false, $bulk_ins
$user->idnumber = bin2hex($user->idnumber);
}
$idnumber = $user->idnumber;
-
- if (isset($moodleldapusers[$idnumber])) {
+
+ if (array_key_exists($idnumber, $moodleldapusers)) {
$arraytoupdate = &$updateusers;
$userinfo = $moodleldapusers[$idnumber];
unset($moodleldapusers[$idnumber]);
@@ -410,10 +411,11 @@ function auth_sync_users ($firstsync=0, $unsafe_optimizations = false, $bulk_ins
$userinfo->timemodified = time();
$userinfo->confirmed = 1;
$userinfo->deleted = 0;
+ $userinfo->auth = 'ldap';
//store userinfo to selected array
$arraytoupdate[$idnumber] = $userinfo;
-
+
} else {
//cannot sync remoteuser without idumber
echo 'Cannot sync remote user to moodle '.$user->dn." without idnumber field\n";
@@ -422,6 +424,7 @@ function auth_sync_users ($firstsync=0, $unsafe_optimizations = false, $bulk_ins
//update local users
foreach ($updateusers as $user) {
+
if (update_record('user', $user)) {
echo 'Updated user record '.$user->username."\n";
} else {
@@ -431,31 +434,32 @@ function auth_sync_users ($firstsync=0, $unsafe_optimizations = false, $bulk_ins
}
//add new users
- foreach ($updateusers as $user) {
+ foreach ($newusers as $user) {
if (insert_record('user', $user, $false)) {
echo 'Inserted user record'.$user->username."\n";
} else {
echo 'Cannot insert user record'.$user->username."\n";
+ print_r($user);
}
}
//remove old users
- foreach ($moodleldapusers as $remove) {
+ foreach ($moodleldapusers as $user) {
//following is copy pasted from admin/user.php
//maybe this should moved to function in lib/datalib.php
- unset($updateuser);
+ unset($remove);
$remove->id = $user->id;
$remove->deleted = "1";
$remove->username = "$user->email.".time(); // Remember it just in case
$remove->email = ""; // Clear this field to free it up
$remove->timemodified = time();
if (update_record("user", $remove)) {
- unenrol_student($remove->id); // From all courses
- remove_teacher($remove->id); // From all courses
- remove_admin($remove->id);
- notify(get_string("deletedactivity", "", fullname($remove, true)) );
+ unenrol_student($user->id); // From all courses
+ remove_teacher($user->id); // From all courses
+ remove_admin($user->id);
+ notify(get_string("deletedactivity", "", fullname($user, true)) );
} else {
- notify(get_string("deletednot", "", fullname($remove, true)));
+ notify(get_string("deletednot", "", fullname($user, true)));
}
//copy pasted part ends
}
Please sign in to comment.
Something went wrong with that request. Please try again.