[svn r14971] Minor improvements to LDAP synchro scripts (not functional yet)

skala
Yannick Warnier 18 years ago
parent e7994152b8
commit 59a49bec9e
  1. 24
      main/admin/ldap_import_students_to_session.php
  2. 90
      main/admin/ldap_synchro.php
  3. 42
      main/admin/ldap_users_list.php

@ -359,7 +359,7 @@ if (isset($id_session) && $id_session!="")
} }
// Importing periods/steps users into the session // Importing periods/steps users into the session
if (isset($action) && ($action=="import")) { if (isset($action) && ($action=='import')) {
// id_session // id_session
// Parse des code etape de la session // Parse des code etape de la session
$sql = "SELECT id_session, code_etape, etape_description, code_ufr, annee $sql = "SELECT id_session, code_etape, etape_description, code_ufr, annee
@ -482,13 +482,11 @@ if (isset($id_session) && $id_session!="")
</th> </th>
</tr> </tr>
<tr> <tr>
<tr>
<th width="20%"><?php echo get_lang('Department');?></th> <th width="20%"><?php echo get_lang('Department');?></th>
<th width="20%"><?php echo get_lang('StepCode');?></th> <th width="20%"><?php echo get_lang('StepCode');?></th>
<th width="45%"><?php echo get_lang('Label');?></th> <th width="45%"><?php echo get_lang('Label');?></th>
<th width="15%"><?php echo get_lang('Actions'); ?></th> <th width="15%"><?php echo get_lang('Actions'); ?></th>
</tr> </tr>
</tr>
<?php <?php
$sql = "SELECT id_session, code_etape, etape_description, code_ufr, annee $sql = "SELECT id_session, code_etape, etape_description, code_ufr, annee
@ -496,9 +494,17 @@ if (isset($id_session) && $id_session!="")
WHERE id_session='$id_session' WHERE id_session='$id_session'
ORDER BY code_ufr, code_etape"; ORDER BY code_ufr, code_etape";
$result=api_sql_query($sql,__FILE__,__LINE__); $result=api_sql_query($sql,__FILE__,__LINE__);
$etapes=api_store_result($result); if($result)
{
$etapes=api_store_result($result);
}
else
{
$etapes = array();
}
if(sizeof($etapes)==0){ if(count($etapes)==0)
{
echo ' echo '
<tr> <tr>
<td colspan="4">'.get_lang('NoStepForThisSession').'</td> <td colspan="4">'.get_lang('NoStepForThisSession').'</td>
@ -528,7 +534,7 @@ if (isset($id_session) && $id_session!="")
<form method="get" action="<?php echo api_get_self(); ?>" onsubmit="javascript:if(!confirm('<?php echo get_lang('ConfirmYourChoice'); ?>')) return false;"> <form method="get" action="<?php echo api_get_self(); ?>" onsubmit="javascript:if(!confirm('<?php echo get_lang('ConfirmYourChoice'); ?>')) return false;">
<select name="action"> <select name="action">
<option value="import"><?php echo get_lang('ImportStudentsOfAllSteps');?></option> <option value="import"><?php echo get_lang('ImportStudentsOfAllSteps');?></option>
</select> </select>
<input type="hidden" name="id_session" value="<?php echo $id_session; ?>"> <input type="hidden" name="id_session" value="<?php echo $id_session; ?>">
<input type="submit" value="<?php echo get_lang('Submit'); ?>"> <input type="submit" value="<?php echo get_lang('Submit'); ?>">
@ -590,11 +596,13 @@ else
$limit=20; $limit=20;
$from=$page * $limit; $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__); $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); $Sessions=api_store_result($result);
$nbr_results=sizeof($Sessions); $nbr_results=count($Sessions);
//$tool_name = "Import LDAP session"; //$tool_name = "Import LDAP session";
//$interbreadcrumb[]=array("url" => "index.php","name" => get_lang('AdministrationTools')); //$interbreadcrumb[]=array("url" => "index.php","name" => get_lang('AdministrationTools'));

@ -34,7 +34,7 @@ require('../inc/global.inc.php');
$libpath = api_get_path(LIBRARY_PATH); $libpath = api_get_path(LIBRARY_PATH);
require_once($libpath.'formvalidator/FormValidator.class.php'); require_once($libpath.'formvalidator/FormValidator.class.php');
require_once($libpath.'usermanager.lib.php'); require_once($libpath.'usermanager.lib.php');
require('../auth/ldap/authldap.php'); require_once('../auth/ldap/authldap.php');
$annee_base=date('Y'); $annee_base=date('Y');
// setting the section (for the tabs) // setting the section (for the tabs)
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
@ -73,11 +73,13 @@ foreach($Sessions as $session){
$UserAdd=array(); $UserAdd=array();
// Parse des code etape de la session // Parse des code etape de la session
/*
$sql = "SELECT id_session, code_etape, etape_description, code_ufr, annee $sql = "SELECT id_session, code_etape, etape_description, code_ufr, annee
FROM $tbl_session_rel_etape FROM $tbl_session_rel_etape
WHERE id_session='$id_session' WHERE id_session='$id_session'
ORDER BY code_ufr, code_etape"; ORDER BY code_ufr, code_etape";
$result = api_sql_query($sql); $result = api_sql_query($sql);
*/
$ds = ldap_connect($ldap_host, $ldap_port) or die(get_lang('LDAPConnectionError')); $ds = ldap_connect($ldap_host, $ldap_port) or die(get_lang('LDAPConnectionError'));
ldap_set_version($ds); ldap_set_version($ds);
// Import des utilisateurs des etapes dans la session // Import des utilisateurs des etapes dans la session
@ -86,47 +88,57 @@ foreach($Sessions as $session){
$r = false; $r = false;
$res = ldap_handle_bind($ds, $r); $res = ldap_handle_bind($ds, $r);
$UserList=array(); $UserList=array();
while($row = Database::fetch_array($result)) if($result !== false)
{ {
$annee = $row['annee']; //while($row = Database::fetch_array($result))
$code_ufr = $row['code_ufr']; //{
$etape = $row['code_etape']; /*
// LDAP Querry $annee = $row['annee'];
// edupersonorgunitdn=ou=12CI1,ou=2006,ou=diploma,o=Paris1,dc=univ-paris1,dc=fr $code_ufr = $row['code_ufr'];
$sr = @ ldap_search($ds, "ou=people,$LDAPbasedn", "edupersonorgunitdn=ou=$etape,ou=$annee,ou=diploma,$LDAPbasedn"); $etape = $row['code_etape'];
$info = ldap_get_entries($ds, $sr); */
for ($key = 0; $key < $info["count"]; $key ++) // LDAP Query
{ // edupersonorgunitdn=ou=12CI1,ou=2006,ou=diploma,o=Paris1,dc=univ-paris1,dc=fr
$lastname = iconv("utf-8", api_get_setting('platform_charset'), $info[$key]["sn"][0]); //etapescommented
$firstname = iconv("utf-8", api_get_setting('platform_charset'), $info[$key]["givenname"][0]); //$sr = @ ldap_search($ds, "ou=people,$LDAPbasedn", "edupersonorgunitdn=ou=$etape,ou=$annee,ou=diploma,$LDAPbasedn");
$email = $info[$key]["mail"][0]; $sr = @ ldap_search($ds, $ldap_basedn, '(uid=*)');
// Get uid from dn $info = ldap_get_entries($ds, $sr);
$dn_array=ldap_explode_dn($info[$key]["dn"],1); for ($key = 0; $key < $info["count"]; $key ++)
$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); echo "<pre>";
$user_id=$user['user_id']; print_r($info[$key]);
UserManager::update_user($user_id, $firstname, $lastname, $username, null, null, $email, $status, $official_code, $phone, $picture_uri, $expiration_date, $active); echo "</pre>";
$UserUpdate[]=$user_id; $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, $sr, "userPassword");
$password = $val[0];
// 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;
// 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;
} }
$UserList[]=$user_id; //}
}
} }
if (isset($included) && ($included)) if (isset($included) && ($included))
{ {

@ -54,42 +54,43 @@ function get_ldap_users()
$keyword_username = trim(Database::escape_string($_GET['keyword_username'])); $keyword_username = trim(Database::escape_string($_GET['keyword_username']));
$keyword_type = Database::escape_string($_GET['keyword_type']); $keyword_type = Database::escape_string($_GET['keyword_type']);
$ldap_querry=array(); $ldap_query=array();
if ($keyword_username != "") { if ($keyword_username != "") {
$ldap_querry[]="(uid=".$keyword_username."*)"; $ldap_query[]="(uid=".$keyword_username."*)";
} else if ($keyword_lastname!=""){ } else if ($keyword_lastname!=""){
$ldap_querry[]="(sn=".$keyword_lastname."*)"; $ldap_query[]="(sn=".$keyword_lastname."*)";
if ($keyword_firstname!="") { if ($keyword_firstname!="") {
$ldap_querry[]="(givenName=".$keyword_firstname."*)"; $ldap_query[]="(givenName=".$keyword_firstname."*)";
} }
} }
if ($keyword_type !="" && $keyword_type !="all") { if ($keyword_type !="" && $keyword_type !="all") {
$ldap_querry[]="(eduPersonPrimaryAffiliation=".$keyword_type.")"; $ldap_query[]="(eduPersonPrimaryAffiliation=".$keyword_type.")";
} }
if (sizeof($ldap_querry)>1){ if (count($ldap_query)>1){
$str_querry.="(& "; $str_query.="(& ";
foreach ($ldap_querry as $query){ foreach ($ldap_query as $query){
$str_querry.=" $query"; $str_query.=" $query";
} }
$str_querry.=" )"; $str_query.=" )";
} else { } else {
$str_querry=$ldap_querry[0]; $str_query=$ldap_query[0];
} }
$ds = ldap_connect($ldap_host, $ldap_port); $ds = ldap_connect($ldap_host, $ldap_port);
ldap_set_version($ds); ldap_set_version($ds);
if ($ds && sizeof($ldap_querry)>0) { if ($ds && count($ldap_query)>0) {
$r = false; $r = false;
$res = ldap_handle_bind($ds, $r); $res = ldap_handle_bind($ds, $r);
$sr = @ ldap_search($ds, "ou=people,$ldap_basedn", $str_querry); //$sr = ldap_search($ds, "ou=test-ou,$ldap_basedn", $str_query);
$sr = ldap_search($ds, $ldap_basedn, $str_query);
//echo "Le nombre de resultats est : ".ldap_count_entries($ds,$sr)."<p>"; //echo "Le nombre de resultats est : ".ldap_count_entries($ds,$sr)."<p>";
$info = ldap_get_entries($ds, $sr); $info = ldap_get_entries($ds, $sr);
return $info; return $info;
} else { } else {
if (sizeof($ldap_querry)!=0) if (count($ldap_query)!=0)
Display :: display_error_message(get_lang('LDAPConnectionError')); Display :: display_error_message(get_lang('LDAPConnectionError'));
return array(); return array();
} }
@ -105,7 +106,7 @@ function get_number_of_users()
{ {
$info = get_ldap_users(); $info = get_ldap_users();
if (sizeof($info)>0) if (count($info)>0)
return $info['count']; return $info['count'];
else else
return 0; return 0;
@ -163,10 +164,10 @@ function addLdapUser($login){
$ds = ldap_connect($ldap_host, $ldap_port); $ds = ldap_connect($ldap_host, $ldap_port);
ldap_set_version($ds); ldap_set_version($ds);
if ($ds) { if ($ds) {
$str_querry="(uid=".$login.")"; $str_query="(uid=".$login.")";
$r = false; $r = false;
$res = ldap_handle_bind($ds, $r); $res = ldap_handle_bind($ds, $r);
$sr = @ ldap_search($ds, "ou=people,$ldap_basedn", $str_querry); $sr = @ ldap_search($ds, "ou=people,$ldap_basedn", $str_query);
//echo "Le nombre de resultats est : ".ldap_count_entries($ds,$sr)."<p>"; //echo "Le nombre de resultats est : ".ldap_count_entries($ds,$sr)."<p>";
$info = ldap_get_entries($ds, $sr); $info = ldap_get_entries($ds, $sr);
@ -286,7 +287,7 @@ if (($_GET['action']=="add_user") && (isInteger($_GET['id_session']))){
} }
$interbreadcrumb[] = array ("url" => 'index.php', "name" => get_lang('PlatformAdmin')); $interbreadcrumb[] = array ("url" => 'index.php', "name" => get_lang('PlatformAdmin'));
$tool_name = get_lang('SearchAUser'). " LDAP"; $tool_name = get_lang('SearchAUser'). " - LDAP";
Display :: display_header($tool_name); Display :: display_header($tool_name);
//api_display_tool_title($tool_name); //api_display_tool_title($tool_name);
@ -384,9 +385,9 @@ if (isset ($_POST['action']))
} }
if (isset($_GET['id_session']) && (trim($_GET['id_session'])!="")) if (isset($_GET['id_session']) && (trim($_GET['id_session'])!=""))
addUserToSession($UserList, $_GET['id_session']); addUserToSession($UserList, $_GET['id_session']);
if(sizeof($UserList)>0) if(count($UserList)>0)
{ {
Display :: display_normal_message(sizeof($UserList)." ".get_lang('LDAPUsersAdded')); Display :: display_normal_message(count($UserList)." ".get_lang('LDAPUsersAdded'));
} }
else else
{ {
@ -437,6 +438,7 @@ $table->set_header(1, get_lang('LoginName'));
$table->set_header(2, get_lang('LastName')); $table->set_header(2, get_lang('LastName'));
$table->set_header(3, get_lang('FirstName')); $table->set_header(3, get_lang('FirstName'));
$table->set_header(4, get_lang('Email')); $table->set_header(4, get_lang('Email'));
$table->set_header(5, get_lang('Actions'));
//$table->set_column_filter(5, 'email_filter'); //$table->set_column_filter(5, 'email_filter');
//$table->set_column_filter(5, 'active_filter'); //$table->set_column_filter(5, 'active_filter');
$table->set_column_filter(5, 'modify_filter'); $table->set_column_filter(5, 'modify_filter');

Loading…
Cancel
Save