/** * Verifie et corrige le pseudo * @Parametres * @Return */ function verif_et_corrige_pseudo($uid,$nom,$prenom) { // Verification/correction de l'attribut choisi pour le pseudo global $attribut_pseudo; global $annuelle; global $simulation; // En minuscules pour la recherche: $attribut_pseudo_min=strtolower($attribut_pseudo); // Correction du nom/prenom fournis $nom=remplace_accents(traite_espaces($nom)); $prenom=remplace_accents(traite_espaces($prenom)); $nom=preg_replace("/[^a-z_-]/","",strtolower("$nom")); $prenom=preg_replace("/[^a-z_-]/","",strtolower("$prenom")); unset($attribut); $attribut=array("$attribut_pseudo_min"); $tab=get_tab_attribut("people", "uid=$uid", $attribut); //my_echo("\$tab=get_tab_attribut(\"people\", \"uid=$uid\", \$attribut)<br />"); //my_echo("count(\$tab)=".count($tab)."<br />"); $tmp_pseudo=strtolower($prenom).strtoupper(substr($nom,0,1)); if(count($tab)>0){ // Si le pseudo existe déjà, on ne réinitialise le pseudo que lors d'un import annuel if($annuelle=="y") { //my_echo("\$tab[0]=".$tab[0]." et \$prenom=$prenom<br />"); //$tmp_pseudo=strtolower($prenom).strtoupper(substr($nom,0,1)); if("$tab[0]"!="$tmp_pseudo") { unset($attributs); $attributs=array(); $attributs["$attribut_pseudo"]=$tmp_pseudo; my_echo("Correction de l'attribut '$attribut_pseudo': "); if($simulation!='y') { if(modify_attribut ("uid=$uid", "people", $attributs, "replace")) { my_echo("<font color='green'>SUCCES</font>"); } else{ my_echo("<font color='red'>ECHEC</font>"); $nb_echecs++; } } else { my_echo("<font color='blue'>SIMULATION</font>"); } my_echo("<br />\n"); } } } else { // L'attribut pseudo n'existait pas: unset($attributs); $attributs=array(); //$attributs["$tmp_pseudo"]=strtolower($prenom).strtoupper(substr($nom,0,1)); $attributs["$attribut_pseudo"]=$tmp_pseudo; my_echo("Renseignement de l'attribut '$attribut_pseudo': "); if($simulation!='y') { if(modify_attribut("uid=$uid", "people", $attributs, "add")) { my_echo("<font color='green'>SUCCES</font>"); } else{ my_echo("<font color='red'>ECHEC</font>"); $nb_echecs++; } } else { my_echo("<font color='blue'>SIMULATION</font>"); } my_echo("<br />\n"); } }
function search_people_groups2 ($uids,$filter,$order) { /** * Recherche des utilisateurs dans la branche people a partir d'un tableau d'uids nons tries * Function: search_people_groups2 * @Parametres $order - "cat" => Tri par categorie (Eleves, Equipe...) - "group" => Tri par intitule de group (ex: 1GEA, TGEA...) * @Parametres $uids - Tableau d'uids d'utilisateurs * @Parametres $filter - Filtre de recherche * @Return Retourne un tableau des utilisateurs repondant au filtre de recherche */ // Fonction modifeie pour recueprer aussi le mail global $ldap_server, $ldap_port, $dn; global $error; $error=""; // LDAP attributs $ldap_user_attr = array( "cn", // Nom complet "sn", // Nom "gecos", // Nom prenom (cn sans accents), Date de naissance,Sexe (F/M),Status administrateur LCS (Y/N) "sexe", "mail" ); if (!$filter) $filter="(sn=*)"; $ds = @ldap_connect ( $ldap_server, $ldap_port ); if ( $ds ) { $r = @ldap_bind ( $ds ); // Bind anonyme if ($r) { $loop1=0; for ($loop=0; $loop < count($uids); $loop++) { $result = @ldap_read ( $ds, "uid=".$uids[$loop]["uid"].",".$dn["people"], $filter, $ldap_user_attr ); if ($result) { $info = @ldap_get_entries ( $ds, $result ); if ( $info["count"]) { // Ajout pour récupérer le mail: $attribut_tmp=array("mail"); $tabtmp=get_tab_attribut("people", "uid=".$uids[$loop]["uid"], $attribut_tmp); $uids[$loop]["mail"]=$tabtmp[0]; // traitement du gecos pour identification du sexe $gecos = $info[0]["gecos"][0]; $tmp = preg_split ("/,/",$gecos,4); #echo "debug ".$info["count"]." init ".$init." loop ".$loop."<BR>"; $ret[$loop1] = array ( "uid" => $uids[$loop]["uid"], "fullname" => $info[0]["cn"][0], "name" => $info[0]["sn"][0], "sexe" => $tmp[2], "owner" => $uids[$loop]["owner"], "group" => $uids[$loop]["group"], "cat" => $uids[$loop]["cat"], "gecos" => $gecos, "prof" => $uids[$loop]["prof"], "mail" => $uids[$loop]["mail"] ); $loop1++; } @ldap_free_result ( $result ); } } } else { $error = gettext("Echec du bind anonyme"); } @ldap_close ( $ds ); } else $error = gettext("Erreur de connection au serveur LDAP"); if (count($ret)) { # Correction tri du tableau # Tri par critere categorie ou intitule de groupe if ( $order == "cat" ) usort ($ret, "cmp_cat"); elseif ( $order == "group" ) usort ($ret, "cmp_group"); # Recherche du nombre de catgories ou d'intitules de groupe $i = 0; for ( $loop=0; $loop < count($ret); $loop++) { if ( $ret[$loop][$order] != $ret[$loop-1][$order]) { $tab_order[$i] = $ret[$loop][$order]; $i++; } } if (count($tab_order) > 0 ) { # On decoupe le tableau $ret en autant de sous tableaux $tmp que de criteres $order for ($i=0; $i < count($tab_order); $i++) { $j=0; for ( $loop=0; $loop < count($ret); $loop++) { if ( $ret[$loop][$order] == $tab_order[$i] ) { $ret_tmp[$i][$j] = $ret[$loop]; $j++; } } } # Tri alpabetique des sous tableaux for ( $loop=0; $loop < count($ret_tmp); $loop++) usort ($ret_tmp[$loop], "cmp_name"); # Reassemblage des tableaux temporaires $ret_final = array(); for ($loop=0; $loop < count($tab_order); $loop++) $ret_final = array_merge ($ret_final, $ret_tmp[$loop]); return $ret_final; } else { usort ($ret, "cmp_name"); return $ret; } } }
$swc = new smbwebclient; $swc->NoRun('noauth'); } include "/var/www/lcs/includes/headerauth.inc.php"; include "/var/www/Annu/includes/ldap.inc.php"; if(@ldap_get_right("smbweb_is_open",$login)!='Y') { $swc = new smbwebclient; $swc->NoRun('noright'); } else { if(@ldap_get_right("lcs_is_admin",$login)=='Y') { $acces="y"; } else { // Test du changement du mot de passe include("/var/www/Annu/includes/crob_ldap_functions.php"); $attribut=array("gecos"); $tab=get_tab_attribut("people", "uid=$login", $attribut); // On ne doit avoir (au plus (*)) qu'un gecos par utilisateur. // (*) admin n'a pas de gecos $tab2=explode(",",$tab[0]); if (user_valid_passwd($login,$tab2[1])) {$acces="n";} else {$acces="y";} } if ($acces=="y") { //echo "Acces autorise."; $swc = new smbwebclient; $swc->cfgUserAuth = 'LcsAuth'; $swc->cfgSambaRoot = strtoupper($se3domain); $swc->cfgDefaultServer = strtoupper($se3netbios); $swc->ShareView = $shareview; $swc->Login = $login; $swc->Run();
draw_table_result ("Catégorie", "Eleve", "Professeur", "Administratif"); for ($loop=0; $loop<count($users);$loop++) { $html.="<tr><td style='width: 300px;'>".utf8_decode( $users[$loop]["cn"] )."</td>\n"; $NoRecup = false; # test si on peut recuperer le compte $attribut[0]="uidnumber"; $tab=get_tab_attribut("people", "uid=*", $attribut); for($i=0;$i<count($tab);$i++){ if ( $tab[$i] == $users[$loop]["uidnumber"] ) { $NoRecup = true; break; } } unset($attribut,$tab); $attribut[0]="uid"; $tab=get_tab_attribut("people", "uid=*", $attribut); for($i=0;$i<count($tab);$i++){ if ( $tab[$i] == $users[$loop]["uid"] ) { $NoRecup = true; break; } } if ( $NoRecup ) { $html.="<td colspan='3' style='align: center; width: 150px; font-size:0.7em; font-weight:bold; color:#FDAF4E;'> Ce compte n'est pas récupérable. ".msgaide($msg6)."</td>\n"; } else { $html.="<td style='align: center; width: 50px;'><input type='radio' name='cat[$loop]' value='".$users[$loop]["uid"]."@@Eleves'></td>\n"; $html.="<td style='width: 50px;'><input type='radio' name='cat[$loop]' value='".$users[$loop]["uid"]."@@Profs'></td>\n"; $html.="<td style='width: 50px;'><input type='radio' name='cat[$loop]' value='".$users[$loop]["uid"]."@@Administratifs'></td></tr>\n"; } } $html.="</tbody>\n</table>\n";
my_echo("Aucun professeur principal n'a été trouvé<br />\n"); } else { // Ajout de membres au groupe d'après $tab_pp my_echo("Ajout de membres au groupe $nom_groupe_pp: "); for($n=0;$n<count($tab_pp);$n++) { $uid=$tab_pp[$n]; if(in_array($uid,$tab_mem_pp)) { // Rien à faire, déjà présent my_echo("$uid "); } else { $attribut=array("cn"); $tabtmp=get_tab_attribut("groups", "(&(cn=$nom_groupe_pp)(memberuid=$uid))", $attribut); if(count($tabtmp)==0) { unset($attribut); $attribut=array(); $attribut["memberUid"]=$uid; if(modify_attribut("cn=$nom_groupe_pp","groups",$attribut,"add")) { my_echo("<b>$uid</b> "); } else{ my_echo("<font color='red'>$uid</font> "); $nb_echecs++; } } else{ my_echo("$uid "); }
echo "<br />\n"; echo "Si vous êtes certain que ce n'est pas le cas, vous pouvez faire sauter le verrou.<br />Sinon, il vaut mieux patienter quelques minutes.</p>\n"; echo "<p><a href='".$_SERVER['PHP_SELF']."?deverrouiller=y&jeton=".md5($_SESSION['token'].htmlentities($_SERVER['PHP_SELF']))."'>Faire sauter le verrou</a>.</p>\n"; } else{ echo "<h2><u>Choix des fichiers source</u></h2>\n"; // =========================================================== // AJOUTS: 20070914 boireaus exec("ldapsearch -xLLL ou=Trash",$retour_recherche_branche_Trash); if(count($retour_recherche_branche_Trash)>0){ $attribut=array("uid"); $test_tab=get_tab_attribut("trash", "uid=*", $attribut); if(count($test_tab)){ echo "<p><span style='color:red; font-weight:bold;'>ATTENTION:</span> Il semble que la Corbeille contienne des comptes.<br />Conserver des comptes avant un import peut être gênant:</p>\n"; echo "<ul>\n"; echo "<li>Cela peut causer une pénurie d'uidNumber libres pour les nouveaux comptes à créer.</li>\n"; echo "<li>Cela rallonge le temps de traitement.</li>\n"; echo "</ul>\n"; echo "<p>Il est donc recommandé de procéder au Nettoyage des comptes (<i>dans le menu Annuaire</i>) avant d'effectuer l'import de nouveaux comptes.</p>\n"; } } // =========================================================== echo "<h4>Fichier élèves</h4>\n"; echo "<form enctype='multipart/form-data' name='formulaire1' action='".$_SERVER['PHP_SELF']."' method='post'>\n";