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

skala
Yannick Warnier 17 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
if (isset($action) && ($action=="import")) {
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
@ -482,13 +482,11 @@ if (isset($id_session) && $id_session!="")
</th>
</tr>
<tr>
<tr>
<th width="20%"><?php echo get_lang('Department');?></th>
<th width="20%"><?php echo get_lang('StepCode');?></th>
<th width="45%"><?php echo get_lang('Label');?></th>
<th width="15%"><?php echo get_lang('Actions'); ?></th>
</tr>
</tr>
<?php
$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'
ORDER BY code_ufr, code_etape";
$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 '
<tr>
<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;">
<select name="action">
<option value="import"><?php echo get_lang('ImportStudentsOfAllSteps');?></option>
<option value="import"><?php echo get_lang('ImportStudentsOfAllSteps');?></option>
</select>
<input type="hidden" name="id_session" value="<?php echo $id_session; ?>">
<input type="submit" value="<?php echo get_lang('Submit'); ?>">
@ -590,11 +596,13 @@ 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__);
$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);
$nbr_results=count($Sessions);
//$tool_name = "Import LDAP session";
//$interbreadcrumb[]=array("url" => "index.php","name" => get_lang('AdministrationTools'));

@ -34,7 +34,7 @@ require('../inc/global.inc.php');
$libpath = api_get_path(LIBRARY_PATH);
require_once($libpath.'formvalidator/FormValidator.class.php');
require_once($libpath.'usermanager.lib.php');
require('../auth/ldap/authldap.php');
require_once('../auth/ldap/authldap.php');
$annee_base=date('Y');
// setting the section (for the tabs)
$this_section = SECTION_PLATFORM_ADMIN;
@ -73,11 +73,13 @@ foreach($Sessions as $session){
$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('LDAPConnectionError'));
ldap_set_version($ds);
// Import des utilisateurs des etapes dans la session
@ -86,47 +88,57 @@ foreach($Sessions as $session){
$r = false;
$res = ldap_handle_bind($ds, $r);
$UserList=array();
while($row = Database::fetch_array($result))
if($result !== false)
{
$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,$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
//while($row = Database::fetch_array($result))
//{
/*
$annee = $row['annee'];
$code_ufr = $row['code_ufr'];
$etape = $row['code_etape'];
*/
// LDAP Query
// edupersonorgunitdn=ou=12CI1,ou=2006,ou=diploma,o=Paris1,dc=univ-paris1,dc=fr
//etapescommented
//$sr = @ ldap_search($ds, "ou=people,$LDAPbasedn", "edupersonorgunitdn=ou=$etape,ou=$annee,ou=diploma,$LDAPbasedn");
$sr = @ ldap_search($ds, $ldap_basedn, '(uid=*)');
$info = ldap_get_entries($ds, $sr);
for ($key = 0; $key < $info["count"]; $key ++)
{
$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;
echo "<pre>";
print_r($info[$key]);
echo "</pre>";
$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))
{

@ -54,42 +54,43 @@ function get_ldap_users()
$keyword_username = trim(Database::escape_string($_GET['keyword_username']));
$keyword_type = Database::escape_string($_GET['keyword_type']);
$ldap_querry=array();
$ldap_query=array();
if ($keyword_username != "") {
$ldap_querry[]="(uid=".$keyword_username."*)";
$ldap_query[]="(uid=".$keyword_username."*)";
} else if ($keyword_lastname!=""){
$ldap_querry[]="(sn=".$keyword_lastname."*)";
$ldap_query[]="(sn=".$keyword_lastname."*)";
if ($keyword_firstname!="") {
$ldap_querry[]="(givenName=".$keyword_firstname."*)";
$ldap_query[]="(givenName=".$keyword_firstname."*)";
}
}
if ($keyword_type !="" && $keyword_type !="all") {
$ldap_querry[]="(eduPersonPrimaryAffiliation=".$keyword_type.")";
$ldap_query[]="(eduPersonPrimaryAffiliation=".$keyword_type.")";
}
if (sizeof($ldap_querry)>1){
$str_querry.="(& ";
foreach ($ldap_querry as $query){
$str_querry.=" $query";
if (count($ldap_query)>1){
$str_query.="(& ";
foreach ($ldap_query as $query){
$str_query.=" $query";
}
$str_querry.=" )";
$str_query.=" )";
} else {
$str_querry=$ldap_querry[0];
$str_query=$ldap_query[0];
}
$ds = ldap_connect($ldap_host, $ldap_port);
ldap_set_version($ds);
if ($ds && sizeof($ldap_querry)>0) {
if ($ds && count($ldap_query)>0) {
$r = false;
$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>";
$info = ldap_get_entries($ds, $sr);
return $info;
} else {
if (sizeof($ldap_querry)!=0)
if (count($ldap_query)!=0)
Display :: display_error_message(get_lang('LDAPConnectionError'));
return array();
}
@ -105,7 +106,7 @@ function get_number_of_users()
{
$info = get_ldap_users();
if (sizeof($info)>0)
if (count($info)>0)
return $info['count'];
else
return 0;
@ -163,10 +164,10 @@ function addLdapUser($login){
$ds = ldap_connect($ldap_host, $ldap_port);
ldap_set_version($ds);
if ($ds) {
$str_querry="(uid=".$login.")";
$str_query="(uid=".$login.")";
$r = false;
$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>";
$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'));
$tool_name = get_lang('SearchAUser'). " LDAP";
$tool_name = get_lang('SearchAUser'). " - LDAP";
Display :: display_header($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'])!=""))
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
{
@ -437,6 +438,7 @@ $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_header(5, get_lang('Actions'));
//$table->set_column_filter(5, 'email_filter');
//$table->set_column_filter(5, 'active_filter');
$table->set_column_filter(5, 'modify_filter');

Loading…
Cancel
Save