/** * Adds a user to the Chamilo database or updates its data * @param string username (and uid inside LDAP) * @author Mustapha Alouani */ function ldap_add_user($login) { if ($ldap_user = extldap_authenticate($login, 'nopass', true)) { return extldap_add_user_by_array($ldap_user); } }
/** * Imports all LDAP users into Chamilo * @return bool false on error, true otherwise */ function extldap_import_all_users() { global $extldap_config; //echo "Connecting...\n"; $ds = extldap_connect(); if (!$ds) { return false; } //echo "Binding...\n"; $ldapbind = false; //Connection as admin to search dn of user $ldapbind = @ldap_bind($ds, $extldap_config['admin_dn'], $extldap_config['admin_password']); if ($ldapbind === false) { error_log('EXTLDAP ERROR : cannot connect with admin login/password'); return false; } //browse ASCII values from a to z to avoid 1000 results limit of LDAP $count = 0; $alphanum = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); for ($a = 97; $a <= 122; $a++) { $alphanum[] = chr($a); } foreach ($alphanum as $char1) { foreach ($alphanum as $char2) { //$user_search = "uid=*"; $user_search = "sAMAccountName={$char1}{$char2}*"; //Search distinguish name of user $sr = ldap_search($ds, $extldap_config['base_dn'], $user_search); if (!$sr) { error_log('EXTLDAP ERROR : ldap_search(' . $ds . ', ' . $extldap_config['base_dn'] . ", {$user_search}) failed"); return false; } //echo "Getting entries\n"; $users = ldap_get_entries($ds, $sr); //echo "Entries: ".$users['count']."\n"; for ($key = 0; $key < $users['count']; $key++) { $user_id = extldap_add_user_by_array($users[$key], true); $count++; if ($user_id) { // echo "User #$user_id created or updated\n"; } else { // echo "User was not created\n"; } } } } //echo "Found $count users in total\n"; @ldap_close($ds); }