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(); } include("../lib/initialisation_annee.inc.php"); $liste_tables_del = $liste_tables_del_etape_eleves; //**************** EN-TETE ***************** $titre_page = "Outil d'initialisation de l'année : Importation des élèves - Etape 1"; require_once("../lib/header.inc.php"); //************** FIN EN-TETE *************** //================================== // RNE de l'établissement pour comparer avec le RNE de l'établissement de l'année précédente $gepiSchoolRne=getSettingValue("gepiSchoolRne") ? getSettingValue("gepiSchoolRne") : ""; //================================== $en_tete=isset($_POST['en_tete']) ? $_POST['en_tete'] : "no"; //debug_var(); // Passer à 'y' pour afficher les requêtes $debug_ele="n"; ?>
Vous allez effectuer la première étape : elle consiste à importer le fichier g_eleves.csv contenant les données élèves.
\n"; echo "Les champs suivants doivent être présents, dans l'ordre, et séparés par un point-virgule :
\n"; echo "Veuillez préciser le nom complet du fichier g_eleves.csv.
\n"; echo "\n"; $sql="SELECT 1=1 FROM utilisateurs WHERE statut='eleve';"; if($debug_ele=='y') {echo "$sqlIl existe un ou des comptes élèves de l'année passée, et vous n'avez pas mis ces comptes en réserve pour imposer le même login/mot de passe cette année.
Est-ce bien un choix délibéré ou un oubli de votre part?
Pour conserver ces login/mot de de passe de façon à ne pas devoir re-distribuer ces informations (et éviter de perturber ces utilisateurs), vous pouvez procéder à la mise en réserve avant d'initialiser l'année dans la page Changement d'année (vous y trouverez aussi la possibilité de conserver les comptes parents et bien d'autres actions à ne pas oublier avant l'initialisation).
On vide d'abord les tables suivantes : ";
$j=0;
$k=0;
while ($j < count($liste_tables_del)) {
$sql="SHOW TABLES LIKE '".$liste_tables_del[$j]."';";
//echo "$sql
";
$test = sql_query1($sql);
if ($test != -1) {
if($k>0) {echo ", ";}
$sql="SELECT 1=1 FROM $liste_tables_del[$j];";
$res_test_tab=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_test_tab)>0) {
$sql="DELETE FROM $liste_tables_del[$j];";
$del = @mysqli_query($GLOBALS["mysqli"], $sql);
echo "".$liste_tables_del[$j]."";
echo " (".mysqli_num_rows($res_test_tab).")";
}
else {
echo $liste_tables_del[$j];
}
$k++;
}
$j++;
}
// Ménage infos_actions:
$sql="SELECT * FROM infos_actions WHERE titre LIKE 'Nouvel élève%';";
//echo "$sql
";
$test = mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test)>0) {
echo "
";
echo "Suppression d'anciens messages en page d'accueil invitant à créer de nouveaux comptes élèves.";
$sql="DELETE FROM infos_actions WHERE titre LIKE 'Nouvel élève%';";
$del = mysqli_query($GLOBALS["mysqli"], $sql);
}
// Suppression des comptes d'élèves:
echo "
\n";
echo "
On supprime les anciens comptes élèves... "; $sql="DELETE FROM utilisateurs WHERE statut='eleve';"; $del=mysqli_query($GLOBALS["mysqli"], $sql); $i = 0; // Compteur d'erreurs $error = 0; // Compteur d'enregistrement $total = 0; // Il faut que les comptes disposant d'un compte élève l'an dernier passent en premier pour récupérer leur login sans qu'il se produise une collision si un nouveau passe avant. //$sql="SELECT * FROM temp_gep_import2;"; $sql="(SELECT t.* FROM temp_gep_import2 t, tempo_utilisateurs tu WHERE t.ELENOET=tu.identifiant2) UNION (SELECT * FROM temp_gep_import2 WHERE ELENOET NOT IN (SELECT identifiant2 FROM tempo_utilisateurs));"; $res_temp=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_temp)==0) { echo "
ERREUR : Aucun élève n'a été trouvé ???
\n"; echo "On remplit les tables 'eleves', 'j_eleves_regime', 'j_eleves_etablissements' : "; //while (true) { while ($lig=mysqli_fetch_object($res_temp)) { $reg_nom = $lig->ELENOM; $reg_prenom = $lig->ELEPRE; $reg_naissance = $lig->ELEDATNAIS; $reg_id_int = $lig->ELENOET; $reg_id_nat = $lig->ELENONAT; $reg_etab_prec = $lig->ETOCOD_EP; $reg_double = $lig->ELEDOUBL; $reg_regime = $lig->ELEREG; $reg_sexe = $lig->ELESEXE; //========================== // DEBUG //echo "
\$reg_nom=$reg_nom
\n";
//echo "\$reg_prenom=$reg_prenom
\n";
//echo "\$reg_id_int=$reg_id_int
\n";
//==========================
// On nettoie et on vérifie :
$reg_nom=nettoyer_caracteres_nom(my_strtoupper($reg_nom), "a", " '_-", "");
$reg_nom=preg_replace("/'/", " ", $reg_nom);
if (mb_strlen($reg_nom) > 50) $reg_nom = mb_substr($reg_nom, 0, 50);
$reg_prenom=nettoyer_caracteres_nom($reg_prenom, "a", " '_-", "");
$reg_prenom=preg_replace("/'/", " ", $reg_prenom);
if (mb_strlen($reg_prenom) > 50) $reg_prenom = mb_substr($reg_prenom, 0, 50);
$naissance = explode("/", $reg_naissance);
if (!preg_match("/[0-9]/", $naissance[0]) OR mb_strlen($naissance[0]) > 2 OR mb_strlen($naissance[0]) == 0) $naissance[0] = "00";
if (mb_strlen($naissance[0]) == 1) $naissance[0] = "0" . $naissance[0];
if (!preg_match("/[0-9]/", $naissance[1]) OR mb_strlen($naissance[1] OR mb_strlen($naissance[1]) == 0) > 2) $naissance[1] = "00";
if (mb_strlen($naissance[1]) == 1) $naissance[1] = "0" . $naissance[1];
if (!preg_match("/[0-9]/", $naissance[2]) OR mb_strlen($naissance[2]) > 4 OR mb_strlen($naissance[2]) == 3 OR mb_strlen($naissance[2]) == 1) $naissance[2] = "00";
if (mb_strlen($naissance[2]) == 1) $naissance[2] = "0" . $naissance[2];
//$reg_naissance = mktime(0, 0, 0, $naissance[1], $naissance[0], $naissance[2]);
$reg_naissance = $naissance[2] . "-" . $naissance[1] . "-" . $naissance[0];
$reg_id_int = preg_replace("/[^0-9]/","",trim($reg_id_int));
$reg_id_nat = preg_replace("/[^A-Z0-9]/","",trim($reg_id_nat));
$reg_etab_prec = preg_replace("/[^A-Z0-9]/","",trim($reg_etab_prec));
$reg_double = trim(my_strtoupper($reg_double));
if ($reg_double != "OUI" AND $reg_double != "NON") $reg_double = "NON";
$reg_regime = trim(my_strtoupper($reg_regime));
if ($reg_regime != "INTERN" AND $reg_regime != "EXTERN" AND $reg_regime != "IN.EX." AND $reg_regime != "DP DAN") $reg_regime = "DP DAN";
if ($reg_sexe != "F" AND $reg_sexe != "M") $reg_sexe = "F";
// Maintenant que tout est propre, on fait un test sur la table eleves pour s'assurer que l'élève n'existe pas déjà.
// Ca permettra d'éviter d'enregistrer des élèves en double
$sql="SELECT count(login) FROM eleves WHERE elenoet = '" . $reg_id_int . "';";
if($debug_ele=='y') {echo "
$sql -> $test enregistrement.
";}
$test = old_mysql_result(mysqli_query($GLOBALS["mysqli"], $sql), 0);
//==========================
// DEBUG
//echo "\$reg_id_int=$reg_id_int
\n";
//echo "\$test=$test
\n";
//==========================
if ($test == 0) {
// Test négatif : aucun élève avec cet ID... on enregistre !
$reg_login="";
if($reg_id_int!='') {
$sql="SELECT * FROM tempo_utilisateurs WHERE identifiant2='".$reg_id_int."' AND statut='eleve';";
if($debug_ele=='y') {echo "$sql
";}
$res_tmp_u=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_tmp_u)>0) {
$lig_tmp_u=mysqli_fetch_object($res_tmp_u);
$reg_login=$lig_tmp_u->login;
if($debug_ele=='y') {echo "On récupère de tempo_utilisateurs le login $reg_login
";}
}
}
if($reg_login=="") {
$default_login_gen_type=getSettingValue('mode_generation_login_eleve');
if(($default_login_gen_type=='')||(!check_format_login($default_login_gen_type))) {$default_login_gen_type='nnnnnnnnn_p';}
$default_login_gen_type_casse=getSettingValue('mode_generation_login_eleve_casse');
if(($default_login_gen_type_casse!='min')&&($default_login_gen_type_casse!='maj')) {$default_login_gen_type_casse='min';}
//$reg_login=generate_unique_login($reg_nom, $reg_prenom, $default_login_gen_type, 'maj');
$reg_login=generate_unique_login($reg_nom, $reg_prenom, $default_login_gen_type, $default_login_gen_type_casse);
if($debug_ele=='y') {echo "Login nouvellement généré pour '$reg_nom $reg_prenom' : '$reg_login'
";}
}
if((!$reg_login)||($reg_login=="")) {
echo "Erreur lors de la génération d'un login pour ".$reg_nom." ".$reg_prenom.".
\n";
}
else {
// Normalement on a maintenant un login dont on est sûr qu'il est unique...
//==========================
// DEBUG
//echo "On va enregistrer l'élève avec le login \$reg_login=$reg_login
Erreur lors de l'enregistrement de l'appartenance de l'élève $reg_nom $reg_prenom à l'établissement $reg_etab_prec.
\n"; $error++; echo "".mysqli_error($GLOBALS["mysqli"]).'Erreur lors de l'enregistrement de l'appartenance de l'élève $reg_nom $reg_prenom à l'établissement $reg_etab_prec.
\n"; $error++; echo "".mysqli_error($GLOBALS["mysqli"]).'Erreur lors de l'enregistrement de l'appartenance de l'élève $reg_nom $reg_prenom à l'établissement $reg_etab_prec.
\n"; $error++; echo "".mysqli_error($GLOBALS["mysqli"]).'Il y a eu " . $error . " erreur(s).
\n";} if ($total > 0) {echo "" . $total . " élèves ont été enregistrés.
\n";} echo "\n"; // On sauvegarde le témoin du fait qu'il va falloir convertir pour remplir les nouvelles tables responsables: saveSetting("conv_new_resp_table", 0); } else if ($_POST['action'] == "upload_file") { check_token(false); // // Le fichier vient d'être envoyé et doit être traité // On va donc afficher le contenu du fichier tel qu'il va être enregistré dans Gepi // en proposant des champs de saisie pour modifier les données si on le souhaite // if(isset($en_tete)) { $_SESSION['init_csv_ligne_entete']=$en_tete; } $csv_file = isset($_FILES["csv_file"]) ? $_FILES["csv_file"] : NULL; // On vérifie le nom du fichier... Ce n'est pas fondamentalement indispensable, mais // autant forcer l'utilisateur à être rigoureux if(my_strtolower($csv_file['name']) == "g_eleves.csv") { // Le nom est ok. On ouvre le fichier $fp=fopen($csv_file['tmp_name'],"r"); if(!$fp) { // Aie : on n'arrive pas à ouvrir le fichier... Pas bon. echo "Impossible d'ouvrir le fichier CSV !
\n"; echo "Cliquer ici pour recommencer !
\n"; } else { // Fichier ouvert ! On attaque le traitement // On va stocker toutes les infos dans un tableau // Une ligne du CSV pour une entrée du tableau $data_tab = array(); //========================= // On lit une ligne pour passer la ligne d'entête: if($en_tete=="yes") { $ligne = fgets($fp, 4096); echo "A titre d'information, la ligne d'entête passée est la suivante :
$ligne
Si il ne s'agit pas d'une ligne d'entête, vous pouvez refaire cette étape.
Aucun fichier n'a été sélectionné !
\n";
echo "Cliquer ici pour recommencer !
Le fichier sélectionné n'est pas valide !
";
echo "Cliquer ici pour recommencer !