$j++; } $del = @mysqli_query($GLOBALS["mysqli"], "DELETE FROM tempo2"); echo "<form enctype='multipart/form-data' action='" . $_SERVER['PHP_SELF'] . "' method=post>"; echo add_token_field(); echo "<p>Importation du fichier <b>F_wind.csv</b> contenant les données relatives aux professeurs."; echo "<p>Veuillez préciser le nom complet du fichier <b>F_wind.csv</b>."; echo "<input type=hidden name='is_posted' value='yes' />"; echo "<input type=hidden name='step1' value='y' />"; echo "<p><input type='file' size='80' name='dbf_file' />"; echo "<br /><br /><p>Quelle formule appliquer pour la génération du login ?</p>\n"; //if(getSettingValue("use_ent")!='y') { // A MODIFIER : Pouvoir gérer use_ent et NetCollege ITOP hors 27: if (getSettingValue("use_ent") != 'y' || preg_match("/^027/", getSettingValue('gepiSchoolRne'))) { $default_login_gen_type = getSettingValue('mode_generation_login'); if ($default_login_gen_type == '' || !check_format_login($default_login_gen_type)) { $default_login_gen_type = 'nnnnnnnnnnnnnnnnnnnn'; } } else { $default_login_gen_type = ""; } if (getSettingValue('auth_sso') == "lcs") { echo "<span style='color:red'>Votre Gepi utilise une authentification LCS; Le format de login ci-dessous ne sera pas pris en compte. Les comptes doivent avoir été importés dans l'annuaire LDAP du LCS avant d'effectuer l'import dans GEPI.</span><br />\n"; } echo champ_input_choix_format_login('login_gen_type', $default_login_gen_type); // A MODIFIER : Pouvoir gérer use_ent et NetCollege ITOP hors 27: if (getSettingValue("use_ent") == 'y' && !preg_match("/^027/", getSettingValue('gepiSchoolRne'))) { echo "<input type='radio' name='login_gen_type' id='login_gen_type_ent' value='ent' checked=\"checked\" />\n"; echo "<label for='login_gen_type_ent' style='cursor: pointer;'>Les logins sont produits par un ENT (<span title=\"cette case permet l'utilisation de la table 'ldap_bx', assurez vous qu'elle soit remplie avec les bonnes informations.\">Attention !</span>)</label>\n"; echo "<br />\n"; }
/** * Génére le login à partir du nom et du prénom * * Génère puis nettoie un login pour qu'il soit valide et unique * * Le mode de génération doit être passé en argument * * cf. http://sacoche.sesamath.net/appel_doc.php?fichier=support_administrateur__gestion_format_logins * * @param string $_nom nom de l'utilisateur * @param string $_prenom prénom de l'utilisateur * @param string $_mode Le mode de génération ou NULL * @param string $_casse La casse du login ('maj', 'min') est par défaut en minuscules * @return string|boolean Le login généré ou false si on obtient un login vide * @see test_unique_login() */ function generate_unique_login($_nom, $_prenom, $_mode, $_casse = 'min') { if ($_mode == NULL || !check_format_login($_mode)) { $_mode = "nnnnnnnnnnnnnnnnnnnn"; } //========================== // Nettoyage des caractères du nom et du prénom $_prenom = remplace_accents(preg_replace("/Æ/", "AE", preg_replace("/æ/", "ae", preg_replace("/Œ/", "OE", preg_replace("/œ/", "oe", $_prenom))))); $prenoms = explode(" ", $_prenom); $premier_prenom = $prenoms[0]; $prenom_compose = ''; if (isset($prenoms[1])) { $prenom_compose = $prenoms[0] . "-" . $prenoms[1]; } $_prenom = preg_replace("/[^a-zA-Z.\\-]/", "", $_prenom); $_nom = remplace_accents(preg_replace("/Æ/", "AE", preg_replace("/æ/", "ae", preg_replace("/Œ/", "OE", preg_replace("/œ/", "oe", $_nom))))); $_nom = preg_replace("/[^a-zA-Z.\\-]/", "", $_nom); //========================== // Nettoyage historique... éventuellement à revoir $_nom = preg_replace("/[ ']/", "", $_nom); $_nom = preg_replace("/-/", "_", $_nom); $_prenom = preg_replace("/[ ']/", "", $_prenom); $_prenom = preg_replace("/-/", "_", $_prenom); //========================== if (getSettingAOui("FiltrageStrictAlphaNomPrenomPourLogin")) { $_nom = preg_replace("/[^A-Za-z]/", "", $_nom); $_prenom = preg_replace("/[^A-Za-z]/", "", $_prenom); } //========================== // On génère le login if (preg_match('/n/', $_mode) && $_nom == "") { return false; } elseif (preg_match('/p/', $_mode) && $_prenom == "") { return false; } else { $nb_n = mb_strlen(preg_replace('/[^n]/', '', $_mode)); $nb_p = mb_strlen(preg_replace('/[^p]/', '', $_mode)); $separateur = preg_replace('/[^._-]/', '', $_mode); //echo "<br />"; //echo "\$_prenom=$_prenom<br />"; //echo "\$_nom=$_nom<br />"; $part_prenom = mb_substr($_prenom, 0, min($nb_p, mb_strlen($_prenom))); $part_nom = mb_substr($_nom, 0, min($nb_n, mb_strlen($_nom))); //echo "\$part_prenom=$part_prenom<br />"; //echo "\$part_nom=$part_nom<br />"; if (preg_match('/^p/', $_mode)) { // C'est un mode commençant par une portion de prénom $temp1 = $part_prenom . $separateur . $part_nom; } else { // C'est un mode commençant par une portion de nom $temp1 = $part_nom . $separateur . $part_prenom; } //echo "\$temp1=$temp1<br />"; // Révision de la casse if ($_casse == 'maj') { $temp1 = my_strtoupper($temp1); } else { $temp1 = my_strtolower($temp1); } // Suppression des _,-,. multiples $temp1 = preg_replace("/_{2,}/", "_", $temp1); $temp1 = preg_replace("/\\.{2,}/", ".", $temp1); $temp1 = preg_replace("/\\-{2,}/", "-", $temp1); $login_user = $temp1; //========================== // Nettoyage final $login_user = mb_substr($login_user, 0, 50); $login_user = preg_replace("/[^A-Za-z0-9._\\-]/", "", trim($login_user)); $test1 = $login_user[0]; while ($test1 == "_" or $test1 == "-" or $test1 == ".") { $login_user = mb_substr($login_user, 1); $test1 = $login_user[0]; } $test1 = $login_user[mb_strlen($login_user) - 1]; while ($test1 == "_" or $test1 == "-" or $test1 == ".") { $login_user = mb_substr($login_user, 0, mb_strlen($login_user) - 1); $test1 = $login_user[mb_strlen($login_user) - 1]; } //========================== // On teste l'unicité du login que l'on vient de créer $m = ''; $test_unicite = 'no'; while ($test_unicite != 'yes') { if ($m != '' && $m > 99) { $login_user = false; break; } else { $test_unicite = test_unique_login($login_user . $m); if ($test_unicite != 'yes') { if ($m == '') { $m = 2; } else { $m++; } } else { $login_user = $login_user . $m; } } } //echo "\$login_user=$login_user<br />"; return $login_user; } }
@ldap_free_result ( $result ); } else { $texte.="<p>Echec de la recherche dans le LDAP de l'ELENOET pour $lig->ELENOET ($lig->ELENOM $lig->ELEPRE).</p>"; } } else { // Génération d'un login élève type auth_native_gepi: NOM_P $tmp_nom=remplace_accents($lig->ELENOM); $tmp_prenom=remplace_accents($lig->ELEPRE); // Générer un login... $mode_generation_login_eleve=getSettingValue('mode_generation_login_eleve'); if(!check_format_login($mode_generation_login_eleve)) { $mode_generation_login_eleve='nnnnnnnnn_p'; $sql="SELECT * FROM infos_actions WHERE titre='Format des logins générés';"; $test_ia=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test_ia)==0) { enregistre_infos_actions("Format des logins générés","Le format des logins générés par Gepi pour les différentes catégories d'utilisateurs doit être contrôlé et revalidé dans la page <a href='./gestion/param_gen.php#format_login_pers'>Configuration générale</a>",array("administrateur"),'statut'); } } $login_eleve=generate_unique_login($tmp_nom, $tmp_prenom, $mode_generation_login_eleve, 'maj'); if(($login_eleve)&&($login_eleve!='')) { // On teste l'unicité du login que l'on vient de créer $k = 2; $test_unicite = 'no'; $temp = $login_eleve;
$result_inter = traite_requete("INSERT INTO setting VALUES ('utiliserMenuBarre', 'yes');"); if ($result_inter == '') { $result.=msj_ok("Définition du paramètre utiliserMenuBarre : Ok !"); } else { $result.=msj_erreur("Définition du paramètre utiliserMenuBarre : Erreur !"); } } else { $result .= msj_present("Le paramètre utiliserMenuBarre existe déjà dans la table setting."); } $result .= "<br />"; $result .= "<strong>Test des formats de login</strong><br />"; $tab_formats_login_a_tester=array('mode_generation_login', 'mode_generation_login_eleve', 'mode_generation_login_responsable'); for($loop=0;$loop<count($tab_formats_login_a_tester);$loop++) { $valeur_current_mode_generation_login=getSettingValue($tab_formats_login_a_tester[$loop]); if(!check_format_login($valeur_current_mode_generation_login)) { $sql="SELECT * FROM infos_actions WHERE titre='Format des logins générés';"; $test_ia=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test_ia)==0) { enregistre_infos_actions("Format des logins générés","Le format des logins générés par Gepi pour les différentes catégories d'utilisateurs doit être contrôlé et revalidé dans la page <a href='./gestion/param_gen.php#format_login_pers'>Configuration générale</a>",array("administrateur"),'statut'); } $result .= "Format de login "; if($tab_formats_login_a_tester[$loop]=='mode_generation_login') {$result .= "<b>personnels</b>";} elseif($tab_formats_login_a_tester[$loop]=='mode_generation_login_eleve') {$result .= "<b>élèves</b>";} elseif($tab_formats_login_a_tester[$loop]=='mode_generation_login_responsable') {$result .= "<b>responsables</b>";} $result .= " invalide : $valeur_current_mode_generation_login<br />"; if($valeur_current_mode_generation_login=="name") { $result .= "Conversion en 'nnnnnnnnnnnnnnnnnnnn' : "; if(saveSetting($tab_formats_login_a_tester[$loop], 'nnnnnnnnnnnnnnnnnnnn')) {$result .= msj_ok("Ok !");} else {$result .= msj_erreur("ECHEC");}