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 responsables des élèves"; 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; // Passer à 'y' pour afficher les requêtes $debug_resp='n'; 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_resp; // 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("responsables.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 "

Deuxième phase d'initialisation
Importation des responsables

\n"; echo "

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

\n"; //echo "\n"; //debug_var(); //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)) { if (old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT count(*) FROM $liste_tables_del[$j]"),0)!=0) { $flag=1; } $j++; } for($loop=0;$loopATTENTION ...
\n"; echo "Des données concernant les responsables sont actuellement présentes dans la base GEPI

\n"; echo "

Si vous poursuivez la procédure ces données seront effacées.

\n"; echo "

Les tables vidées seront : $chaine_tables

\n"; echo "
\n"; echo add_token_field(); echo "\n"; echo "\n"; echo "
\n"; $sql="SELECT 1=1 FROM utilisateurs WHERE statut='responsable';"; if($debug_resp=='y') {echo "$sql
";} $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)>0) { $sql="SELECT 1=1 FROM tempo_utilisateurs WHERE statut='responsable';"; if($debug_resp=='y') {echo "$sql
";} $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)==0) { echo "

Il existe un ou des comptes responsables 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 élèves (s'ils n'ont pas déjà été supprimés) et bien d'autres actions à ne pas oublier avant l'initialisation).

\n"; } } echo "


\n"; require("../lib/footer.inc.php"); 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) { $sql="DELETE FROM $liste_tables_del[$j];"; if($debug_resp=='y') {echo "$sql
";} $del=@mysqli_query($GLOBALS["mysqli"], $sql); } $j++; } // Ménage infos_actions: $sql="SELECT * FROM infos_actions WHERE titre LIKE 'Nouveau responsable%';"; //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 responsables."; $sql="DELETE FROM infos_actions WHERE titre LIKE 'Nouveau responsable%';"; $del = mysqli_query($GLOBALS["mysqli"], $sql); } // Suppression des comptes de responsables: $sql="DELETE FROM utilisateurs WHERE statut='responsable';"; //echo "$sql
"; if($debug_resp=='y') {echo "$sql
";} $del=mysqli_query($GLOBALS["mysqli"], $sql); } echo "

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

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

Veuillez fournir le fichier ResponsablesAvecAdresses.xml :
\n"; echo "
\n"; if ($gepiSettings['unzipped_max_filesize']>=0) { echo "

REMARQUE : Vous pouvez fournir à Gepi le fichier compressé issu directement de SCONET (Ex : ResponsablesAvecAdresses.zip).

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

\n"; echo "

\n"; echo "
\n"; } else { check_token(false); $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["responsables_xml_file"]) ? $_FILES["responsables_xml_file"] : NULL; /* echo "
";
				print_r($xml_file);
				echo "
"; */ 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 ou .ZIP 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."/responsables.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(); } 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(); } $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(); } else{ echo "

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

\n"; //$sql="CREATE TABLE IF NOT EXISTS temp_resp_pers_import ( $sql="CREATE TABLE IF NOT EXISTS resp_pers ( `pers_id` varchar(10) NOT NULL, `login` varchar(50) NOT NULL, `nom` varchar(30) NOT NULL, `prenom` varchar(30) NOT NULL, `civilite` varchar(5) NOT NULL, `tel_pers` varchar(255) NOT NULL, `tel_port` varchar(255) NOT NULL, `tel_prof` varchar(255) NOT NULL, `mel` varchar(100) NOT NULL, `adr_id` varchar(10) NOT NULL, PRIMARY KEY (`pers_id`) ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"; $create_table = mysqli_query($GLOBALS["mysqli"], $sql); //$sql="TRUNCATE TABLE temp_resp_pers_import;"; $sql="TRUNCATE TABLE resp_pers;"; $vide_table = mysqli_query($GLOBALS["mysqli"], $sql); /* // On va lire plusieurs fois le fichier pour remplir des tables temporaires. $fp=fopen($dest_file,"r"); if($fp){ echo "

Lecture du fichier Responsables...
\n"; //echo "

\n"; while(!feof($fp)){ $ligne[]=fgets($fp,4096); } fclose($fp); //echo "

Terminé.

\n"; } */ flush(); $resp_xml=simplexml_load_file($dest_file); if(!$resp_xml) { echo "

ECHEC du chargement du fichier avec simpleXML.

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

ERREUR: Le fichier XML fourni n'a pas l'air d'être un fichier XML Responsables.
Sa racine devrait être 'BEE_RESPONSABLES'.

Retour au choix du fichier.

\n"; require("../lib/footer.inc.php"); die(); } /* TEL_RNE 2011 22/05/2012 22/05/2012 08:09:38 ... */ $xml_uaj=""; $xml_horodatage=""; $objet_parametres=($resp_xml->PARAMETRES); foreach ($objet_parametres->children() as $key => $value) { if($key=='ANNEE_SCOLAIRE') { //$annee_scolaire=$value; if(!preg_match("/^$value/", getSettingValue('gepiYear'))) { echo "

ATTENTION : L'année scolaire du fichier XML ($value) ne semble pas correspondre à l'année scolaire paramétrée dans Gepi (".getSettingValue('gepiYear').").
Auriez-vous récupéré un XML de l'année précédente ou de l'année prochaine (il arrive que l'on bascule dans Sconet en juin ou courant septembre) ?


\n"; //$nb_err++; } } elseif($key=='HORODATAGE') { $xml_horodatage=$value; } elseif($key=='UAJ') { $xml_uaj=$value; } } //saveSetting('ts_maj_sconet', strftime("%Y-%m-%d %H:%M:%S")); $texte_maj_sconet="

Fichier XML élève"; if($xml_uaj!="") {$texte_maj_sconet.=" ($xml_uaj)";} if($xml_horodatage!="") {$texte_maj_sconet.=" du $xml_horodatage";} $texte_maj_sconet.="

"; echo $texte_maj_sconet; //enregistre_log_maj_sconet($texte_maj_sconet); echo "

Analyse du fichier pour extraire les informations de la section PERSONNES...
\n"; $personnes=array(); $tab_champs_personne=array("NOM", "NOM_USAGE", "NOM_DE_FAMILLE", "PRENOM", "LC_CIVILITE", "TEL_PERSONNEL", "TEL_PORTABLE", "TEL_PROFESSIONNEL", "MEL", "ACCEPTE_SMS", "ADRESSE_ID", "CODE_PROFESSION", "COMMUNICATION_ADRESSE" ); // PARTIE // Compteur personnes: $i=-1; $objet_personnes=($resp_xml->DONNEES->PERSONNES); foreach ($objet_personnes->children() as $personne) { //echo("

Personne
"); $i++; $personnes[$i]=array(); foreach($personne->attributes() as $key => $value) { // //$personnes[$i][my_strtolower($key)]=trim($value); $personnes[$i][my_strtolower($key)]=trim(nettoyer_caracteres_nom($value, "an", " .@'-", "")); } foreach($personne->children() as $key => $value) { if(in_array(my_strtoupper($key),$tab_champs_personne)) { $personnes[$i][my_strtolower($key)]=nettoyer_caracteres_nom(preg_replace('/"/',' ',preg_replace("/'$/","",preg_replace("/^'/"," ",$value))), "an", " .@'_-", ""); } } if($debug_import=='y') { echo "

Tableau \$personnes[$i] :";
								print_r($personnes[$i]);
								echo "
"; } } $nb_err=0; $stat=0; $i=0; $nb_utilisateurs_responsables_restaures=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{ $sql="SELECT * FROM tempo_utilisateurs WHERE identifiant1='".$personnes[$i]["personne_id"]."' AND statut='responsable';"; if($debug_resp=='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); $sql="SELECT statut FROM utilisateurs WHERE login='".$lig_tmp_u->login."';"; $test_u=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test_u)>0) { $lig_test_u=mysqli_fetch_object($test_u); if($lig_test_u->statut!='responsable') { echo "ANOMALIE : Un compte d'utilisateur $lig_test_u->statut existait pour le login $lig_tmp_u->login mis en réserve pour ".$personnes[$i]["nom"]." ".$personnes[$i]["prenom"]." :
$sql
"; } else { echo "ATTENTION : Un compte d'utilisateur $lig_test_u->statut existe déjà pour le login $lig_tmp_u->login.
Est-ce le même que le responsable nouvellement créé ???
Un Nettoyage des tables serait peut-être bienvenu.
$sql
"; } } else { // On vérifie si le login existe déjà: $test_unicite = test_unique_login($lig_tmp_u->login, "y"); if ($test_unicite != 'yes') { echo "ATTENTION : Un compte d'utilisateur existe déjà pour le login $lig_tmp_u->login mis en réserve pour ".$personnes[$i]["nom"]." ".$personnes[$i]["prenom"].".
"; } else { $sql="INSERT INTO utilisateurs SET login='".$lig_tmp_u->login."', nom='".mysqli_real_escape_string($GLOBALS["mysqli"], $personnes[$i]["nom"])."', prenom='".mysqli_real_escape_string($GLOBALS["mysqli"], $personnes[$i]["prenom"])."', "; if(isset($personnes[$i]["lc_civilite"])){ $sql.="civilite='".casse_mot($personnes[$i]["lc_civilite"],'majf2')."', "; } $sql.="password='".$lig_tmp_u->password."', salt='".$lig_tmp_u->salt."', email='".mysqli_real_escape_string($GLOBALS["mysqli"], $lig_tmp_u->email)."', statut='responsable', etat='inactif', change_mdp='n', auth_mode='".$lig_tmp_u->auth_mode."';"; if($debug_resp=='y') {echo "$sql
";} $insert_u=mysqli_query($GLOBALS["mysqli"], $sql); if(!$insert_u) { echo "Erreur lors de la création du compte utilisateur pour ".$personnes[$i]["nom"]." ".$personnes[$i]["prenom"]." :
$sql
"; } else { $nb_utilisateurs_responsables_restaures++; $sql="UPDATE resp_pers SET login='".$lig_tmp_u->login."' WHERE pers_id='".$personnes[$i]["personne_id"]."';"; if($debug_resp=='y') {echo "$sql
";} $update_rp=mysqli_query($GLOBALS["mysqli"], $sql); $sql="UPDATE tempo_utilisateurs SET temoin='recree' WHERE identifiant1='".$personnes[$i]["personne_id"]."' AND statut='responsable';"; if($debug_resp=='y') {echo "$sql
";} $update_tmp_u=mysqli_query($GLOBALS["mysqli"], $sql); } } } } $stat++; } $i++; } if ($nb_err != 0) { echo "

Lors de l'enregistrement des données PERSONNES, il y a eu $nb_err erreurs. Essayez de trouvez la cause de l'erreur et recommencez la procédure avant de passer à l'étape suivante.

\n"; } else { echo "

L'importation des personnes (responsables) dans la base GEPI a été effectuée avec succès (".$stat." enregistrements au total).

\n"; } if($nb_utilisateurs_responsables_restaures>0) { echo "

$nb_utilisateurs_responsables_restaures compte(s) d'utilisateur(s) responsable(s) a(ont) été restauré(s) (avec leur(s) mot(s) de passe), mais ils sont actuellement inactifs.
Lorsque vous voudrez rouvrir l'accès responsable, vous devrez activer les comptes responsables dans Gestion des bases/Comptes utilisateurs/Responsables.

\n"; } //echo "

$stat enregistrement(s) ont été inséré(s) dans la table 'temp_resp_pers_import'.

\n"; //echo "

$stat enregistrement(s) ont été inséré(s) dans la table 'resp_pers'.

\n"; echo "

Suite

\n"; require("../lib/footer.inc.php"); die(); } } } // Fin du $step=0 elseif($step==1) { check_token(false); $dest_file="../temp/".$tempdir."/responsables.xml"; $resp_xml=simplexml_load_file($dest_file); if(!$resp_xml) { echo "

ECHEC du chargement du fichier avec simpleXML.

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

ERREUR: Le fichier XML fourni n'a pas l'air d'être un fichier XML Responsables.
Sa racine devrait être 'BEE_RESPONSABLES'.

\n"; require("../lib/footer.inc.php"); die(); } //$sql="CREATE TABLE IF NOT EXISTS temp_responsables2_import ( $sql="CREATE TABLE IF NOT EXISTS responsables2 ( `ele_id` varchar(10) NOT NULL, `pers_id` varchar(10) NOT NULL, `resp_legal` varchar(1) NOT NULL, `pers_contact` varchar(1) NOT NULL ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"; $create_table = mysqli_query($GLOBALS["mysqli"], $sql); //$sql="TRUNCATE TABLE temp_responsables2_import;"; $sql="TRUNCATE TABLE responsables2;"; $vide_table = mysqli_query($GLOBALS["mysqli"], $sql); flush(); echo "

"; echo "Analyse du fichier pour extraire les informations de la section RESPONSABLES...
\n"; $responsables=array(); $tab_champs_responsable=array("ELEVE_ID", "PERSONNE_ID", "RESP_LEGAL", "CODE_PARENTE", "RESP_FINANCIER", "PERS_PAIMENT", "PERS_CONTACT" ); // PARTIE // Compteur responsables: $i=-1; $objet_resp=($resp_xml->DONNEES->RESPONSABLES); foreach ($objet_resp->children() as $responsable_eleve) { //echo("

Personne
"); $i++; $responsables[$i]=array(); foreach($responsable_eleve->children() as $key => $value) { if(in_array(my_strtoupper($key),$tab_champs_responsable)) { //$responsables[$i][my_strtolower($key)]=nettoyer_caracteres_nom(preg_replace('/"/',' ',preg_replace("/'/"," ",$value)), "an", " .@'-", ""); $responsables[$i][my_strtolower($key)]=preg_replace('/[^0-9]/', '', $value); } } if($debug_import=='y') { echo "

Tableau \$responsables[$i] :";
						print_r($responsables[$i]);
						echo "
"; } } $nb_err=0; $stat=0; $i=0; while($i\n"); $res_test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_test)==0){ //$sql="INSERT INTO temp_responsables2_import SET "; $sql="INSERT INTO responsables2 SET "; $sql.="ele_id='".$responsables[$i]["eleve_id"]."', "; $sql.="pers_id='".$responsables[$i]["personne_id"]."', "; $sql.="resp_legal='".$responsables[$i]["resp_legal"]."', "; $sql.="pers_contact='".$responsables[$i]["pers_contact"]."';"; affiche_debug("$sql
\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++; } } else { $sql="SELECT nom, prenom FROM eleves WHERE ele_id='".$responsables[$i]["eleve_id"]."';"; affiche_debug("$sql
\n"); $res_ele_anomalie=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_ele_anomalie)>0){ $lig_ele_anomalie=mysqli_fetch_object($res_ele_anomalie); echo "

Anomalie sconet: Plusieurs responsables légaux n°".$responsables[$i]["resp_legal"]." sont déclarés pour l'élève ".$lig_ele_anomalie->prenom." ".$lig_ele_anomalie->nom."
Seule la première responsabilité a été enregistrée.
Vous devriez faire le ménage dans Sconet et faire une mise à jour par la suite.

\n"; $nb_err++; } else { $sql="SELECT ELENOM, ELEPRE, DIVCOD FROM temp_gep_import2 WHERE ELE_ID='".$responsables[$i]["eleve_id"]."';"; affiche_debug("$sql
\n"); $res_ele_anomalie=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_ele_anomalie)>0){ // Si l'élève associé n'est ni dans 'eleves', ni dans 'temp_gep_import2', on ne s'en occupe pas. $sql="SELECT civilite,nom,prenom FROM temp_resp_pers_import WHERE pers_id='".$responsables[$i]["personne_id"]."';"; $res_resp_anomalie=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_resp_anomalie)>0){ $lig_resp_anomalie=mysqli_fetch_object($res_resp_anomalie); echo "

Anomalie sconet: Plusieurs responsables légaux n°".$responsables[$i]["resp_legal"]." sont déclarés pour l'élève ".$lig_ele_anomalie->ELEPRE." ".$lig_ele_anomalie->ELENOM." (".$lig_ele_anomalie->DIVCOD.").
L'un d'eux est: ".$lig_resp_anomalie->civilite." ".$lig_resp_anomalie->nom." ".$lig_resp_anomalie->prenom."

\n"; } else { echo "

Anomalie sconet: Plusieurs responsables légaux n°".$responsables[$i]["resp_legal"]." sont déclarés pour l'élève ".$lig_ele_anomalie->ELEPRE." ".$lig_ele_anomalie->ELENOM." (".$lig_ele_anomalie->DIVCOD.")
L'élève n'a semble-t-il pas été ajouté à la table 'eleves'.
Par ailleurs, la personne responsable semble inexistante, mais l'association avec l'identifiant de responsable n°".$responsables[$i]["personne_id"]." existe dans le XML fourni???
L'anomalie n'est pas grave pour Gepi; par contre il serait bon de corriger dans Sconet.

\n"; } $nb_err++; } } //$nb_err++; } $i++; } $sql="SELECT r.pers_id,r.ele_id FROM responsables2 r LEFT JOIN eleves e ON e.ele_id=r.ele_id WHERE e.ele_id is NULL;"; $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)>0){ echo "

Suppression de responsabilités sans élève.\n"; flush(); $cpt_nett=0; while($lig_nett=mysqli_fetch_object($test)){ //if($cpt_nett>0){echo ", ";} //echo "".$lig_nett->pers_id.""; $sql="DELETE FROM responsables2 WHERE pers_id='$lig_nett->pers_id' AND ele_id='$lig_nett->ele_id';"; $nettoyage=mysqli_query($GLOBALS["mysqli"], $sql); //flush(); $cpt_nett++; } //echo ".

\n"; echo "
$cpt_nett associations aberrantes supprimées.

\n"; } if ($nb_err!=0) { echo "

Lors de l'enregistrement des données de RESPONSABLES, il y a eu $nb_err erreurs. Essayez de trouvez la cause de l'erreur et recommencez la procédure avant de passer à l'étape suivante.

\n"; } else { echo "

L'importation des relations eleves/responsables dans la base GEPI a été effectuée avec succès (".$stat." enregistrements au total).

\n"; } //echo "

$stat enregistrement(s) ont été inséré(s) dans la table 'temp_responsables2_import'.

\n"; echo "

Suite

\n"; require("../lib/footer.inc.php"); die(); } // Fin du $step=1 elseif($step==2){ check_token(false); $dest_file="../temp/".$tempdir."/responsables.xml"; $resp_xml=simplexml_load_file($dest_file); if(!$resp_xml) { echo "

ECHEC du chargement du fichier avec simpleXML.

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

ERREUR: Le fichier XML fourni n'a pas l'air d'être un fichier XML Responsables.
Sa racine devrait être 'BEE_RESPONSABLES'.

\n"; require("../lib/footer.inc.php"); die(); } $sql="CREATE TABLE IF NOT EXISTS resp_adr ( `adr_id` varchar(10) NOT NULL, `adr1` varchar(100) NOT NULL, `adr2` varchar(100) NOT NULL, `adr3` varchar(100) NOT NULL, `adr4` varchar(100) NOT NULL, `cp` varchar(6) NOT NULL, `pays` varchar(50) NOT NULL, `commune` varchar(50) NOT NULL, PRIMARY KEY (`adr_id`) ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"; $create_table = mysqli_query($GLOBALS["mysqli"], $sql); //$sql="TRUNCATE TABLE temp_resp_adr_import;"; $sql="TRUNCATE TABLE resp_adr;"; $vide_table = mysqli_query($GLOBALS["mysqli"], $sql); flush(); echo "Analyse du fichier pour extraire les informations de la section ADRESSES...
\n"; $adresses=array(); $tab_champs_adresse=array("LIGNE1_ADRESSE", "LIGNE2_ADRESSE", "LIGNE3_ADRESSE", "LIGNE4_ADRESSE", "CODE_POSTAL", "LL_PAYS", "CODE_DEPARTEMENT", "LIBELLE_POSTAL", "COMMUNE_ETRANGERE" ); // PARTIE // Compteur adresses: $i=-1; $objet_adresses=($resp_xml->DONNEES->ADRESSES); foreach ($objet_adresses->children() as $adresse) { //echo("

Adresse
"); $i++; $adresses[$i]=array(); foreach($adresse->attributes() as $key => $value) { // $adresses[$i][my_strtolower($key)]=trim($value); } foreach($adresse->children() as $key => $value) { if(in_array(my_strtoupper($key),$tab_champs_adresse)) { //$adresses[$i][my_strtolower($key)]=nettoyer_caracteres_nom(preg_replace('/"/',' ',preg_replace("/'$/","",preg_replace("/^'/"," ",$value))), "an", " .'-", " "); $adresses[$i][my_strtolower($key)]=nettoyer_caracteres_nom(preg_replace("/'$/","",preg_replace("/^'/"," ",$value)), "an", " .'-", " "); } } if($debug_import=='y') { echo "

Tableau \$adresses[$i] :";
						print_r($adresses[$i]);
						echo "
"; } } $nb_err=0; $stat=0; $i=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++; } if ($nb_err != 0) { echo "

Lors de l'enregistrement des données ADRESSES des responsables, il y a eu $nb_err erreurs. Essayez de trouvez la cause de l'erreur et recommencez la procédure avant de passer à l'étape suivante.

\n"; } else { echo "

L'importation des adresses de responsables dans la base GEPI a été effectuée avec succès (".$stat." enregistrements au total).

\n"; } //echo "

$stat enregistrement(s) ont été mis à jour dans la table 'temp_resp_adr_import'.

\n"; echo "

Suite

\n"; require("../lib/footer.inc.php"); die(); } else{ check_token(false); // TERMINé? // A LA DERNIERE ETAPE, IL FAUT SUPPRIMER LE FICHIER "../temp/".$tempdir."/responsables.xml" if(file_exists("../temp/".$tempdir."/responsables.xml")) { echo "

Suppression de responsables.xml... "; if(unlink("../temp/".$tempdir."/responsables.xml")){ echo "réussie.

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

\n"; } } echo "

Procéder à la troisième phase.

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