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];
示例#2
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;
}
示例#3
0
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>";
    }
}