/// 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', '');
//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'} ) {
$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]);
$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";
//update local users
foreach ($updateusers as $user) {
+
if (update_record('user', $user)) {
echo 'Updated user record '.$user->username."\n";
} else {
}
//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
}