security_check(); if ($resultat_session == 'c') { header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes"); die(); } else if ($resultat_session == '0') { header("Location: ../logout.php?auto=1"); die(); } if (!checkAccess()) { header("Location: ../logout.php?auto=1"); die(); } check_token(); include("../lib/initialisation_annee.inc.php"); $liste_tables_del = $liste_tables_del_etape_professeurs; //**************** EN-TETE ***************** $titre_page = "Outil d'initialisation de l'année : Importation des matières"; require_once("../lib/header.inc.php"); //**************** FIN EN-TETE ***************** ?>

Retour Retour accueil initialisation

Quatrième phase d'initialisation
Importation des professeurs

"; if (!isset($step1)) { $j=0; $flag=0; while (($j < count($liste_tables_del)) and ($flag==0)) { $test = mysqli_num_rows(mysqli_query($GLOBALS["mysqli"], "SHOW TABLES LIKE '$liste_tables_del[$j]'")); if($test==1){ if (old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT count(*) FROM $liste_tables_del[$j]"),0)!=0) { $flag=1; } } $j++; } $test = old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT count(*) FROM utilisateurs WHERE statut='professeur'"),0); if ($test != 0) {$flag=1;} if ($flag != 0){ echo "

ATTENTION ...
"; echo "Des données concernant les professeurs sont actuellement présentes dans la base GEPI

"; echo "

Si vous poursuivez la procédure les données telles que notes, appréciations, ... seront effacées.

"; echo ""; echo "
"; echo add_token_field(); echo ""; echo ""; echo "
"; echo ""; echo "


"; require("../lib/footer.inc.php"); die(); } } if (!isset($is_posted)) { $j=0; while ($j < count($liste_tables_del)) { $test = mysqli_num_rows(mysqli_query($GLOBALS["mysqli"], "SHOW TABLES LIKE '$liste_tables_del[$j]'")); if($test==1){ if (old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT count(*) FROM $liste_tables_del[$j]"),0)!=0) { $del = @mysqli_query($GLOBALS["mysqli"], "DELETE FROM $liste_tables_del[$j]"); } } $j++; } $del = @mysqli_query($GLOBALS["mysqli"], "DELETE FROM tempo2"); echo "
"; echo add_token_field(); echo "

Importation du fichier F_wind.csv contenant les données relatives aux professeurs."; echo "

Veuillez préciser le nom complet du fichier F_wind.csv."; echo ""; echo ""; echo "

"; echo "

Quelle formule appliquer pour la génération du login ?

\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 "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.
\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')))) { if ((getSettingValue("use_ent") == "y")&&(getSettingValue('afficher_liaison_ent')=='argos_bordeaux')) { echo "\n"; echo "\n"; echo "
\n"; } echo "
\n"; // Modifications jjocal dans le cas où c'est un serveur CAS qui s'occupe de tout if((getSettingValue("use_sso") == "cas")||(getSettingValue('auth_sso')=="lcs")) { $checked1 = ' checked="checked"'; $checked0 = ''; }else{ $checked1 = ''; $checked0 = ' checked="checked"'; } echo "

Ces comptes seront-ils utilisés en Single Sign-On avec CAS ou LemonLDAP ? (laissez 'non' si vous ne savez pas de quoi il s'agit)

\n"; echo " \n"; echo "
\n"; echo "
\n"; echo "
\n"; echo "

\n"; echo "
\n"; echo "


\n"; } else { $dbf_file = isset($_FILES["dbf_file"]) ? $_FILES["dbf_file"] : NULL; // On commence par rendre inactifs tous les professeurs $req = mysqli_query($GLOBALS["mysqli"], "UPDATE utilisateurs set etat='inactif' where statut = 'professeur'"); // on efface la ligne "display_users" dans la table "setting" de façon à afficher tous les utilisateurs dans la page /utilisateurs/index.php $req = mysqli_query($GLOBALS["mysqli"], "DELETE from setting where NAME = 'display_users'"); if(mb_strtoupper($dbf_file['name']) == "F_WIND.CSV") { $fp=fopen($dbf_file['tmp_name'],"r"); if(!$fp) { echo "

Impossible d'ouvrir le fichier CSV !

"; echo "Cliquer ici pour recommencer !

"; } else { // on constitue le tableau des champs à extraire $tabchamps = array("AINOMU","AIPREN","AICIVI","NUMIND","FONCCO","INDNNI" ); $nblignes=0; while (!feof($fp)) { $ligne = fgets($fp, 4096); if($nblignes==0){ // Quand on enregistre en CSV des fichiers DBF de GEP avec OpenOffice, les champs sont renommés avec l'ajout de ',...' en fin de nom de champ. // On ne retient pas ces ajouts pour $en_tete $temp=explode(";",$ligne); for($i=0;$iDans le tableau ci-dessous, les identifiants en rouge correspondent à des professeurs nouveaux dans la base GEPI. les identifiants en vert correspondent à des professeurs détectés dans les fichiers CSV mais déjà présents dans la base GEPI.

Il est possible que certains professeurs ci-dessous, bien que figurant dans le fichier CSV, ne soient plus en exercice dans votre établissement cette année. C'est pourquoi il vous sera proposé en fin de procédure d'initialsation, un nettoyage de la base afin de supprimer ces données inutiles.

"; $alt=1; echo ""; echo ""; srand(); $nb_reg_no = 0; //========================= $fp=fopen($dbf_file['tmp_name'],"r"); // On lit une ligne pour passer la ligne d'entête: $ligne = fgets($fp, 4096); //========================= for($k = 1; ($k < $nblignes+1); $k++){ if(!feof($fp)){ $ligne = preg_replace('/"/','',fgets($fp, 4096)); if(trim($ligne)!=""){ $tabligne=explode(";",$ligne); for($i = 0; $i < count($tabchamps); $i++) { $affiche[$i] = nettoyer_caracteres_nom($tabligne[$tabindice[$i]], "an", "' ._-", ""); } //Civilité $civilite = ''; if ($affiche[2] = "ML") $civilite = "Mlle"; if ($affiche[2] = "MM") $civilite = "Mme"; if ($affiche[2] = "M.") $civilite = "M."; $prenoms = explode(" ",$affiche[1]); $premier_prenom = $prenoms[0]; $prenom_compose = ''; if (isset($prenoms[1])) {$prenom_compose = $prenoms[0]."-".$prenoms[1];} $lcs_prof_en_erreur="n"; if(getSettingValue('auth_sso')=='lcs') { $lcs_prof_en_erreur="y"; $exist = 'no'; if($prof[$k]["id"]!='') { $login_prof_gepi=get_lcs_login($affiche[3], 'professeur'); //echo "get_lcs_login(".$affiche[3].", 'professeur')=".$login_prof_gepi."
"; if($login_prof_gepi!='') { $lcs_prof_en_erreur="n"; $sql="SELECT 1=1 FROM utilisateurs WHERE login='$login_prof_gepi';"; $test_exist_prof=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test_exist_prof)>0) { $exist = 'yes'; } else { $exist = 'no'; } } else { $lcs_prof_en_erreur="y"; } } } else { // On effectue d'abord un test sur le NUMIND $sql="select login from utilisateurs where ( numind='".$affiche[3]."' and numind!='' and statut='professeur')"; //echo ""; $test_exist = mysqli_query($GLOBALS["mysqli"], $sql); $result_test = mysqli_num_rows($test_exist); if ($result_test == 0) { // On tente ensuite une reconnaissance sur nom/prénom, si le test NUMIND a échoué $sql="select login from utilisateurs where ( nom='".mysqli_real_escape_string($GLOBALS["mysqli"], $affiche[0])."' and prenom = '".mysqli_real_escape_string($GLOBALS["mysqli"], $premier_prenom)."' and statut='professeur')"; // Pour debug: //echo "$sql
"; $test_exist = mysqli_query($GLOBALS["mysqli"], $sql); $result_test = mysqli_num_rows($test_exist); if ($result_test == 0) { if ($prenom_compose != '') { $test_exist2 = mysqli_query($GLOBALS["mysqli"], "select login from utilisateurs where ( nom='".mysqli_real_escape_string($GLOBALS["mysqli"], $affiche[0])."' and prenom = '".mysqli_real_escape_string($GLOBALS["mysqli"], $prenom_compose)."' and statut='professeur' )"); $result_test2 = mysqli_num_rows($test_exist2); if ($result_test2 == 0) { $exist = 'no'; } else { $exist = 'yes'; $login_prof_gepi = old_mysql_result($test_exist2,0,'login'); } } else { $exist = 'no'; } } else { $exist = 'yes'; $login_prof_gepi = old_mysql_result($test_exist,0,'login'); } } else { $exist = 'yes'; $login_prof_gepi = old_mysql_result($test_exist,0,'login'); } } $alt=$alt*(-1); if($lcs_prof_en_erreur=="y") { echo "\n"; echo "\n"; } else { if ($exist == 'no') { // Aucun professeur ne porte le même nom dans la base GEPI. On va donc rentrer ce professeur dans la base $affiche[1] = nettoyer_caracteres_nom($affiche[1], "a", " _-", ""); if($_POST['login_gen_type'] == 'ent'){ // A MODIFIER : Pouvoir gérer use_ent et NetCollege ITOP hors 27: if ((getSettingValue("use_ent") == 'y')&&(!preg_match("/^027/", getSettingValue('gepiSchoolRne')))) { // Charge à l'organisme utilisateur de pourvoir à cette fonctionnalité // le code suivant n'est qu'une méthode proposée pour relier Gepi à un ENT $bx = 'oui'; if (isset($bx) AND $bx == 'oui') { // On va chercher le login de l'utilisateur dans la table créée $sql_p = "SELECT login_u FROM ldap_bx WHERE nom_u = '".my_strtoupper($affiche[0])."' AND prenom_u = '".my_strtoupper($affiche[1])."' AND statut_u = 'teacher'"; $query_p = mysqli_query($GLOBALS["mysqli"], $sql_p); $nbre = mysqli_num_rows($query_p); if ($nbre >= 1 AND $nbre < 2) { $temp1 = old_mysql_result($query_p, 0,"login_u"); }else{ // Il faudrait alors proposer une alternative à ce cas $temp1 = "erreur_".$k; } } } else{ die('Vous n\'avez pas autorisé Gepi à utiliser un ENT'); } } else { $temp1=generate_unique_login($affiche[0], $affiche[1], $_POST['login_gen_type'], $_POST['login_gen_type_casse']); } if((!$temp1)||($temp1=="")) { $temp1="erreur_"; } $login_prof = $temp1; // On teste l'unicité du login que l'on vient de créer $m = 2; $test_unicite = 'no'; $temp = $login_prof; while ($test_unicite != 'yes') { $test_unicite = test_unique_login($login_prof); if ($test_unicite != 'yes') { $login_prof = $temp.$m; $m++; } } $affiche[0] = nettoyer_caracteres_nom($affiche[0], "a", " _-", ""); // Mot de passe if (mb_strlen($affiche[5])>2 and $affiche[4]=="ENS" and $_POST['sso'] == "no") { // $pwd = md5(trim($affiche[5])); //NUMEN //$mess_mdp = "NUMEN"; $mess_mdp = "Mot de passe dans le fichier fourni"; //echo ""; } elseif ($_POST['sso']== "no") { $pwd = md5(rand (1,9).rand (1,9).rand (1,9).rand (1,9).rand (1,9).rand (1,9)); $mess_mdp = $pwd; //echo ""; //$mess_mdp = "Inconnu (compte bloqué)"; } elseif ($_POST['sso'] == "yes") { $pwd = ''; $mess_mdp = "aucun (sso)"; //echo ""; } // utilise le prénom composé s'il existe, plutôt que le premier prénom $sql="INSERT INTO utilisateurs SET login='$login_prof', nom='".mysqli_real_escape_string($GLOBALS["mysqli"], $affiche[0])."', prenom='".mysqli_real_escape_string($GLOBALS["mysqli"], $premier_prenom)."', civilite='$civilite', password='$pwd', statut='professeur', etat='actif', change_mdp='y', numind='$affiche[3]'"; $res = mysqli_query($GLOBALS["mysqli"], $sql); // Pour debug: //echo ""; if(!$res){$nb_reg_no++;} $res = mysqli_query($GLOBALS["mysqli"], "INSERT INTO tempo2 VALUES ('".$login_prof."', '".$affiche[3]."')"); echo "\n"; } else { // On corrige aussi les nom/prénom/civilité et numind parce que la reconnaissance a aussi pu se faire sur le nom/prénom $res = mysqli_query($GLOBALS["mysqli"], "UPDATE utilisateurs set etat='actif', nom='$affiche[0]', prenom='$premier_prenom', civilite='$civilite', numind='$affiche[3]' where login='".$login_prof_gepi."'"); if(!$res) $nb_reg_no++; $res = mysqli_query($GLOBALS["mysqli"], "INSERT INTO tempo2 VALUES ('".$login_prof_gepi."', '".$affiche[3]."')"); echo "\n"; } } } } } //dbase_close($fp); fclose($fp); echo "

Identifiant du professeur

Nom

Prénom

Mot de passe *
$sql

Non trouvé dans l'annuaire LDAP

".$prof[$k]["nom_usage"]."

".$premier_prenom."

 
NUMEN: $affiche[5] $pwd
Choix 2: $pwd
sso
$sql

".$login_prof."

".$affiche[0]."

".$premier_prenom."

".$mess_mdp."

".$login_prof_gepi."

".$affiche[0]."

".$affiche[1]."

Inchangé
"; if ($nb_reg_no != 0) { echo "

Lors de l'enregistrement des données il y a eu $nb_reg_no erreurs. Essayez de trouvez la cause de l'erreur et recommencez la procédure avant de passer à l'étape suivante."; } else { echo "

L'importation des professeurs dans la base GEPI a été effectuée avec succès !

"; /* echo "

* Précision sur les mots de passe (en non-SSO) :
(il est conseillé d'imprimer cette page)

"; */ echo "

* Précision sur les mots de passe (en non-SSO) :
(il est conseillé d'imprimer cette page)

"; echo "

Dans tous les cas le nouvel utilisateur est amené à changer son mot de passe lors de sa première connexion.

"; echo "

Vous pouvez procéder à la cinquième phase d'affectation des matières à chaque professeur, d'affectation des professeurs dans chaque classe et de définition des options suivies par les élèves.

"; } //echo "

Procéder à la cinquième phase d'initialisation



"; echo "

Procéder à la cinquième phase d'initialisation



"; } } else if (trim($dbf_file['name'])=='') { echo "

Aucun fichier n'a été sélectionné !
"; echo "Cliquer ici pour recommencer !

"; } else { echo "

Le fichier sélectionné n'est pas valide !
"; echo "Cliquer ici pour recommencer !

"; } } require("../lib/footer.inc.php"); ?>