Browse Source

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

Yannick Warnier 17 years ago
parent
commit
59a49bec9e

+ 16 - 8
main/admin/ldap_import_students_to_session.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'));

+ 51 - 39
main/admin/ldap_synchro.php

@@ -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))
 		{

+ 22 - 20
main/admin/ldap_users_list.php

@@ -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');