echo '</select>'; echo '<input type="submit" value="' . get_lang('Submit') . '">'; echo '</form>'; echo '</div>'; } elseif (!empty($annee) && !empty($id_session) && empty($_POST['confirmed'])) { Display::display_header($tool_name); echo '<div style="align: center;">'; echo '<br />'; echo '<br />'; echo '<h3>' . Display::return_icon('group.gif', get_lang('SelectStudents')) . ' ' . get_lang('SelectStudents') . '</h3>'; //echo "Connection ..."; $ds = ldap_connect($ldap_host, $ldap_port) or die(get_lang('LDAPConnectionError')); ldap_set_version($ds); if ($ds) { $r = false; $res = ldap_handle_bind($ds, $r); //$sr = @ ldap_search($ds, "ou=people,$LDAPbasedn", "(|(edupersonprimaryorgunitdn=ou=$etape,ou=$annee,ou=diploma,o=Paris1,$LDAPbasedn)(edupersonprimaryorgunitdn=ou=02PEL,ou=$annee,ou=diploma,o=Paris1,$LDAPbasedn))"); //echo "(ou=*$annee,ou=$composante)"; $sr = @ldap_search($ds, $ldap_basedn, "(ou=*{$annee})"); $info = ldap_get_entries($ds, $sr); for ($key = 0; $key < $info["count"]; $key++) { $nom_form[] = $info[$key]["sn"][0]; //api_utf8_decode($info[$key]["sn"][0], api_get_system_encoding()); $prenom_form[] = $info[$key]["givenname"][0]; //api_utf8_decode($info[$key]["givenname"][0], api_get_system_encoding()); $email_form[] = $info[$key]["mail"][0]; // Get uid from dn //$dn_array=ldap_explode_dn($info[$key]["dn"],1); //$username_form[] = $dn_array[0]; // uid is first key $username_form[] = $info[$key]['uid'][0]; $outab[] = $info[$key]["eduPersonPrimaryAffiliation"][0];
/** * Adds a user to the Dokeos database or updates its data * @param string username (and uid inside LDAP) * @author Mustapha Alouani */ function ldap_add_user($login) { global $ldap_basedn, $ldap_host, $ldap_port, $ldap_rdn, $ldap_pass; $ds = ldap_connect($ldap_host, $ldap_port); ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ds, LDAP_OPT_REFERRALS, 0); if ($ds) { $str_query = "(uid=" . $login . ")"; $r = false; $res = ldap_handle_bind($ds, $r); $sr = ldap_search($ds, $ldap_basedn, $str_query); //echo "Le nombre de resultats est : ".ldap_count_entries($ds,$sr)."<p>"; $info = ldap_get_entries($ds, $sr); for ($key = 0; $key < $info['count']; $key++) { $lastname = api_convert_encoding($info[$key]['sn'][0], api_get_system_encoding(), 'UTF-8'); $firstname = api_convert_encoding($info[$key]['givenname'][0], api_get_system_encoding(), 'UTF-8'); $email = $info[$key]['mail'][0]; // Get uid from dn $dn_array = ldap_explode_dn($info[$key]['dn'], 1); $username = $dn_array[0]; // uid is first key $outab[] = $info[$key]['edupersonprimaryaffiliation'][0]; // Ici "student" //$val = ldap_get_values_len($ds, $entry, "userPassword"); //$val = ldap_get_values_len($ds, $info[$key], "userPassword"); //$password = $val[0]; // TODO the password, if encrypted at the source, will be encrypted twice, which makes it useless. Try to fix that. $password = $info[$key]['userPassword'][0]; $structure = $info[$key]['edupersonprimaryorgunitdn'][0]; $array_structure = explode(",", $structure); $array_val = explode("=", $array_structure[0]); $etape = $array_val[1]; $array_val = explode("=", $array_structure[1]); $annee = $array_val[1]; // Pour faciliter la gestion on ajoute le code "etape-annee" $official_code = $etape . "-" . $annee; $auth_source = 'ldap'; // Pas de date d'expiration d'etudiant (a recuperer par rapport au shadow expire LDAP) $expiration_date = '0000-00-00 00:00:00'; $active = 1; if (empty($status)) { $status = 5; } if (empty($phone)) { $phone = ''; } if (empty($picture_uri)) { $picture_uri = ''; } // Ajout de l'utilisateur if (UserManager::is_username_available($username)) { $user_id = UserManager::create_user($firstname, $lastname, $status, $email, $username, $password, $official_code, api_get_setting('platformLanguage'), $phone, $picture_uri, $auth_source, $expiration_date, $active); } else { $user = UserManager::get_user_info($username); $user_id = $user['user_id']; UserManager::update_user($user_id, $firstname, $lastname, $username, null, null, $email, $status, $official_code, $phone, $picture_uri, $expiration_date, $active); } } } else { Display::display_error_message(get_lang('LDAPConnectionError')); } return $user_id; }
function syncro_users() { global $ldap_basedn, $ldap_host, $ldap_port, $ldap_rdn, $ldap_pass, $ldap_search_dn; echo "Connecting ..."; $ldap_connect = ldap_connect($ldap_host, $ldap_port); ldap_set_version($ldap_connect); if ($ldap_connect) { //echo " Connect to LDAP server successful "; //echo "Binding ..."; $ldap_bind = false; $ldap_bind_res = ldap_handle_bind($ldap_connect, $ldap_bind); if ($ldap_bind_res) { //echo " LDAP bind successful... "; //echo " Searching for uid... "; // Search surname entry //OLD: $sr=ldap_search($ldapconnect,"dc=rug, dc=ac, dc=be", "uid=$login"); //echo "<p> ldapDc = '$LDAPbasedn' </p>"; $all_user_query = "uid=*"; if (!empty($ldap_search_dn)) { $sr = ldap_search($ldap_connect, $ldap_search_dn, $all_user_query); } else { $sr = ldap_search($ldap_connect, $ldap_basedn, $all_user_query); } //echo " Number of entries returned is ".ldap_count_entries($ldapconnect,$sr); //echo " Getting entries ..."; $info = ldap_get_entries($ldap_connect, $sr); for ($key = 0; $key < $info['count']; $key++) { $user_id = ldap_add_user_by_array($info[$key], false); if ($user_id) { echo "User #{$user_id} created "; } else { echo "User was not created "; } } //echo "Data for ".$info["count"]." items returned:<p>"; } else { //echo "LDAP bind failed..."; } //echo "Closing LDAP connection<hr>"; ldap_close($ldap_connect); } else { //echo "<h3>Unable to connect to LDAP server</h3>"; } }