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(); } $sql="SELECT 1=1 FROM droits WHERE id='/mod_annees_anterieures/recuperation_donnees_manquantes.php';"; $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)==0) { $sql="INSERT INTO droits SET id='/mod_annees_anterieures/recuperation_donnees_manquantes.php', administrateur='V', professeur='F', cpe='F', scolarite='F', eleve='F', responsable='F', secours='F', autre='F', description='Ajax: Acces aux appreciations et avis des bulletins', statut='';"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); } if (!checkAccess()) { header("Location: ../logout.php?auto=1"); die(); } require_once("./fonctions_annees_anterieures.inc.php"); // Si le module n'est pas activé... if(!getSettingAOui('active_annees_anterieures')) { header("Location: ../logout.php?auto=1"); die(); } $msg=""; $step=isset($_POST['step']) ? $_POST['step'] : (isset($_GET['step']) ? $_GET['step'] : NULL); $debug_import="n"; //**************** EN-TETE ***************** $titre_page = "Récupération de données manquantes"; require_once("../lib/header.inc.php"); //**************** FIN EN-TETE ***************** echo "

Retour Retour

\n"; /* - Récup NUMIND et TYPE d'après sts_emp_RNE_ANNEE - Remplissage des champs NUMIND et TYPE dans la table archivage_disciplines ? */ $sql="SELECT DISTINCT u.login, u.nom, u.prenom, u.numind, u.type FROM utilisateurs u, j_groupes_professeurs jgp WHERE jgp.login=u.login AND u.statut='professeur' AND (numind='' OR type='') ORDER BY u.nom, u.prenom;"; //echo "$sql
"; $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)==0){ echo "

Tous les professeurs ont leurs NUMIND et TYPE renseignés.

"; require("../lib/footer.inc.php"); die(); } else { if(!isset($step)) { // style='color:red; margin-top:1em; margin-left:7.5em; text-indent:-7.5em;' echo "

".mysqli_num_rows($test)." professeur(s) ont leur NUMIND (identifiant STS) ou leur TYPE (\"Emploi Poste Personnel\" ou \"Local\") non renseigné.
Cela posera problème dans le cas où vous souhaiteriez faire remonter les données dans le Livret Scolaire Lycée ou dans le Livret Scolaire Collège (LSU).
Il est recommandé de procéder à l'association professeur/NUMIND avant d'archiver l'année.

"; while($lig=mysqli_fetch_object($test)) { echo " "; } echo "
Professeur Matières enseignées Numind Type Modifier
".casse_mot($lig->nom, "maj")." ".casse_mot($lig->prenom, "majf2")." ".get_chaine_matieres_prof($lig->login)." ".$lig->numind." ".$lig->type." Edit

Les informations manquantes sont probablement dans le fichier Emplois du temps de STS (sts_emp_RNE_ANNEE.xml)

Veuillez 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'.

".add_token_field()."

Veuillez fournir le fichier XML sts_emp_RNE_ANNEE.xml :

\n"; require("../lib/footer.inc.php"); die(); } else { check_token(false); $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"; require("../lib/footer.inc.php"); die(); } $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"; 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"; require("../lib/footer.inc.php"); die(); } echo "

Le fichier a été uploadé.

\n"; $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"; require("../lib/footer.inc.php"); die(); } else { echo "

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

\n"; $dest_file="../temp/".$tempdir."/sts.xml"; $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"; require("../lib/footer.inc.php"); die(); } echo "

"; echo "Analyse du fichier pour extraire les informations de la section INDIVIDUS...
\n"; $prof=array(); $i=0; $tab_champs_personnels=array("NOM_USAGE", "NOM_PATRONYMIQUE", "PRENOM", "SEXE", "CIVILITE", "DATE_NAISSANCE", "GRADE", "FONCTION"); $prof=array(); $i=0; foreach($sts_xml->DONNEES->INDIVIDUS->children() as $individu) { $prof[$i]=array(); //echo "\$individu->NOM_USAGE=".$individu->NOM_USAGE."
"; foreach($individu->attributes() as $key => $value) { // $prof[$i][my_strtolower($key)]=trim($value); } // Champs de l'individu foreach($individu->children() as $key => $value) { if(in_array(my_strtoupper($key),$tab_champs_personnels)) { if(my_strtoupper($key)=='SEXE') { $prof[$i]["sexe"]=trim(preg_replace("/[^1-2]/","",$value)); } elseif(my_strtoupper($key)=='CIVILITE') { $prof[$i]["civilite"]=trim(preg_replace("/[^1-3]/","",$value)); } elseif((my_strtoupper($key)=='NOM_USAGE')|| (my_strtoupper($key)=='NOM_PATRONYMIQUE')|| (my_strtoupper($key)=='NOM_USAGE')) { $prof[$i][my_strtolower($key)]=trim(preg_replace("/[^A-Za-z -]/","",remplace_accents($value))); } elseif(my_strtoupper($key)=='PRENOM') { $prof[$i][my_strtolower($key)]=trim(preg_replace('/"/','',preg_replace("/'/","",nettoyer_caracteres_nom($value,"a"," -","")))); } elseif(my_strtoupper($key)=='DATE_NAISSANCE') { $prof[$i][my_strtolower($key)]=trim(preg_replace("/[^0-9-]/","",$value)); } elseif((my_strtoupper($key)=='GRADE')|| (my_strtoupper($key)=='FONCTION')) { $prof[$i][my_strtolower($key)]=trim(preg_replace('/"/','',preg_replace("/'/"," ",$value))); } else { $prof[$i][my_strtolower($key)]=trim($value); } //echo "\$prof[$i][".strtolower($key)."]=".$prof[$i][strtolower($key)]."
"; } } if(isset($individu->PROFS_PRINC)) { $j=0; foreach($individu->PROFS_PRINC->children() as $prof_princ) { //$prof[$i]["prof_princ"]=array(); foreach($prof_princ->children() as $key => $value) { $prof[$i]["prof_princ"][$j][my_strtolower($key)]=trim(preg_replace('/"/',"",$value)); $temoin_au_moins_un_prof_princ="oui"; } $j++; } } if(isset($individu->DISCIPLINES)) { $j=0; foreach($individu->DISCIPLINES->children() as $discipline) { foreach($discipline->attributes() as $key => $value) { if(my_strtoupper($key)=='CODE') { $prof[$i]["disciplines"][$j]["code"]=trim(preg_replace('/"/',"",$value)); break; } } foreach($discipline->children() as $key => $value) { $prof[$i]["disciplines"][$j][my_strtolower($key)]=trim(preg_replace('/"/',"",$value)); } $j++; } } if($debug_import=='y') { echo "

Tableau \$prof[$i] :";
							print_r($prof[$i]);
							echo "
"; } $i++; } if(count($prof)==0) { echo "

Aucun professeur n'a été trouvé dans votre fichier.

\n"; require("../lib/footer.inc.php"); die(); } else { $tab_prof_gepi=array(); $tab_numind_prof_gepi=array(); $sql="SELECT DISTINCT u.login, u.nom, u.prenom, u.numind, u.type FROM utilisateurs u, j_groupes_professeurs jgp WHERE jgp.login=u.login AND u.statut='professeur' ORDER BY u.nom, u.prenom;"; //echo "$sql
"; $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)>0){ $cpt=0; while($lig=mysqli_fetch_assoc($test)) { $nom_prenom=casse_mot($lig['nom'], "maj")." ".casse_mot($lig['prenom'], "majf2"); $tab_prof_gepi[$cpt]=$lig; $tab_prof_gepi[$cpt]['nom_prenom']=$nom_prenom; $tab_numind_prof_gepi[$lig['numind']]['cpt']=$cpt; $tab_numind_prof_gepi[$lig['numind']]['type']=$lig['type']; $tab_numind_prof_gepi[$lig['numind']]['nom_prenom']=$nom_prenom; $cpt++; } } /* echo "tab_prof_gepi
";
print_r($tab_prof_gepi);
echo "
"; echo "tab_numind_prof_gepi
";
print_r($tab_numind_prof_gepi);
echo "
"; echo "prof
";
print_r($prof);
echo "
"; */ echo "
".add_token_field()."

Ne sont affichés ci-dessous que les professeurs du fichiers XML non, trouvés dans Gepi ou pour lesquels des données semblent manquantes dans Gepi.
Si les nom et prénom coïncident entre Gepi et le fichier XML, l'identification devrait être automatique.
Sinon, effectuez les associations manuellement.

"; for($loop=0;$loop "; } } echo "
Fichier XML Base GEPI
Professeur Matières enseignées Numind Type Choix
".casse_mot($prof[$loop]['nom_usage'], "maj")." ".casse_mot($prof[$loop]['prenom'], "majf2")." ".$liste_matieres_enseignes." ".$prof[$loop]['id']." ".$prof[$loop]['type']."

"; } } } } else { // Valider les imports check_token(false); $login_gepi=isset($_POST['login_gepi']) ? $_POST['login_gepi'] : NULL; if(!isset($login_gepi)) { echo "

Aucun rapprochement n'a été validé.
Retour

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

Prise en compte des validations...

\n"; $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"; require("../lib/footer.inc.php"); die(); } $dest_file="../temp/".$tempdir."/sts.xml"; $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"; require("../lib/footer.inc.php"); die(); } echo "

Analyse du fichier pour extraire les informations de la section INDIVIDUS...
\n"; $prof=array(); $i=0; $tab_champs_personnels=array("NOM_USAGE", "NOM_PATRONYMIQUE", "PRENOM", "SEXE", "CIVILITE", "DATE_NAISSANCE", "GRADE", "FONCTION"); $prof=array(); $prof2=array(); $i=0; foreach($sts_xml->DONNEES->INDIVIDUS->children() as $individu) { $prof[$i]=array(); //echo "\$individu->NOM_USAGE=".$individu->NOM_USAGE."
"; foreach($individu->attributes() as $key => $value) { // $prof[$i][my_strtolower($key)]=trim($value); if(my_strtolower($key)=="id") { $prof2[trim($value)]=$i; } } // Champs de l'individu foreach($individu->children() as $key => $value) { if(in_array(my_strtoupper($key),$tab_champs_personnels)) { if(my_strtoupper($key)=='SEXE') { $prof[$i]["sexe"]=trim(preg_replace("/[^1-2]/","",$value)); } elseif(my_strtoupper($key)=='CIVILITE') { $prof[$i]["civilite"]=trim(preg_replace("/[^1-3]/","",$value)); } elseif((my_strtoupper($key)=='NOM_USAGE')|| (my_strtoupper($key)=='NOM_PATRONYMIQUE')|| (my_strtoupper($key)=='NOM_USAGE')) { $prof[$i][my_strtolower($key)]=trim(preg_replace("/[^A-Za-z -]/","",remplace_accents($value))); } elseif(my_strtoupper($key)=='PRENOM') { $prof[$i][my_strtolower($key)]=trim(preg_replace('/"/','',preg_replace("/'/","",nettoyer_caracteres_nom($value,"a"," -","")))); } elseif(my_strtoupper($key)=='DATE_NAISSANCE') { $prof[$i][my_strtolower($key)]=trim(preg_replace("/[^0-9-]/","",$value)); } elseif((my_strtoupper($key)=='GRADE')|| (my_strtoupper($key)=='FONCTION')) { $prof[$i][my_strtolower($key)]=trim(preg_replace('/"/','',preg_replace("/'/"," ",$value))); } else { $prof[$i][my_strtolower($key)]=trim($value); } //echo "\$prof[$i][".strtolower($key)."]=".$prof[$i][strtolower($key)]."
"; } } if(isset($individu->PROFS_PRINC)) { $j=0; foreach($individu->PROFS_PRINC->children() as $prof_princ) { //$prof[$i]["prof_princ"]=array(); foreach($prof_princ->children() as $key => $value) { $prof[$i]["prof_princ"][$j][my_strtolower($key)]=trim(preg_replace('/"/',"",$value)); $temoin_au_moins_un_prof_princ="oui"; } $j++; } } if(isset($individu->DISCIPLINES)) { $j=0; foreach($individu->DISCIPLINES->children() as $discipline) { foreach($discipline->attributes() as $key => $value) { if(my_strtoupper($key)=='CODE') { $prof[$i]["disciplines"][$j]["code"]=trim(preg_replace('/"/',"",$value)); break; } } foreach($discipline->children() as $key => $value) { $prof[$i]["disciplines"][$j][my_strtolower($key)]=trim(preg_replace('/"/',"",$value)); } $j++; } } if($debug_import=='y') { echo "

Tableau \$prof[$i] :";
					print_r($prof[$i]);
					echo "
"; } $i++; } echo "

Traitement des rapprochements demandés...
\n"; $nb_reg=0; foreach($login_gepi as $id_prof => $current_login) { if($current_login!="") { if(isset($prof2[$id_prof])) { $i=$prof2[$id_prof]; $sql="UPDATE utilisateurs SET numind='P".$id_prof."', type='".$prof[$i]['type']."' WHERE login='".$current_login."';"; //echo "$sql
"; $update=mysqli_query($mysqli, $sql); if(!$update) { echo "ERREUR lors de la requête :
$sql

\n"; } else { $nb_reg++; } } } } if($nb_reg>0) { echo $nb_reg." correction(s) effectuée(s).
"; } echo "

Retour

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