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(); } //**************** EN-TETE ***************** $titre_page = "Outil d'initialisation de l'année : Importation des matières"; require_once("../lib/header.inc.php"); //**************** FIN EN-TETE ***************** require_once("init_xml_lib.php"); // Etape... $step=isset($_POST['step']) ? $_POST['step'] : (isset($_GET['step']) ? $_GET['step'] : NULL); $verif_tables_non_vides=isset($_POST['verif_tables_non_vides']) ? $_POST['verif_tables_non_vides'] : NULL; if(isset($_GET['ad_retour'])){ $_SESSION['ad_retour']=$_GET['ad_retour']; } //echo "\$_SESSION['ad_retour']=".$_SESSION['ad_retour']."
"; include("../lib/initialisation_annee.inc.php"); $liste_tables_del = $liste_tables_del_etape_matieres; // On va uploader les fichiers XML dans le tempdir de l'utilisateur (administrateur, ou scolarité pour les màj Sconet) $tempdir=get_user_temp_directory(); if(!$tempdir){ echo "

Il semble que le dossier temporaire de l'utilisateur ".$_SESSION['login']." ne soit pas défini!?

\n"; // Il ne faut pas aller plus loin... // SITUATION A GERER } // ======================================================= // EST-CE ENCORE UTILE? if(isset($_GET['nettoyage'])){ check_token(false); //echo "

Suppression des CSV

\n"; echo "

Suppression des XML

\n"; echo "

Retour Retour"; echo " | Autre import

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

Si des fichiers XML existent, ils seront supprimés...

\n"; //$tabfich=array("f_ele.csv","f_ere.csv"); $tabfich=array("sts.xml","nomenclature.xml"); for($i=0;$iSuppression de $tabfich[$i]... "; if(unlink("../temp/".$tempdir."/$tabfich[$i]")){ echo "réussie.

\n"; } else{ echo "Echec! Vérifiez les droits d'écriture sur le serveur.

\n"; } } } require("../lib/footer.inc.php"); die(); } // ======================================================= else{ echo "

Importation des matières

\n"; //echo "

Préparation des données élèves/classes/périodes/options

\n"; echo "

Retour Retour"; //echo " | Autre import"; echo " | Suppression des fichiers XML existants"; echo "

\n"; //echo "\n"; //if(!isset($_POST['is_posted'])){ if(!isset($step)){ if(!isset($verif_tables_non_vides)) { $j=0; $flag=0; $chaine_tables=""; while (($j < count($liste_tables_del)) and ($flag==0)) { $sql="SELECT 1=1 FROM $liste_tables_del[$j];"; //echo "$sql
"; $test_del=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test_del)>0) { if (old_mysql_result($test_del,0)!=0) { $flag=1; } } $j++; } for($loop=0;$loopATTENTION ...
\n"; echo "Des données concernant les matières sont actuellement présentes dans la base GEPI

\n"; echo "

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

\n"; echo "

Seules la table contenant les matières et la table mettant en relation les matières et les professeurs seront conservées.

\n"; echo "

Les tables vidées seront : $chaine_tables

\n"; echo "
\n"; echo add_token_field(); echo "\n"; echo "\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; die(); } } if(isset($verif_tables_non_vides)) { check_token(false); $j=0; while ($j < count($liste_tables_del)) { 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++; } } echo "

ATTENTION ...
Vous ne devez procéder à cette opération que si la constitution des classes a été effectuée !

\n"; echo "

Cette page permet d'uploader un fichier qui servira à remplir les tables de GEPI avec les informations professeurs, matières,...

\n"; echo "

Il faut lui fournir un Export XML réalisé depuis l'application STS-web.
Demandez gentiment à votre secrétaire d'accéder à STS-web et d'effectuer 'Mise à jour/Exports/Emplois du temps'.

\n"; echo "
\n"; echo "
\n"; echo add_token_field(); echo "

Veuillez fournir le fichier XML sts_emp_RNE_ANNEE.xml : \n"; echo "

\n"; echo "

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

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

\n"; echo "

\n"; echo "
\n"; } else{ check_token(false); // Ménage sur l'ordre des groupes dans l'affichage simplifié prof: // Sinon, on peut se retrouver avec des rangs aberrants liés à des groupes qui n'existent plus dans la table groupes. $sql="DELETE FROM preferences WHERE name LIKE 'accueil_simpl_id_groupe_order_%';"; $del=mysqli_query($GLOBALS["mysqli"], $sql); $sql="DELETE FROM preferences WHERE name LIKE 'edt2_couleur_grp_%';"; $del=mysqli_query($GLOBALS["mysqli"], $sql); $post_max_size=ini_get('post_max_size'); $upload_max_filesize=ini_get('upload_max_filesize'); $max_execution_time=ini_get('max_execution_time'); $memory_limit=ini_get('memory_limit'); if($step==0){ $xml_file=isset($_FILES["xml_file"]) ? $_FILES["xml_file"] : NULL; if(!is_uploaded_file($xml_file['tmp_name'])) { echo "

L'upload du fichier a échoué.

\n"; echo "

Les variables du php.ini peuvent peut-être expliquer le problème:
\n"; echo "post_max_size=$post_max_size
\n"; echo "upload_max_filesize=$upload_max_filesize
\n"; echo "

\n"; // Il ne faut pas aller plus loin... // SITUATION A GERER require("../lib/footer.inc.php"); die(); } else{ if(!file_exists($xml_file['tmp_name'])){ echo "

Le fichier aurait été uploadé... mais ne serait pas présent/conservé.

\n"; echo "

Les variables du php.ini peuvent peut-être expliquer le problème:
\n"; echo "post_max_size=$post_max_size
\n"; echo "upload_max_filesize=$upload_max_filesize
\n"; echo "et le volume de ".$xml_file['name']." serait
\n"; echo "\$xml_file['size']=".volume_human($xml_file['size'])."
\n"; echo "

\n"; echo "

Il semblerait que l'absence d'extension .XML puisse aussi provoquer ce genre de symptômes.
Dans ce cas, ajoutez l'extension et ré-essayez.

\n"; // Il ne faut pas aller plus loin... // SITUATION A GERER require("../lib/footer.inc.php"); die(); } echo "

Le fichier a été uploadé.

\n"; //$source_file=stripslashes($xml_file['tmp_name']); $source_file=$xml_file['tmp_name']; $dest_file="../temp/".$tempdir."/sts.xml"; $res_copy=copy("$source_file" , "$dest_file"); if(!$res_copy){ echo "

La copie du fichier vers le dossier temporaire a échoué.
Vérifiez que l'utilisateur ou le groupe apache ou www-data a accès au dossier temp/$tempdir

\n"; // Il ne faut pas aller plus loin... // SITUATION A GERER require("../lib/footer.inc.php"); die(); } else{ echo "

La copie du fichier vers le dossier temporaire a réussi.

\n"; // Table destinée à stocker l'association code/code_gestion utilisée dans d'autres parties de l'initialisation $sql="CREATE TABLE IF NOT EXISTS temp_matieres_import ( code varchar(40) NOT NULL default '', code_gestion varchar(40) NOT NULL default '', libelle_court varchar(40) NOT NULL default '', libelle_long varchar(255) NOT NULL default '', libelle_edition varchar(255) NOT NULL default '' ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"; $create_table = mysqli_query($GLOBALS["mysqli"], $sql); $sql="TRUNCATE TABLE temp_matieres_import;"; $vide_table = mysqli_query($GLOBALS["mysqli"], $sql); flush(); $sts_xml=simplexml_load_file($dest_file); if(!$sts_xml) { echo "

ECHEC du chargement du fichier avec simpleXML.

\n"; require("../lib/footer.inc.php"); die(); } $nom_racine=$sts_xml->getName(); if(my_strtoupper($nom_racine)!='STS_EDT') { echo "

ERREUR : Le fichier XML fourni n'a pas l'air d'être un fichier XML STS_EMP_<RNE>_<ANNEE>.
Sa racine devrait être 'STS_EDT'.

\n"; if(my_strtoupper($nom_racine)=='EDT_STS') { echo "

Vous vous êtes trompé d'export.
Vous avez probablement utilisé un export de votre logiciel EDT d'Index Education, au lieu de l'export XML provenant de STS.

\n"; } require("../lib/footer.inc.php"); die(); } // On commence par la section MATIERES. echo "Analyse du fichier pour extraire les informations de la section MATIERES...
\n"; $tab_champs_matiere=array("CODE_GESTION", "LIBELLE_COURT", "LIBELLE_LONG", "LIBELLE_EDITION"); $matiere=array(); // Compteur matieres: $i=0; foreach($sts_xml->NOMENCLATURES->MATIERES->children() as $objet_matiere) { foreach($objet_matiere->attributes() as $key => $value) { // $matiere[$i][my_strtolower($key)]=trim($value); } // Champs de la matière foreach($objet_matiere->children() as $key => $value) { if(in_array(my_strtoupper($key),$tab_champs_matiere)) { if(my_strtoupper($key)=='CODE_GESTION') { $matiere[$i][my_strtolower($key)]=nettoyer_caracteres_nom(remplace_accents($value),"an","&_. -",""); } elseif(my_strtoupper($key)=='LIBELLE_COURT') { $matiere[$i][my_strtolower($key)]=trim(preg_replace("/'/"," ",preg_replace('/"/',' ',nettoyer_caracteres_nom($value, "an", " .'_&-", "")))); } else { $matiere[$i][my_strtolower($key)]=trim(preg_replace('/"/',' ',nettoyer_caracteres_nom($value, "an", " .'_&-", ""))); } } } if($debug_import=='y') { echo "
Tableau \$adresses[$i] :";
								print_r($matiere[$i]);
								echo "
"; } $i++; } $i=0; $nb_err=0; $stat=0; while($i\n"); $res_insert=mysqli_query($GLOBALS["mysqli"], $sql); if(!$res_insert){ echo "Erreur lors de la requête $sql
\n"; flush(); $nb_err++; } else{ $stat++; } $i++; } echo "

Dans le tableau ci-dessous, les identifiants en rouge correspondent à des nouvelles matières dans la base GEPI. les identifiants en vert correspondent à des identifiants de matières détectés dans le fichier GEP mais déjà présents dans la base GEPI.

Il est possible que certaines matières ci-dessous, bien que figurant dans le fichier CSV, ne soient pas utilisées dans votre établissement cette année. C'est pourquoi il vous sera proposé en fin de procédure d'initialisation, un nettoyage de la base afin de supprimer ces données inutiles.

\n"; echo "\n"; echo "\n"; $i=0; //$nb_err=0; $nb_reg_no=0; //$stat=0; $tab_champs_matiere=array("CODE_MATIERE", "CODE_GESTION", "LIBELLE_COURT", "LIBELLE_LONG", "LIBELLE_EDITION", "MATIERE_ETP" ); $alt=1; while($i".mysqli_error($GLOBALS["mysqli"])."
\n"; } else { $alt=$alt*(-1); echo "
\n"; echo "\n"; $sql="SELECT 1=1 FROM nomenclatures WHERE type='matiere' AND code='".$matiere[$i]['code']."';"; $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)==0) { $sql="INSERT INTO nomenclatures SET code='".$matiere[$i]['code']."', type='matiere';"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); if($insert) { foreach($tab_champs_matiere as $key => $value) { $tmp_value=strtolower($value); if(isset($matiere[$i][$tmp_value])) { $sql="INSERT INTO nomenclatures_valeurs SET type='matiere', code='".$matiere[$i]['code']."', nom='".mysqli_real_escape_string($GLOBALS["mysqli"], $tmp_value)."', valeur='".mysqli_real_escape_string($GLOBALS["mysqli"], $matiere[$i][$tmp_value])."';"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); } } } } } } else { $nom_complet = old_mysql_result($verif,0,'nom_complet'); $alt=$alt*(-1); echo "\n"; echo "\n"; } $i++; } echo "

Identifiant de la matière

Nom complet

".$matiere[$i]['code_gestion']."

".htmlspecialchars($matiere[$i]['libelle_court'])."

".$matiere[$i]['code_gestion']."

".htmlspecialchars($nom_complet)."

\n"; // Importation des MEF $divisions=array(); $tab_mef_code=array(); $i=0; foreach($sts_xml->DONNEES->STRUCTURE->DIVISIONS->children() as $objet_division) { $divisions[$i]=array(); foreach($objet_division->attributes() as $key => $value) { if(my_strtoupper($key)=='CODE') { $divisions[$i]['code']=preg_replace("/'/","",preg_replace('/"/','',trim($value))); //echo "

\$divisions[$i]['code']=".$divisions[$i]['code']."
"; break; } } // Champs de la division foreach($objet_division->MEFS_APPARTENANCE->children() as $mef_appartenance) { foreach($mef_appartenance->attributes() as $key => $value) { // Normalement, on ne devrait faire qu'un tour: $divisions[$i]["mef_code"][]=trim($value); $tab_mef_code[]=trim($value); //echo "\$divisions[$i][\"mef_code\"][]=trim(traite_utf8($value))
"; } } $i++; } /* // Il peut y avoir plusieurs MEF associées à une classe (3EME et 3EME BILANGUE par exemple) et chaque élève est associé à un(e) des ces MEFS for($i=0;$i"; $update_mef=mysql_query($sql); } } */ $tab_champs_mef=array("LIBELLE_COURT", "LIBELLE_LONG", "LIBELLE_EDITION"); $mefs=array(); $i=0; foreach($sts_xml->NOMENCLATURES->MEFS->children() as $objet_mef) { $mefs[$i]=array(); foreach($objet_mef->attributes() as $key => $value) { if(my_strtoupper($key)=='CODE') { $mefs[$i]['code']=preg_replace('/"/','',preg_replace("/'/","",trim($value))); break; } } if(in_array($mefs[$i]['code'],$tab_mef_code)) { // Champs MEF foreach($objet_mef->children() as $key => $value) { if(in_array(my_strtoupper($key),$tab_champs_mef)) { $mefs[$i][my_strtolower($key)]=trim(preg_replace('/"/','',preg_replace("/'/","",nettoyer_caracteres_nom($value, "an", " .'_&-", "")))); } } $i++; } } for($i=0;$i0) { $sql="UPDATE mef SET "; if(isset($mefs[$i]["libelle_court"])) { $sql.=" libelle_court='".mysqli_real_escape_string($GLOBALS["mysqli"], $mefs[$i]["libelle_court"])."',"; } //elseif(isset($mefs[$i]["libelle_long"])) {$sql.=" libelle_court='".$mefs[$i]["libelle_long"]."',";} else { $sql.=" libelle_court='',"; } if(isset($mefs[$i]["libelle_long"])) {$sql.=" libelle_long='".mysqli_real_escape_string($GLOBALS["mysqli"], $mefs[$i]["libelle_long"])."',";} if(isset($mefs[$i]["libelle_edition"])) {$sql.=" libelle_edition='".mysqli_real_escape_string($GLOBALS["mysqli"], $mefs[$i]["libelle_edition"])."',";} $sql.=" mef_code='".$mefs[$i]["code"]."' WHERE mef_code='".$mefs[$i]["code"]."';"; //echo "$sql
"; $update_mef=mysqli_query($GLOBALS["mysqli"], $sql); } else{ $sql="INSERT INTO mef SET "; //if(isset($mefs[$i]["libelle_court"])) {$sql.=" libelle_court='".$mefs[$i]["libelle_court"]."',";} elseif(isset($mefs[$i]["libelle_long"])) {$sql.=" libelle_court='".$mefs[$i]["libelle_long"]."',";} if(isset($mefs[$i]["libelle_court"])) { $sql.=" libelle_court='".mysqli_real_escape_string($GLOBALS["mysqli"], $mefs[$i]["libelle_court"])."',"; } //elseif(isset($mefs[$i]["libelle_long"])) {$sql.=" libelle_court='".$mefs[$i]["libelle_long"]."',";} else { $sql.=" libelle_court='',"; } if(isset($mefs[$i]["libelle_long"])) {$sql.=" libelle_long='".mysqli_real_escape_string($GLOBALS["mysqli"], $mefs[$i]["libelle_long"])."',";} if(isset($mefs[$i]["libelle_edition"])) {$sql.=" libelle_edition='".mysqli_real_escape_string($GLOBALS["mysqli"], $mefs[$i]["libelle_edition"])."',";} $sql.=" mef_code='".$mefs[$i]["code"]."';"; //echo "$sql
"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); } } 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 matières dans la base GEPI a été effectuée avec succès !
Vous pouvez procéder à la quatrième phase d'importation des professeurs.

"; } //echo "

Importation des professeurs

"; //echo "

Importation des professeurs

\n"; echo "

Importation des professeurs

\n"; echo "


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