From 039de96700a663213aae0fa3d634e6be8c7fa3d7 Mon Sep 17 00:00:00 2001 From: Yannick Warnier Date: Mon, 21 Apr 2008 04:02:34 +0200 Subject: [PATCH] [svn r14967] Added contributed scripts for LDAP import of users into sessions from Mustapha Alouani, Sorbonne. Currently undergoing improvements and cleanup. Will probably use only a subset in 1.8.5 beta. --- main/admin/ldap_form_add_users_group.php | 65 ++ main/admin/ldap_import_students.php | 258 ++++++ .../admin/ldap_import_students_to_session.php | 752 ++++++++++++++++++ main/admin/ldap_synchro.php | 177 +++++ main/admin/ldap_users_list.php | 450 +++++++++++ main/admin/ldap_users_synchro.php | 90 +++ 6 files changed, 1792 insertions(+) create mode 100644 main/admin/ldap_form_add_users_group.php create mode 100644 main/admin/ldap_import_students.php create mode 100644 main/admin/ldap_import_students_to_session.php create mode 100644 main/admin/ldap_synchro.php create mode 100644 main/admin/ldap_users_list.php create mode 100644 main/admin/ldap_users_synchro.php diff --git a/main/admin/ldap_form_add_users_group.php b/main/admin/ldap_form_add_users_group.php new file mode 100644 index 0000000000..1bcd92fa1d --- /dev/null +++ b/main/admin/ldap_form_add_users_group.php @@ -0,0 +1,65 @@ +'; + if($statut==1) + { + echo get_lang('Notification par courriel de l\'inscription').': '.get_lang('ne pas décocher').''; + } + else + { + echo ''; + } + +echo ''; +echo '' . + '' . + '' . + '' . + '' . + '' . + ''."\n"; +while (list ($key, $val) = each($nom_form)) { + $nbre=$nbre+1; + if($nbre & 1) $ndiv=2; else $ndiv=3; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; +} +echo '
'.get_lang('Email').''.get_lang('Name').''.get_lang('Firstname').''.get_lang('Login').'
'.$email_form[$key].''.$nom_form[$key].''.$prenom_form[$key].''.$username_form[$key].''; + echo ''; + echo ''; + echo ''; + echo ''; + echo '
'; +echo '
'; +echo '
'; +echo ''; +echo ''; +?> \ No newline at end of file diff --git a/main/admin/ldap_import_students.php b/main/admin/ldap_import_students.php new file mode 100644 index 0000000000..799894a675 --- /dev/null +++ b/main/admin/ldap_import_students.php @@ -0,0 +1,258 @@ + 'index.php','name' => get_lang('PlatformAdmin')); + +$htmlHeadXtra[] = ''; + +Display::display_header($tool_name); + +$annee = $_GET['annee']; +$composante = $_GET['composante']; +$etape = $_GET['etape']; + +// form1 annee = 0; composante= 0 etape = 0 + if ($annee == "" && $composante == "" && $etape == "") { + + echo '
'; + echo '

'.get_lang('SAISIE DES ETUDIANTS POUR LESQUELS VOUS SOUHAITEZ ADRESSER VOTRE COURS').''.get_lang('SAISIE DES ETUDIANTS POUR LESQUELS VOUS SOUHAITEZ ADRESSER VOTRE COURS').'

'; + echo ''.get_lang('POUR CELA, IL FAUT SAISIR LA DATE, LA COMPOSANTE ET L\'ETAPE DE LA COMPOSANTE').'
'; + echo get_lang('Suivre chacune de ces etapes pas a pas').'
'; + + echo '

'; + echo ''.get_lang('ANNEE D\'INSCRIPTION - Ex: %s pour l\'annee %s/%s').' : '; + echo '
'; + echo ''; + echo '
'; + echo '
'; + +} +elseif ($annee <> "" && $composante == "" && $etape == "") // form 2 annee != 0; composante= 0 etape = 0 +{ + + $ds = ldap_connect($ldap_host, $ldap_port) or die(get_lang('Impossible de se connecter au serveur LDAP')); + ldap_set_version($ds); + + if ($ds) { + $r = false; + $res = ldap_handle_bind($ds, $r); + + //$sr = @ ldap_search($ds, "o=groups,$ldap_basedn", "(&(description=etape*)(cn=*$annee))", array ('cn')); + //$sr = @ ldap_search($ds, "ou=$annee, ou=diploma, o=paris1, $ldap_basedn", "ou=02*", array ('description')); + //$sr = @ ldap_search($ds, "ou=structures, o=paris1, $ldap_basedn", "businessCategory=pedagogy", array ('ou','description')); + $sr = @ ldap_search($ds, "$ldap_basedn", "", array ('ou','description')); + // "ou=2006,ou=diploma,o=Paris1,dc=univ-paris1,dc=fr + + $info = ldap_get_entries($ds, $sr); + $composante = array(); + for($i = 0; $i < $info['count']; $i ++) + { + //on suppose que le serveur LDAP est en UTF-8 + $composante[$info[$i]['ou'][0]] = iconv('utf-8', api_get_setting('platform_charset'), $info[$i]['description'][0]); + } + $oucompotab3=$composante; + + echo '
'; + echo '
'; + echo '

'.get_lang('SELECTIONNER VOTRE COMPOSANTE').''.get_lang('SELECTIONNER VOTRE COMPOSANTE').'

'; + echo '
'; + echo ''.get_lang('ANNEE D\'INSCRIPTION').' : '; + echo ''; + echo ''.get_lang('COMPOSANTE').' : '; + echo ''; + echo '
'; + echo '
'; + echo ''; + echo '
'; + ldap_close($ds); + + } + echo '
'; + echo '
'; + echo '
'; + echo ''.get_lang('RETOUR : nouvelle recherche').''; + echo '
'; + echo '
'; +} +elseif ($annee <> "" && $composante <> "" && $etape == "") // form3 :annee!=0composante=0etape=0 +{ + + echo '
'; + echo '

'.get_lang('SearchResults').''.get_lang('LE RESULTAT DE VOTRE RECHERCHE').'

'; + $ds = ldap_connect($ldap_host, $ldap_port); + ldap_set_version($ds); + + if ($ds) { + + $r = false; + $res = ldap_handle_bind($ds, $r); + + // $sr = @ ldap_search($ds, "ou=groups, $LDAPbasedn", "(&(cn=*$annee*)(cn=*$composante*))"); + + $sr = @ ldap_search($ds, "ou=$annee, ou=diploma, o=paris1, $ldap_basedn", "seeAlso=ou=$composante,ou=structures,o=Paris1,$ldap_basedn", array ('ou','description')); + + //echo "Le nombre de resultats est : ".ldap_count_entries($ds,$sr)."

"; + $info = ldap_get_entries($ds, $sr); + + for ($i = 0; $i <= $info['count']; $i ++) { + + $description = $info[$i]['description']; + $ouetapetab[$i] = $description[0]; + $description2 = $info[$i]['ou']; + $ouetapetab2[$i] = $description2[0]; + + } + + asort($ouetapetab); + reset($ouetapetab); + + echo '

'; + + echo ''.get_lang('ANNEE D\'INSCRIPTION').':'; + echo '

'; + echo ''.get_lang('COMPOSANTE').' :'; + echo '
'; + echo '

'.get_lang('SELECTIONNER VOTRE ETAPE (ANNEE PEDAGOGIQUE)').'

'; + echo '
'; + + echo ''.get_lang('ETAPE').': '; + echo ''; + echo ''; + + echo '
'; + echo ''; + echo '
'; + + ldap_close($ds); + + } else { + // echo "

Unable to connect to LDAP server

"; + } + echo '
'; + echo '
'; + echo ''.get_lang('RETOUR : nouvelle recherche').''; + echo '
'; +} + +// form4 annee != 0; composante != 0 etape != 0 +elseif ($annee <> "" && $composante <> "" && $etape <> "" && $listeok != yes) { + echo '
'; + echo '
'; + echo '
'; + echo '

'.get_lang('SELECTION DES ETUDIANTS').''.get_lang('SELECTION DES ETUDIANTS').'

'; + //echo "Connection ..."; + $ds = ldap_connect($ldap_host, $ldap_port) or die(get_lang('Impossible de se connecter au serveur LDAP')); + 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))"); + $sr = @ ldap_search($ds, "ou=people,$ldap_basedn", "edupersonprimaryorgunitdn=ou=$etape,ou=$annee,ou=diploma,o=Paris1,$ldap_basedn"); + + $info = ldap_get_entries($ds, $sr); + + for ($key = 0; $key < $info["count"]; $key ++) { + $nom_form[] = $info[$key]["sn"][0];//iconv("utf-8",api_get_setting('platform_charset'), $info[$key]["sn"][0]); + $prenom_form[] = $info[$key]["givenname"][0];//iconv("utf-8",api_get_setting('platform_charset'), $info[$key]["givenname"][0]); + $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 + $outab[] = $info[$key]["eduPersonPrimaryAffiliation"][0]; // Ici "student" + $val = ldap_get_values_len($ds, $entry, "userPassword"); + $password_form[] = $val[0]; + } + + /*-----------------------------------------------*/ + + asort($nom_form); + reset($nom_form); + + $statut=5; + ldap_close($ds); + include ('ldap_form_add_users_group.php'); + ldap_unbind($ds); + } else { + echo '

'.get_lang('Unable to connect to').' '.$host.'

'; + } + echo '

'; + echo ''.get_lang('RETOUR : nouvelle recherche').''; + echo '

'; + echo '
'; + +} +Display::display_footer(); +?> \ No newline at end of file diff --git a/main/admin/ldap_import_students_to_session.php b/main/admin/ldap_import_students_to_session.php new file mode 100644 index 0000000000..faa17d1005 --- /dev/null +++ b/main/admin/ldap_import_students_to_session.php @@ -0,0 +1,752 @@ + 'index.php',"name" => get_lang('PlatformAdmin')); +$interbreadcrumb[]=array('url' => api_get_self(),"name" => "Liste des sessions"); + +// Database Table Definitions +$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); +$tbl_session_rel_class = Database::get_main_table(TABLE_MAIN_SESSION_CLASS); +$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); +$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); +$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); +$tbl_user = Database::get_main_table(TABLE_MAIN_USER); +$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER); +$tbl_class = Database::get_main_table(TABLE_MAIN_CLASS); +$tbl_class_user = Database::get_main_table(TABLE_MAIN_CLASS_USER); + +$tbl_session_rel_etape = "session_rel_etape"; + +$id_session=intval($_GET['id_session']); + +$formSent=0; +$errorMsg=$firstLetterUser=$firstLetterSession=''; +$UserList=$SessionList=array(); +$users=$sessions=array(); +$noPHP_SELF=true; + +$page=intval($_GET['page']); +$action=$_REQUEST['action']; +$sort=in_array($_GET['sort'],array('name','nbr_courses','date_start','date_end'))?$_GET['sort']:'name'; +$idChecked = $_REQUEST['idChecked']; + +$annee = intval($_GET['annee']); +$composante = $_GET['composante']; +$etape = $_GET['etape']; + +if (isset($id_session) && $id_session!="") +{ + $tool_name = get_lang('Import LDAP : Utilisateurs/Etapes');; + Display::display_header($tool_name); + //api_display_tool_title($tool_name); + + if (isset($action) && ($action=="add")) { + // ICI Selection ETAPE a partir de LDAP + + // form1 annee = 0; composante= 0 etape = 0 + if ($annee == "" && $composante == "" && $etape == "") { + echo '
'; + echo '

'.get_lang('SAISIE DE L\'ETAPE A AJOUTER A VOTRE SESSION').''.get_lang('SAISIE DE L\'ETAPE A AJOUTER A VOTRE SESSION').'

'; + echo ''.get_lang('POUR CELA, IL FAUT SAISIR L\'ANNEE, L\'UFR ET L\'ETAPE').'
'; + echo get_lang('Suivre chacune de ces étapes pas à pas').'
'; + echo '

'; + echo ''.sprintf(get_lang('ANNEE D\'INSCRIPTION - Ex: %s pour l\'année %s/%s'),date('Y'),date('Y'),date('Y')+1).' :'; + echo '
'; + echo ''; + echo ''; + echo ''; + echo '
'; + echo '
'; + } + // form 2 annee != 0; composante= 0 etape = 0 + elseif ($annee <> "" && $composante == "" && $etape == "") { + + $ds = ldap_connect($ldap_host, $ldap_port) or die(get_lang('Impossible de se connecter au serveur LDAP')); + + if ($ds) { + $r = false; + $res = ldap_handle_bind($ds, $r); + + //$sr = @ ldap_search($ds, "o=groups,$ldap_basedn", "(&(description=etape*)(cn=*$annee))", array ('cn')); + //$sr = @ ldap_search($ds, "ou=$annee, ou=diploma, o=paris1, $ldap_basedn", "ou=02*", array ('description')); + //$sr = @ ldap_search($ds, "ou=structures, o=paris1, $ldap_basedn", "businessCategory=pedagogy", array ('ou','description')); + $sr = @ ldap_search($ds, "$ldap_basedn", "", array ('ou','description')); + // "ou=2006,ou=diploma,o=Paris1,dc=univ-paris1,dc=fr + + $info = ldap_get_entries($ds, $sr); + for ($i = 0; $i < $info['count']; $i ++) { + $composante[$info[$i]['ou'][0]] = iconv('utf-8',api_get_setting('platform_charset'), $info[$i]['description'][0]); + } + $oucompotab3=$composante; + + echo '
'; + echo '
'; + echo '

'.get_lang('SELECTIONNER VOTRE UFR').''.get_lang('SELECTIONNER VOTRE UFR').'

'; + echo '
'; + echo ''.get_lang('ANNEE D\'INSCRIPTION').' : '; + echo ''; + echo ''.get_lang('UFR').' : '; + echo ''; + + echo '
'; + echo '
'; + echo ''; + echo ''; + echo ''; + echo '
'; + ldap_close($ds); + + } + echo '
'; + echo '
'; + echo ''.get_lang('RETOUR : nouvelle recherche').''; + echo '
'; + echo '
'; + } + + // form3 :annee!=0composante=0etape=0 + elseif ($annee <> "" && $composante <> "" && $etape == "") { + + echo '
'; + echo '

'.get_lang('SearchResults').''.get_lang('SearchResults').'

'; + $ds = ldap_connect($ldap_host, $ldap_port); + + if ($ds) { + + $r = false; + $res = ldap_handle_bind($ds, $r); + + //$sr = @ ldap_search($ds, "ou=$annee, ou=diploma, o=paris1, $ldap_basedn", "seeAlso=ou=$composante,ou=structures,o=Paris1,$ldap_basedn", array ('ou','description')); + $sr = @ ldap_search($ds, "ou=$annee, ou=diploma, $ldap_basedn", "seeAlso=ou=$composante,ou=structures,$ldap_basedn", array ('ou','description')); + //echo "Le nombre de resultats est : ".ldap_count_entries($ds,$sr)."

"; + echo '
'; + $info = ldap_get_entries($ds, $sr); + + for ($i = 0; $i <= $info['count']; $i ++) { + + $description = $info[$i]['description']; + $ouetapetab[$i] = $description[0]; + $description2 = $info[$i]['ou']; + $ouetapetab2[$i] = $description2[0]; + } + + asort($ouetapetab); + reset($ouetapetab); + echo '

'; + + echo ''.get_lang('ANNEE D\'INSCRIPTION').' : '; + echo '

'; + echo ''.get_lang('UFR').' :'; + echo '
'; + echo '

'.get_lang('SELECTIONNER VOTRE ETAPE (ANNEE PEDAGOGIQUE)').'

'; + echo '
'; + + echo ''.get_lang('ETAPE').' : '; + echo ''; + echo ''; + + echo '
'; + echo ''; + echo ''; + + echo '
'; + + ldap_close($ds); + + } else { + // echo "

Unable to connect to LDAP server

"; + } + echo '
'; + echo '
'; + echo '
'; + echo ''.get_lang('RETOUR : nouvelle recherche').''; + echo '
'; + echo ''; + echo '
'; + } + } else { + $id_session = intval($id_session); + $annee = intval($annee); + $composante = Database::escape_string($composante); + // Lister les etapes concernant la session : table + // Ajout de l'etape + if ($annee <> "" && $composante <> "" && $etape <> "") { + $ds = ldap_connect($ldap_host, $ldap_port); + if ($ds) { + $r = false; + $res = ldap_handle_bind($ds, $r); + //$sr = @ ldap_search($ds, "ou=$annee, ou=diploma, o=paris1, $ldap_basedn", "ou=$etape", array ('ou','description')); + $sr = @ ldap_search($ds, "$ldap_basedn", "ou=$etape", array ('ou','description')); + //echo "Le nombre de resultats est : ".ldap_count_entries($ds,$sr)."

"; + $info = ldap_get_entries($ds, $sr); + if ($info['count']>0) { + // Ajout de l'Etape a la session + $description=Database::escape_string(iconv('utf-8',api_get_setting('platform_charset'), $info[0]['description'][0])); + $sql = "INSERT IGNORE INTO $tbl_session_rel_etape " . + "(id_session,code_etape,etape_description,code_ufr,annee) " . + "VALUES " . + "('$id_session','".Database::escape_string($info[0]["ou"][0])."','".$description."','$composante','$annee')"; + if (api_sql_query($sql,__FILE__,__LINE__)) + Display :: display_normal_message(get_lang('ETAPE').": $annee, $composante, $description ".get_lang('A ETE AJOUTE AVEC SUCCES')); + else + Display :: display_error_message(get_lang('ERREUR : ETAPE EXISTANTE OU AUTRE ?')); + } else + Display :: display_error_message(get_lang('ETAPE NON PRESENTE DANS LDAP')); + } else + Display :: display_error_message(get_lang('ERREUR CONNEXION LDAP')); + } + + $sql = 'SELECT name, nbr_courses, nbr_users, nbr_classes, ' . + 'DATE_FORMAT(date_start,"%d-%m-%Y") as date_start, ' . + 'DATE_FORMAT(date_end,"%d-%m-%Y") as date_end, lastname, firstname, username + FROM '.$tbl_session.' + LEFT JOIN '.$tbl_user.' + ON id_coach = user_id + WHERE '.$tbl_session.'.id='.$id_session; + + $rs = api_sql_query($sql, __FILE__, __LINE__); + $session = api_store_result($rs); + $session = $session[0]; + + + if (isset($action) && ($action=="delete")) { + $idChecked = $_GET['idChecked']; + if(is_array($idChecked)) + $idChecked="'".implode("','",$idChecked)."'"; + $sql = "DELETE FROM $tbl_session_rel_etape " . + "WHERE id_session='$id_session' " . + "AND code_etape IN($idChecked)"; + api_sql_query($sql,__FILE__,__LINE__); + if (mysql_affected_rows()>0) + Display :: display_normal_message(get_lang('ETAPE SUPPRIMEE AVEC SUCCES')); + else + Display :: display_error_message(get_lang('Erreur de suppression')); + + } else if (isset($action) && ($action=='deleteusers')) { + $idChecked = $_GET['idChecked']; + if(is_array($idChecked)) + { + $idChecked=Database::escape_string("'".implode("','",$idChecked)."'"); + } + + + $sql = 'SELECT '.$tbl_user.'.user_id, lastname, firstname, username, official_code + FROM '.$tbl_user.' + INNER JOIN '.$tbl_session_rel_user.' + ON '.$tbl_user.'.user_id = '.$tbl_session_rel_user.'.id_user + AND '.$tbl_session_rel_user.'.id_session = '.$id_session.' + WHERE official_code IN('.$idChecked.') + ORDER BY official_code, lastname, firstname'; + + $result=api_sql_query($sql,__FILE__,__LINE__); + $users=api_store_result($result); + $UserList=array(); + foreach($users as $user){ + $UserList[]=$user['user_id']; + } + + // On supprime toutes les relations de l'utilisateur + $result=api_sql_query("SELECT course_code FROM $tbl_session_rel_course " . + "WHERE id_session='$id_session'",__FILE__,__LINE__); + $CourseList=array(); + while($row=Database::fetch_array($result)) + { + $CourseList[]=$row['course_code']; + } + foreach($CourseList as $enreg_course) + { + foreach($UserList as $enreg_user) + { + api_sql_query("DELETE IGNORE FROM $tbl_session_rel_course_rel_user " . + "WHERE id_user='$enreg_user'",__FILE__,__LINE__); + } + $sql = "SELECT COUNT(id_user) as nbUsers FROM $tbl_session_rel_course_rel_user " . + "WHERE id_session='$id_session' AND course_code='$enreg_course'"; + $rs = api_sql_query($sql, __FILE__, __LINE__); + list($nbr_users) = Database::fetch_array($rs); + api_sql_query("UPDATE $tbl_session_rel_course " . + "SET nbr_users=$nbr_users " . + "WHERE id_session='$id_session' " . + "AND course_code='$enreg_course'",__FILE__,__LINE__); + } + foreach($UserList as $enreg_user){ + api_sql_query("DELETE IGNORE FROM $tbl_session_rel_user " . + "WHERE id_user='$enreg_user'",__FILE__,__LINE__); + } + // updating number of users in the session + $sql = "SELECT COUNT(id_user) as nbUsers FROM $tbl_session_rel_user " . + "WHERE id_session='$id_session'"; + $rs = api_sql_query($sql, __FILE__, __LINE__); + list($nbr_users) = Database::fetch_array($rs); + api_sql_query("UPDATE $tbl_session SET nbr_users=$nbr_users " . + "WHERE id='$id_session'",__FILE__,__LINE__); + + foreach($UserList as $enreg_user){ + if (UserManager::can_delete_user($enreg_user)) + UserManager::delete_user($enreg_user); + } + Display :: display_normal_message(get_lang('UTILISATEURS ETAPE SUPPRIME AVEC SUCCES')); + + } + + // Importing periods/steps users into the session + if (isset($action) && ($action=="import")) { + // id_session + // Parse des code etape de la session + $sql = "SELECT id_session, code_etape, etape_description, code_ufr, annee + FROM $tbl_session_rel_etape + WHERE id_session='$id_session' + ORDER BY code_ufr, code_etape"; + $result = api_sql_query($sql); + $ds = ldap_connect($ldap_host, $ldap_port) or die(get_lang('Impossible de se connecter au serveur LDAP')); + // Import des utilisateurs des etapes dans la session + if ($ds) + $r = false; + $res = ldap_handle_bind($ds, $r); + $UserList=array(); + while($row = Database::fetch_array($result)){ + $annee = $row['annee']; + $code_ufr = $row['code_ufr']; + $etape = $row['code_etape']; + // LDAP Querry + // edupersonorgunitdn=ou=12CI1,ou=2006,ou=diploma,o=Paris1,dc=univ-paris1,dc=fr + //$sr = @ ldap_search($ds, "ou=people,$ldap_basedn", "edupersonorgunitdn=ou=$etape,ou=$annee,ou=diploma,o=Paris1,$ldap_basedn"); + $sr = @ ldap_search($ds, "ou=people,$ldap_basedn", "edupersonorgunitdn=ou=$etape,ou=$annee,ou=diploma,$ldap_basedn"); + $info = ldap_get_entries($ds, $sr); + + for ($key = 0; $key < $info["count"]; $key ++) { + $lastname = iconv('utf-8', api_get_setting('platform_charset'), $info[$key]["sn"][0]); + $firstname = iconv('utf-8', api_get_setting('platform_charset'), $info[$key]["givenname"][0]); + $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"); + $password = $val[0]; + // Pour faciliter la gestion on ajoute le code "etape-annee" + $official_code=$etape."-".$annee; + $auth_source="cas"; + // 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; + // 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); + } + $UserList[]=$user_id; + } + } + + // Une fois les utilisateurs importer dans la base des utilisateurs, on peux les affecter a la session + $result=api_sql_query("SELECT course_code FROM $tbl_session_rel_course WHERE id_session='$id_session'",__FILE__,__LINE__); + $CourseList=array(); + while($row=Database::fetch_array($result)) + { + $CourseList[]=$row['course_code']; + } + foreach($CourseList as $enreg_course) + { + // On ajoute la relation entre l'utilisateur et le cours + foreach($UserList as $enreg_user) + { + api_sql_query("INSERT IGNORE INTO $tbl_session_rel_course_rel_user(id_session,course_code,id_user) VALUES('$id_session','$enreg_course','$enreg_user')",__FILE__,__LINE__); + } + $sql = "SELECT COUNT(id_user) as nbUsers FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code='$enreg_course'"; + $rs = api_sql_query($sql, __FILE__, __LINE__); + list($nbr_users) = Database::fetch_array($rs); + api_sql_query("UPDATE $tbl_session_rel_course SET nbr_users=$nbr_users WHERE id_session='$id_session' AND course_code='$enreg_course'",__FILE__,__LINE__); + } + // On ajoute la relation entre l'utilisateur et la session + foreach($UserList as $enreg_user){ + api_sql_query("INSERT IGNORE INTO $tbl_session_rel_user(id_session, id_user) VALUES('$id_session','$enreg_user')",__FILE__,__LINE__); + } + $sql = "SELECT COUNT(id_user) as nbUsers FROM $tbl_session_rel_user WHERE id_session='$id_session'"; + $rs = api_sql_query($sql, __FILE__, __LINE__); + list($nbr_users) = Database::fetch_array($rs); + api_sql_query("UPDATE $tbl_session SET nbr_users=$nbr_users WHERE id='$id_session'",__FILE__,__LINE__); + } + ?> + + + + + + + + + + + + + + + + + + +
+ + <?php echo get_lang('Edit'); ?> + +
:
:
: + +
+ + + + + + + + + + + + + + + + + '; + } else { + foreach($etapes as $etape){ + echo ' + + + + + + '; + } + } + ?> +
+ + <?php echo get_lang('Ajouter etape');?> + +
'.get_lang('Pas d\'etape pour cette session').'
'.$etape['code_ufr'].' ('.$etape['annee'].')'.$etape['code_etape'].''.$etape['etape_description'].' + ' . + ''.get_lang('Delete').'' . + ' + ' . + '' . + ' +
+ +
+ +

+ + + +
+ +
+
+ + + + + + + + + + + '; + } + else { + + $sql = 'SELECT '.$tbl_user.'.user_id, lastname, firstname, username, official_code + FROM '.$tbl_user.' + INNER JOIN '.$tbl_session_rel_user.' + ON '.$tbl_user.'.user_id = '.$tbl_session_rel_user.'.id_user + AND '.$tbl_session_rel_user.'.id_session = '.$id_session.' + ORDER BY official_code, lastname, firstname'; + + $result=api_sql_query($sql,__FILE__,__LINE__); + $users=api_store_result($result); + foreach($users as $user){ + echo ' + + + + '; + } + } + echo '
+ <?php echo get_lang('Edit');?> +   + <?php echo get_lang('Ajouter ustilisateurs LDAP');?> +
'.get_lang('Pas d\'utilisateurs pour cette session').'
+ '.$user['official_code'].' + + '.$user['lastname'].' '.$user['firstname'].' ('.$user['username'].') + + ' . + ''.get_lang('Reporting').'' . + ' +
'; + } +} +else +{ + $limit=20; + $from=$page * $limit; + + $result=api_sql_query("SELECT id,name,nbr_courses,date_start,date_end FROM $tbl_session ".(empty($_POST['keyword']) ? "" : "WHERE name LIKE '%".Database::escape_string($_POST['keyword'])."%'")." ORDER BY $sort LIMIT $from,".($limit+1),__FILE__,__LINE__); + + $Sessions=api_store_result($result); + + $nbr_results=sizeof($Sessions); + + //$tool_name = "Import LDAP session"; + //$interbreadcrumb[]=array("url" => "index.php","name" => get_lang('AdministrationTools')); + + Display::display_header($tool_name); + + ?> + +
+ + +
> + + +
+ +
+ + + + + + + + | + + $limit) + { + ?> + + + + + +
+ +
+ + + + + + + + + + + $enreg) + { + if($key == $limit) + { + break; + } + $sql = 'SELECT COUNT(course_code) FROM '.$tbl_session_rel_course.' WHERE id_session='.intval($enreg['id']); + + $rs = api_sql_query($sql, __FILE__, __LINE__); + list($nb_courses) = Database::fetch_array($rs); + + ?> + + + + + + + + + + + +
 
cours + +
+ +
+ +
+ + + + + + + + | + + $limit) + { + ?> + + + + + +
+ +
+ + + + +
+ \ No newline at end of file diff --git a/main/admin/ldap_synchro.php b/main/admin/ldap_synchro.php new file mode 100644 index 0000000000..8db2049b76 --- /dev/null +++ b/main/admin/ldap_synchro.php @@ -0,0 +1,177 @@ + 'index.php',"name" => get_lang('PlatformAdmin')); +$interbreadcrumb[]=array('url' => api_get_self(),"name" => "Liste des sessions"); + +// Database Table Definitions +$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); +$tbl_session_rel_class = Database::get_main_table(TABLE_MAIN_SESSION_CLASS); +$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); +$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); +$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); +$tbl_user = Database::get_main_table(TABLE_MAIN_USER); +$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER); +$tbl_class = Database::get_main_table(TABLE_MAIN_CLASS); +$tbl_class_user = Database::get_main_table(TABLE_MAIN_CLASS_USER); + +$tbl_session_rel_etape = "session_rel_etape"; + +$message=""; + +$result=api_sql_query("SELECT id, name FROM $tbl_session",__FILE__,__LINE__); +$Sessions=api_store_result($result); + +$result=api_sql_query($sql,__FILE__,__LINE__); +$users=api_store_result($result); + +foreach($Sessions as $session){ + $id_session = $session['id']; + $name_session = $session['name']; + $UserList=array(); + $UserUpdate=array(); + $UserAdd=array(); + + // Parse des code etape de la session + $sql = "SELECT id_session, code_etape, etape_description, code_ufr, annee + FROM $tbl_session_rel_etape + WHERE id_session='$id_session' + ORDER BY code_ufr, code_etape"; + $result = api_sql_query($sql); + $ds = ldap_connect($ldap_host, $ldap_port) or die(get_lang('Impossible de se connecter au serveur LDAP')); + // Import des utilisateurs des etapes dans la session + if ($ds) + { + $r = false; + $res = ldap_handle_bind($ds, $r); + $UserList=array(); + while($row = Database::fetch_array($result)) + { + $annee = $row['annee']; + $code_ufr = $row['code_ufr']; + $etape = $row['code_etape']; + // LDAP Querry + // edupersonorgunitdn=ou=12CI1,ou=2006,ou=diploma,o=Paris1,dc=univ-paris1,dc=fr + $sr = @ ldap_search($ds, "ou=people,$LDAPbasedn", "edupersonorgunitdn=ou=$etape,ou=$annee,ou=diploma,o=Paris1,$LDAPbasedn"); + $info = ldap_get_entries($ds, $sr); + for ($key = 0; $key < $info["count"]; $key ++) + { + $lastname = iconv("utf-8", api_get_setting('platform_charset'), $info[$key]["sn"][0]); + $firstname = iconv("utf-8", api_get_setting('platform_charset'), $info[$key]["givenname"][0]); + $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"); + $password = $val[0]; + // Pour faciliter la gestion on ajoute le code "etape-annee" + $official_code=$etape."-".$annee; + $auth_source="cas"; + // 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; + // 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); + $UserAdd[]=$user_id; + } + 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); + $UserUpdate[]=$user_id; + } + $UserList[]=$user_id; + } + } + if (isset($included) && ($included)) + { + $message .= "> $name_session: ".count($UserAdd)." ".get_lang('Added').' '.get_lang('And').' '.count($UserUpdate).' '.get_lang('Modified').'
'; + } + else + { + print "> $name_session: ".count($UserAdd).get_lang('Added').' '.get_lang('And').' '.count($UserUpdate).' '.get_lang('Modified')."\n"; + } + + // Une fois les utilisateurs importer dans la base des utilisateurs, on peux les affecter a� la session + $result=api_sql_query("SELECT course_code FROM $tbl_session_rel_course " . + "WHERE id_session='$id_session'",__FILE__,__LINE__); + $CourseList=array(); + while($row=Database::fetch_array($result)) + { + $CourseList[]=$row['course_code']; + } + foreach($CourseList as $enreg_course) + { + // On ajoute la relation entre l'utilisateur et le cours + foreach($UserList as $enreg_user) + { + api_sql_query("INSERT IGNORE INTO $tbl_session_rel_course_rel_user(id_session,course_code,id_user) VALUES('$id_session','$enreg_course','$enreg_user')",__FILE__,__LINE__); + } + $sql = "SELECT COUNT(id_user) as nbUsers " . + "FROM $tbl_session_rel_course_rel_user " . + "WHERE id_session='$id_session' AND course_code='$enreg_course'"; + $rs = api_sql_query($sql, __FILE__, __LINE__); + list($nbr_users) = Database::fetch_array($rs); + $sql = "UPDATE $tbl_session_rel_course SET nbr_users=$nbr_users WHERE id_session='$id_session' AND course_code='$enreg_course'"; + api_sql_query($sql,__FILE__,__LINE__); + } + // On ajoute la relation entre l'utilisateur et la session + foreach($UserList as $enreg_user){ + $sql = "INSERT IGNORE INTO $tbl_session_rel_user(id_session, id_user) " . + "VALUES('$id_session','$enreg_user')"; + api_sql_query($sql,__FILE__,__LINE__); + } + $sql = "SELECT COUNT(id_user) as nbUsers " . + "FROM $tbl_session_rel_user " . + "WHERE id_session='$id_session'"; + $rs = api_sql_query($sql, __FILE__, __LINE__); + list($nbr_users) = Database::fetch_array($rs); + $sql = "UPDATE $tbl_session SET nbr_users=$nbr_users WHERE id='$id_session'"; + api_sql_query($sql,__FILE__,__LINE__); + } +} +?> \ No newline at end of file diff --git a/main/admin/ldap_users_list.php b/main/admin/ldap_users_list.php new file mode 100644 index 0000000000..0326509e9c --- /dev/null +++ b/main/admin/ldap_users_list.php @@ -0,0 +1,450 @@ +1){ + $str_querry.="(& "; + foreach ($ldap_querry as $query){ + $str_querry.=" $query"; + } + $str_querry.=" )"; + } else { + $str_querry=$ldap_querry[0]; + } + + $ds = ldap_connect($ldap_host, $ldap_port); + if ($ds && sizeof($ldap_querry)>0) { + $r = false; + $res = ldap_handle_bind($ds, $r); + $sr = @ ldap_search($ds, "ou=people,$ldap_basedn", $str_querry); + //echo "Le nombre de resultats est : ".ldap_count_entries($ds,$sr)."

"; + $info = ldap_get_entries($ds, $sr); + return $info; + + } else { + if (sizeof($ldap_querry)!=0) + Display :: display_error_message(get_lang('LDAPConnectionError')); + return array(); + } +} + + + +/** + * Get the total number of users on the platform + * @see SortableTable#get_total_number_of_items() + */ +function get_number_of_users() +{ + + $info = get_ldap_users(); + if (sizeof($info)>0) + return $info['count']; + else + return 0; + +} + +/** + * Get the users to display on the current page. + * @see SortableTable#get_table_data($from) + */ +function get_user_data($from, $number_of_items, $column, $direction) +{ + $users = array(); + if (isset($_GET['submit'])) { + $info = get_ldap_users(); + if ($info['count']>0) { + for ($key = 0; $key < $info["count"]; $key ++) { + $user=array(); + // Get uid from dn + $dn_array=ldap_explode_dn($info[$key]["dn"],1); + $user[] = $dn_array[0]; // uid is first key + $user[] = $dn_array[0]; // uid is first key + $user[] = iconv("utf-8", "iso-8859-1", $info[$key]["sn"][0]); + $user[] = iconv("utf-8", "iso-8859-1", $info[$key]["givenname"][0]); + $user[] = $info[$key]["mail"][0]; + $outab[] = $info[$key]["eduPersonPrimaryAffiliation"][0]; // Ici "student" + $users[] = $user; + } + + } else + Display :: display_error_message("Pas d'utilisateurs"); + } + return $users; +} + +/** + * Build the modify-column of the table + * @param int $user_id The user id + * @param string $url_params + * @return string Some HTML-code with modify-buttons + */ +function modify_filter($user_id,$url_params, $row) +{ + + $url_params_id="id[]=".$row[0]; + $result .= ''.get_lang('AddUsers').''; + + return $result; +} + + +function addLdapUser($login){ + global $ldap_basedn, $ldap_host, $ldap_port, $ldap_rdn, $ldap_pass; + + $ds = ldap_connect($ldap_host, $ldap_port); + if ($ds) { + $str_querry="(uid=".$login.")"; + $r = false; + $res = ldap_handle_bind($ds, $r); + $sr = @ ldap_search($ds, "ou=people,$ldap_basedn", $str_querry); + //echo "Le nombre de resultats est : ".ldap_count_entries($ds,$sr)."

"; + $info = ldap_get_entries($ds, $sr); + + for ($key = 0; $key < $info["count"]; $key ++) { + $lastname = iconv("utf-8", api_get_setting('platform_charset'), $info[$key]["sn"][0]); + $firstname = iconv("utf-8", api_get_setting('platform_charset'), $info[$key]["givenname"][0]); + $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"); + $password = $val[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="cas"; + // 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('ERREUR CONNEXION LDAP')); + } + return $user_id;; +} + +function addUserToSession($UserList, $id_session){ + + // Database Table Definitions + $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); + $tbl_session_rel_class = Database::get_main_table(TABLE_MAIN_SESSION_CLASS); + $tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); + $tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); + $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); + $tbl_user = Database::get_main_table(TABLE_MAIN_USER); + $tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER); + $tbl_class = Database::get_main_table(TABLE_MAIN_CLASS); + $tbl_class_user = Database::get_main_table(TABLE_MAIN_CLASS_USER); + + // Une fois les utilisateurs importer dans la base des utilisateurs, on peux les affecter a� la session + $result=api_sql_query("SELECT course_code FROM $tbl_session_rel_course " . + "WHERE id_session='$id_session'",__FILE__,__LINE__); + $CourseList=array(); + while($row=Database::fetch_array($result)) + { + $CourseList[]=$row['course_code']; + } + foreach($CourseList as $enreg_course) + { + foreach($UserList as $enreg_user) + { + api_sql_query("INSERT IGNORE INTO $tbl_session_rel_course_rel_user(id_session,course_code,id_user) VALUES('$id_session','$enreg_course','$enreg_user')",__FILE__,__LINE__); + } + $sql = "SELECT COUNT(id_user) as nbUsers FROM $tbl_session_rel_course_rel_user " . + "WHERE id_session='$id_session' AND course_code='$enreg_course'"; + $rs = api_sql_query($sql, __FILE__, __LINE__); + list($nbr_users) = Database::fetch_array($rs); + api_sql_query("UPDATE $tbl_session_rel_course SET nbr_users=$nbr_users " . + "WHERE id_session='$id_session' AND course_code='$enreg_course'",__FILE__,__LINE__); + } + foreach($UserList as $enreg_user){ + api_sql_query("INSERT IGNORE INTO $tbl_session_rel_user(id_session, id_user) " . + "VALUES('$id_session','$enreg_user')",__FILE__,__LINE__); + } + // On mets a jour le nombre d'utilisateurs dans la session + $sql = "SELECT COUNT(id_user) as nbUsers FROM $tbl_session_rel_user WHERE id_session='$id_session'"; + $rs = api_sql_query($sql, __FILE__, __LINE__); + list($nbr_users) = Database::fetch_array($rs); + api_sql_query("UPDATE $tbl_session SET nbr_users=$nbr_users WHERE id='$id_session'",__FILE__,__LINE__); + +} + +// Fonction pour dire si c'est un entier +function isInteger($n) { + if (preg_match("/[^0-^9]+/",$n) > 0) { + return false; + } + return true; +} + +/** +============================================================================== + INIT SECTION +============================================================================== +*/ +require_once (api_get_path(LIBRARY_PATH).'usermanager.lib.php'); +$action = $_GET["action"]; +$login_as_user_id = $_GET["user_id"]; + + +// Login as ... +if ($_GET['action'] == "login_as" && isset ($login_as_user_id)) +{ + login_user($login_as_user_id); +} + +if (($_GET['action']=="add_user") && (isInteger($_GET['id_session']))){ + header('Location: ldap_import_students_to_session.php?id_session='.$id_session); +} + +$interbreadcrumb[] = array ("url" => 'index.php', "name" => get_lang('PlatformAdmin')); +$tool_name = get_lang('SearchAUser'). " LDAP"; +Display :: display_header($tool_name); +//api_display_tool_title($tool_name); + +if (isset ($_GET['action'])) +{ + $check = Security::check_token('get'); + if($check) + { + switch ($_GET['action']) + { + case 'show_message' : + Display :: display_header($tool_name); + Display :: display_normal_message($_GET['message']); + break; + case 'delete_user' : + Display :: display_header($tool_name); + if ($user_id != $_user['user_id'] && UserManager :: delete_user($_GET['user_id'])) + { + Display :: display_normal_message(get_lang('UserDeleted')); + } + else + { + Display :: display_error_message(get_lang('CannotDeleteUser')); + } + break; + case 'lock' : + Display :: display_header($tool_name); + $message=lock_unlock_user('lock',$_GET['user_id']); + Display :: display_normal_message($message); + break; + case 'unlock'; + Display :: display_header($tool_name); + $message=lock_unlock_user('unlock',$_GET['user_id']); + Display :: display_normal_message($message); + break; + case 'add_user'; + $id=$_GET['id']; + $UserList=array(); + foreach ($id as $user_id) { + $UserList[]=addLdapUser($user_id); + } + if (isset($_GET['id_session']) && ($_GET['id_session']>=0)) { + addUserToSession($UserList, $_GET['id_session']); + header('Location: resume_session.php?id_session='.$id_session); + } else { + $message=get_lang('Utilisateur(s) LDAP ajoute(s)'); + Display :: display_normal_message($message); + } + break; + default : + Display :: display_header($tool_name); + } + Security::clear_token(); + } +} +if (isset ($_POST['action'])) +{ + $check = Security::check_token('get'); + if($check) + { + switch ($_POST['action']) + { + case 'delete' : + $number_of_selected_users = count($_POST['id']); + $number_of_deleted_users = 0; + foreach ($_POST['id'] as $index => $user_id) + { + if($user_id != $_user['user_id']) + { + if(UserManager :: delete_user($user_id)) + { + $number_of_deleted_users++; + } + } + } + if($number_of_selected_users == $number_of_deleted_users) + { + Display :: display_normal_message(get_lang('SelectedUsersDeleted')); + } + else + { + Display :: display_error_message(get_lang('SomeUsersNotDeleted')); + } + break; + case 'add_user' : + $number_of_selected_users = count($_POST['id']); + $number_of_added_users = 0; + $UserList=array(); + foreach ($_POST['id'] as $index => $user_id) + { + if($user_id != $_user['user_id']) + { + $UserList[] = addLdapUser($user_id); + } + } + if (isset($_GET['id_session']) && (trim($_GET['id_session'])!="")) + addUserToSession($UserList, $_GET['id_session']); + if(sizeof($UserList)>0) + { + Display :: display_normal_message(sizeof($UserList)." ".get_lang('utilisateur(s) ajoute(s)')); + } + else + { + Display :: display_normal_message(get_lang('Aucun utilisateur ajoute')); + } + break; + + } + Security::clear_token(); + } +} + +$form = new FormValidator('advanced_search','get'); +$form->add_textfield('keyword_username',get_lang('LoginName'),false); +$form->add_textfield('keyword_lastname',get_lang('LastName'),false); +$form->add_textfield('keyword_firstname',get_lang('FirstName'),false); +if (isset($_GET['id_session'])) + $form->addElement('hidden','id_session',$_GET['id_session']); + +$type = array(); +$type["all"] = get_lang('All'); +$type["employee"] = get_lang('Staff'); +$type["student"] = get_lang('Student'); + +$form->addElement('select','keyword_type',get_lang('Status'),$type); +// Structure a rajouer ?? +$form->addElement('submit','submit',get_lang('Ok')); +//$defaults['keyword_active'] = 1; +//$defaults['keyword_inactive'] = 1; +//$form->setDefaults($defaults); +$form->display(); + + + +$parameters['keyword_username'] = $_GET['keyword_username']; +$parameters['keyword_firstname'] = $_GET['keyword_firstname']; +$parameters['keyword_lastname'] = $_GET['keyword_lastname']; +$parameters['keyword_email'] = $_GET['keyword_email']; +if (isset($_GET['id_session'])) + $parameters['id_session'] = $_GET['id_session']; +// Create a sortable table with user-data + +$parameters['sec_token'] = Security::get_token(); +$table = new SortableTable('users', 'get_number_of_users', 'get_user_data',2); +$table->set_additional_parameters($parameters); +$table->set_header(0, '', false); +$table->set_header(1, get_lang('LoginName')); +$table->set_header(2, get_lang('LastName')); +$table->set_header(3, get_lang('FirstName')); +$table->set_header(4, get_lang('Email')); +//$table->set_column_filter(5, 'email_filter'); +//$table->set_column_filter(5, 'active_filter'); +$table->set_column_filter(5, 'modify_filter'); +$table->set_form_actions(array ('add_user' => get_lang('Ajouter les utilisateurs LDAP'))); +$table->display(); + +/* +============================================================================== + FOOTER +============================================================================== +*/ +Display :: display_footer(); +?> \ No newline at end of file diff --git a/main/admin/ldap_users_synchro.php b/main/admin/ldap_users_synchro.php new file mode 100644 index 0000000000..52d80f6df7 --- /dev/null +++ b/main/admin/ldap_users_synchro.php @@ -0,0 +1,90 @@ + 'index.php',"name" => get_lang('PlatformAdmin')); +$interbreadcrumb[]=array('url' => api_get_self(),"name" => get_lang('SessionsList')); + +// Database Table Definitions +$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); +$tbl_session_rel_class = Database::get_main_table(TABLE_MAIN_SESSION_CLASS); +$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); +$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); +$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); +$tbl_user = Database::get_main_table(TABLE_MAIN_USER); +$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER); +$tbl_class = Database::get_main_table(TABLE_MAIN_CLASS); +$tbl_class_user = Database::get_main_table(TABLE_MAIN_CLASS_USER); + +$tbl_session_rel_etape = "session_rel_etape"; + +$id_session=intval($_GET['id_session']); + +$formSent=0; +$errorMsg=$firstLetterUser=$firstLetterSession=''; +$UserList=$SessionList=array(); +$users=$sessions=array(); +$noPHP_SELF=true; + +$page=intval($_GET['page']); +$action=$_REQUEST['action']; + +$tool_name = get_lang('Synchro LDAP : Import Etudiants/Etapes dans session'); +Display::display_header($tool_name); +//api_display_tool_title($tool_name); + +?> +

+ + +
+ + \ No newline at end of file