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(); } $debug_import="n"; //**************** EN-TETE ***************** $titre_page = "XML de SCONET: Génération de CSV"; require_once("../lib/header.inc.php"); //**************** FIN EN-TETE ***************** function extr_valeur($lig){ unset($tabtmp); $tabtmp=explode(">",preg_replace("/",$lig)); return trim($tabtmp[2]); } ?>
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 } // Pour importer séparemment les ElevesAvecAdresses.xml, Nomenclature.xml et d'autre part le Responsables.xml, // une variable: $etape=isset($_POST['etape']) ? $_POST['etape'] : (isset($_GET['etape']) ? $_GET['etape'] : NULL); // Il y a un problème de volume des données transférées si on envoye tout d'un coup. if(isset($_GET['ad_retour'])){ $_SESSION['ad_retour']=$_GET['ad_retour']; } //echo "\$_SESSION['ad_retour']=".$_SESSION['ad_retour']."
"; unset($remarques); $remarques=array(); // Initialisation du répertoire actuel de sauvegarde $dirname = getSettingValue("backup_directory"); //$dirname="tmp"; if(!file_exists("../backup/$dirname/csv")){ //if(!mkdir("../backup/$dirname/csv","0770")){ if(!mkdir("../backup/$dirname/csv")){ echo "

Erreur! Le dossier csv n'a pas pu être créé.

\n"; echo "

Retour à l'index

\n"; echo "
\n"; die(); } } if(!file_exists("../backup/$dirname/csv/index.html")){ $fich=fopen("../backup/$dirname/csv/index.html","w+"); fwrite($fich,''); fclose($fich); } if(isset($_GET['nettoyage'])){ check_token(false); //echo "

Suppression des CSV

\n"; echo "

Suppression des CSV

\n"; echo "

Retour Retour"; echo " | Autre import

\n"; echo "

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

\n"; //$tabfich=array("f_ele.csv","f_ere.csv"); $tabfich=array("eleves.csv","etablissements.csv","eleve_etablissement.csv","adresses.csv","personnes.csv","responsables.csv"); for($i=0;$iSuppression de $tabfich[$i]... "; if(unlink("../backup/$dirname/csv/$tabfich[$i]")){ echo "réussie.

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

\n"; } } } } else{ //echo "

Lecture des XML de Sconet et génération de CSV

\n"; echo "

Lecture des XML de Sconet et génération de CSV

\n"; //echo "

Retour|\n"; echo "

Retour Retour"; if(!isset($etape)){ echo "

\n"; echo "

Pour éviter des problèmes de taille maximale des upload, les extractions se font en deux étapes.

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

\n"; echo "

Les fichiers réclamés ici doivent être récupérés depuis Sconet.
Demandez gentiment à votre secrétaire de se rendre dans 'Sconet/Accès Base élèves mode normal/Exploitation/Exports standard/Exports XML génériques' pour récupérer les fichiers ElevesAvecAdresses.xml, Nomenclature.xml et ResponsablesAvecAdresses.xml.

\n"; echo "
\n"; } else { echo " | Autre import

\n"; check_token(false); if(!isset($_POST['is_posted'])) { //echo "

Cette page permet de remplir des tableaux PHP avec les informations élèves, responsables,...
\n"; echo "

Cette page permet de remplir des tables temporaires avec les informations élèves, responsables,...
\n"; echo "

\n"; echo "
\n"; echo add_token_field(); if($etape==1){ echo "

Veuillez fournir le fichier ElevesAvecAdresses.xml (ou ElevesSansAdresses.xml):
\n"; echo "
\n"; echo "Veuillez fournir le fichier Nomenclature.xml:
\n"; echo "
\n"; } else{ echo "

Veuillez fournir le fichier ResponsablesAvecAdresses.xml:
\n"; echo "
\n"; } echo "\n"; echo "\n"; echo "

\n"; echo "

\n"; echo "
\n"; } else { $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($etape==1) { $xml_file = isset($_FILES["eleves_xml_file"]) ? $_FILES["eleves_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(); } 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"; // 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=$xml_file['tmp_name']; $dest_file="../temp/".$tempdir."/eleves.xml"; $res_copy=copy("$source_file" , "$dest_file"); //=============================================================== // ajout prise en compte des fichiers ZIP: Marc Leygnac $unzipped_max_filesize=getSettingValue('unzipped_max_filesize')*1024*1024; // $unzipped_max_filesize = 0 pas de limite de taille pour les fichiers extraits // $unzipped_max_filesize < 0 extraction zip désactivée if($unzipped_max_filesize>=0) { $fichier_emis=$xml_file['name']; $extension_fichier_emis=my_strtolower(mb_strrchr($fichier_emis,".")); if (($extension_fichier_emis==".zip")||($xml_file['type']=="application/zip")) { require_once('../lib/pclzip.lib.php'); $archive = new PclZip($dest_file); if (($list_file_zip = $archive->listContent()) == 0) { echo "

Erreur : ".$archive->errorInfo(true)."

\n"; require("../lib/footer.inc.php"); die(); } if(sizeof($list_file_zip)!=1) { echo "

Erreur : L'archive contient plus d'un fichier.

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

\$list_file_zip[0]['filename']=".$list_file_zip[0]['filename']."
\n"; echo "\$list_file_zip[0]['size']=".$list_file_zip[0]['size']."
\n"; echo "\$list_file_zip[0]['compressed_size']=".$list_file_zip[0]['compressed_size']."

\n"; */ //echo "

\$unzipped_max_filesize=".$unzipped_max_filesize."

\n"; if(($list_file_zip[0]['size']>$unzipped_max_filesize)&&($unzipped_max_filesize>0)) { echo "

Erreur : La taille du fichier extrait (".$list_file_zip[0]['size']." octets) dépasse la limite paramétrée ($unzipped_max_filesize octets).

\n"; require("../lib/footer.inc.php"); die(); } //unlink("$dest_file"); // Pour Wamp... $res_extract=$archive->extract(PCLZIP_OPT_PATH, "../temp/".$tempdir); if ($res_extract != 0) { echo "

Le fichier uploadé a été dézippé.

\n"; $fichier_extrait=$res_extract[0]['filename']; unlink("$dest_file"); // Pour Wamp... $res_copy=rename("$fichier_extrait" , "$dest_file"); } else { echo "

Echec de l'extraction de l'archive ZIP.

\n"; require("../lib/footer.inc.php"); die(); } } } //fin ajout prise en compte des fichiers ZIP //=============================================================== 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(); } echo "

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

\n"; $ele_xml=simplexml_load_file($dest_file); if(!$ele_xml) { echo "

ECHEC du chargement du fichier avec simpleXML.

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

ERREUR: Le fichier XML fourni n'a pas l'air d'être un fichier XML Elèves.
Sa racine devrait être 'BEE_ELEVES'.

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

\n"; echo "Analyse du fichier pour extraire les informations de la section STRUCTURES pour ne conserver que les identifiants d'élèves affectés dans une classe...
\n"; $tab_champs_struct=array("CODE_STRUCTURE","TYPE_STRUCTURE"); $tab_ele_id=array(); $i=-1; $objet_structures=($ele_xml->DONNEES->STRUCTURES); foreach ($objet_structures->children() as $structures_eleve) { //echo("

Structure
"); $chaine_structures_eleve="STRUCTURES_ELEVE"; foreach($structures_eleve->attributes() as $key => $value) { //echo("$key=".$value."
"); if(my_strtoupper($key)=='ELEVE_ID') { // On teste si l'ELEVE_ID existe déjà: ça ne devrait pas arriver if(in_array($value,$tab_ele_id)) { echo "ANOMALIE : Il semble qu'il y a plusieurs sections STRUCTURES_ELEVE pour l'ELEVE_ID '$value'.
"; } else { $i++; $eleves[$i]=array(); $eleves[$i]['eleve_id']=$value; $eleves[$i]["structures"]=array(); $j=0; foreach($structures_eleve->children() as $structure) { $eleves[$i]["structures"][$j]=array(); foreach($structure->children() as $key => $value) { if(in_array(my_strtoupper($key),$tab_champs_struct)) { $eleves[$i]["structures"][$j][my_strtolower($key)]=preg_replace("/'/","",preg_replace('/"/','',trim($value))); } } $j++; } if($debug_import=='y') { echo "

Tableau \$eleves[$i] :";
												print_r($eleves[$i]);
												echo "
"; } } } } } if(!isset($eleves)) { echo "

Les classes d'affectation des élèves ne sont pas définies dans le fichier XML.
Votre secrétaire n'a pas encore remonté cette information dans Sconet... ou bien la remontée n'est pas encore prise en compte dans les XML.
Pendant un temps, la saisie n'était prise en compte dans les XML que le lendemain de la saisie.

\n"; require("../lib/footer.inc.php"); die(); } $nb_err=0; // $cpt: Identifiant id_tempo $id_tempo=1; for($i=0;$i0){ for($j=0;$jDONNEES->ELEVES); foreach ($objet_eleves->children() as $eleve) { //$i++; //$eleves[$i]=array(); $tmp_eleve_id=""; foreach($eleve->attributes() as $key => $value) { //$eleves[$i][my_strtolower($key)]=trim($value); if(my_strtolower($key)=='eleve_id') { $tmp_eleve_id=trim($value); } } if($tmp_eleve_id!="") { // Recherche du $i de $eleves[$i] correspondant: $temoin_ident="non"; for($i=0;$ichildren() as $key => $value) { if(in_array(my_strtoupper($key),$tab_champs_eleve)) { //$eleves[$i][my_strtolower($key)]=preg_replace('/"/','',trim($value)); //$eleves[$i][my_strtolower($key)]=preg_replace('/"/','',preg_replace("/'$/","",preg_replace("/^'/","",trim($value)))); $eleves[$i][my_strtolower($key)]=preg_replace('/"/','',preg_replace("/'/","",trim($value))); } if(($avec_scolarite_an_dernier=='y')&&(my_strtoupper($key)=='SCOLARITE_AN_DERNIER')) { $eleves[$i]["scolarite_an_dernier"]=array(); foreach($eleve->SCOLARITE_AN_DERNIER->children() as $key2 => $value2) { if(in_array(my_strtoupper($key2),$tab_champs_scol_an_dernier)) { $eleves[$i]["scolarite_an_dernier"][my_strtolower($key2)]=preg_replace('/"/','',trim($value2)); } } } } if(isset($eleves[$i]["date_naiss"])){ unset($naissance); $naissance=explode("/",$eleves[$i]["date_naiss"]); if(isset($naissance[2])){ $eleve_naissance_annee=$naissance[2]; } else{ $eleve_naissance_annee=""; } if(isset($naissance[1])){ $eleve_naissance_mois=$naissance[1]; } else{ $eleve_naissance_mois=""; } if(isset($naissance[0])){ $eleve_naissance_jour=$naissance[0]; } else{ $eleve_naissance_jour=""; } $eleves[$i]["date_naiss"]=$eleve_naissance_annee.$eleve_naissance_mois.$eleve_naissance_jour; } if($debug_import=='y') { echo "
Tableau \$eleves[$i] :";
											print_r($eleves[$i]);
											echo "
"; } } } } //=============================================================================== echo "

"; echo "Analyse du fichier pour extraire les informations de la section OPTIONS...
\n"; //echo "

\n"; $tab_champs_opt=array("NUM_OPTION","CODE_MODALITE_ELECT","CODE_MATIERE"); //$i=-1; // PARTIE $objet_options=($ele_xml->DONNEES->OPTIONS); foreach ($objet_options->children() as $option) { // $option est un