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 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 "- Seules la table contenant les utilisateurs (professeurs, admin,...) et la table mettant en relation les matières et les professeurs seront conservées.
";
echo "- Les professeurs de l'année passée présents dans la base GEPI et non présents dans la base CSV de cette année ne sont pas effacés de la base GEPI mais simplement déclarés \"inactifs\".
";
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 "\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 "Identifiant du professeur | Nom | Prénom | Mot de passe * |
";
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 "| $sql |
";
$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 "Non trouvé dans l'annuaire LDAP | ".$prof[$k]["nom_usage"]." | ".$premier_prenom." | |
\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 "| NUMEN: $affiche[5] $pwd |
";
} 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 "| Choix 2: $pwd |
";
//$mess_mdp = "Inconnu (compte bloqué)";
} elseif ($_POST['sso'] == "yes") {
$pwd = '';
$mess_mdp = "aucun (sso)";
//echo "| sso |
";
}
// 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 "| $sql |
";
if(!$res){$nb_reg_no++;}
$res = mysqli_query($GLOBALS["mysqli"], "INSERT INTO tempo2 VALUES ('".$login_prof."', '".$affiche[3]."')");
echo "".$login_prof." | ".$affiche[0]." | ".$premier_prenom." | ".$mess_mdp." |
\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 "".$login_prof_gepi." | ".$affiche[0]." | ".$affiche[1]." | Inchangé |
\n";
}
}
}
}
}
//dbase_close($fp);
fclose($fp);
echo "
";
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)
- Lorsqu'un nouveau professeur est inséré dans la base GEPI, son mot de passe lors de la première
connexion à GEPI est son NUMEN.
- Si le NUMEM n'est pas disponible dans le fichier F_wind.csv, GEPI génère aléatoirement
un mot de passe.
";
*/
echo "* Précision sur les mots de passe (en non-SSO) :
(il est conseillé d'imprimer cette page)
- Lorsqu'un nouveau professeur est inséré dans la base GEPI, son mot de passe lors de la première
connexion à GEPI est celui inscrit dans le F_wind.csv.
- Si le mot de passe n'est pas disponible dans le fichier F_wind.csv, GEPI génère aléatoirement
un mot de passe.
";
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");
?>