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='/responsables/maj_import3.php';"; $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)==0) { $sql="INSERT INTO droits SET id='/responsables/maj_import3.php', administrateur='V', professeur='F', cpe='F', scolarite='V', eleve='F', responsable='F', secours='F', autre='F', description='Mise à jour Sconet', statut='';"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); } // INSERT INTO `droits` VALUES ('/responsables/maj_import3.php', 'V', 'F', 'F', 'F', 'F', 'F', 'F', 'Mise à jour Sconet', ''); if (!checkAccess()) { header("Location: ../logout.php?auto=1"); die(); } if(($_SESSION['statut']=='scolarite')&&(!getSettingAOui('GepiAccesMajSconetScol'))) { header("Location: ../accueil.php?msg=Mise à jour Sconet non autorisée en compte scolarité."); die(); } $eleve_id_debug=""; $eff_tranche_recherche_diff=isset($_POST['eff_tranche_recherche_diff']) ? $_POST['eff_tranche_recherche_diff'] : getSettingValue('maj_sconet_eff_tranche'); if(($eff_tranche_recherche_diff=='')||(!is_numeric($eff_tranche_recherche_diff))||($eff_tranche_recherche_diff<1)) { $eff_tranche_recherche_diff=100; } $ele_lieu_naissance=getSettingValue("ele_lieu_naissance") ? getSettingValue("ele_lieu_naissance") : "n"; $ele_tel_pers=getSettingValue("ele_tel_pers") ? getSettingValue("ele_tel_pers") : "no"; $ele_tel_port=getSettingValue("ele_tel_port") ? getSettingValue("ele_tel_port") : "yes"; $ele_tel_prof=getSettingValue("ele_tel_prof") ? getSettingValue("ele_tel_prof") : "no"; $ne_pas_tester_les_changements_de_classes=getSettingValue("no_test_chgt_clas"); if($ne_pas_tester_les_changements_de_classes=="") {$ne_pas_tester_les_changements_de_classes="n";} // INSERT INTO setting SET name='no_test_chgt_clas', value='n'; // UPDATE setting SET value='n' WHERE name='no_test_chgt_clas'; $gepi_non_plugin_lcs_mais_recherche_ldap=false; if((getSettingAOui('gepi_non_plugin_lcs_mais_recherche_ldap'))&&(file_exists("../secure/config_ldap.inc.php"))) { include("../secure/config_ldap.inc.php"); $lcs_ldap_base_dn=$ldap_base_dn; $lcs_ldap_host=$ldap_host; $lcs_ldap_port=$ldap_port; $gepi_non_plugin_lcs_mais_recherche_ldap=true; $lcs_ldap_people_dn = 'ou=people,'.$lcs_ldap_base_dn; $lcs_ldap_groups_dn = 'ou=groups,'.$lcs_ldap_base_dn; } $auth_sso=getSettingValue("auth_sso") ? getSettingValue("auth_sso") : ""; if(($auth_sso=='lcs')||($gepi_non_plugin_lcs_mais_recherche_ldap)) { function connect_ldap($l_adresse,$l_port,$l_login,$l_pwd) { $ds = @ldap_connect($l_adresse, $l_port); if($ds) { // On dit qu'on utilise LDAP V3, sinon la V2 par d?faut est utilis? et le bind ne passe pas. $norme = @ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); // Acc?s non anonyme if ($l_login != '') { // On tente un bind $b = @ldap_bind($ds, $l_login, $l_pwd); } else { // Acc?s anonyme $b = @ldap_bind($ds); } if ($b) { return $ds; } else { return false; } } else { return false; } } // Initialisation $lcs_ldap_people_dn = 'ou=people,'.$lcs_ldap_base_dn; $lcs_ldap_groups_dn = 'ou=groups,'.$lcs_ldap_base_dn; } // Initialisation du répertoire actuel de sauvegarde $dirname = getSettingValue("backup_directory"); // Etape... $step=isset($_POST['step']) ? $_POST['step'] : (isset($_GET['step']) ? $_GET['step'] : NULL); $parcours_diff=isset($_POST['parcours_diff']) ? $_POST['parcours_diff'] : NULL; $tab_ele_id=isset($_POST['tab_ele_id']) ? $_POST['tab_ele_id'] : NULL; $tab_ele_id_diff=isset($_POST['tab_ele_id_diff']) ? $_POST['tab_ele_id_diff'] : NULL; $nb_parcours=isset($_POST['nb_parcours']) ? $_POST['nb_parcours'] : NULL; $tab_pers_id=isset($_POST['tab_pers_id']) ? $_POST['tab_pers_id'] : NULL; $tab_pers_id_diff=isset($_POST['tab_pers_id_diff']) ? $_POST['tab_pers_id_diff'] : NULL; $total_pers_diff=isset($_POST['total_pers_diff']) ? $_POST['total_pers_diff'] : NULL; $valid_pers_id=isset($_POST['valid_pers_id']) ? $_POST['valid_pers_id'] : NULL; $liste_pers_id=isset($_POST['liste_pers_id']) ? $_POST['liste_pers_id'] : NULL; $tab_adr_id=isset($_POST['tab_adr_id']) ? $_POST['tab_adr_id'] : NULL; $tab_adr_id_diff=isset($_POST['tab_adr_id_diff']) ? $_POST['tab_adr_id_diff'] : NULL; /* $tab_resp_id=isset($_POST['tab_resp_id']) ? $_POST['tab_resp_id'] : NULL; $tab_resp_id_diff=isset($_POST['tab_resp_id_diff']) ? $_POST['tab_resp_id_diff'] : NULL; */ $tab_resp=isset($_POST['tab_resp']) ? $_POST['tab_resp'] : NULL; $tab_resp_diff=isset($_POST['tab_resp_diff']) ? $_POST['tab_resp_diff'] : NULL; $total_diff=isset($_POST['total_diff']) ? $_POST['total_diff'] : NULL; $liste_assoc=isset($_POST['liste_assoc']) ? $_POST['liste_assoc'] : NULL; $ne_pas_proposer_resp_sans_eleve=isset($_POST['ne_pas_proposer_resp_sans_eleve']) ? $_POST['ne_pas_proposer_resp_sans_eleve'] : (isset($_GET['ne_pas_proposer_resp_sans_eleve']) ? $_GET['ne_pas_proposer_resp_sans_eleve'] : (isset($_SESSION['ne_pas_proposer_resp_sans_eleve']) ? $_SESSION['ne_pas_proposer_resp_sans_eleve'] : "si")); $alert_diff_mail_resp=isset($_POST['alert_diff_mail_resp']) ? $_POST['alert_diff_mail_resp'] : (isset($_GET['alert_diff_mail_resp']) ? $_GET['alert_diff_mail_resp'] : (isset($_SESSION['alert_diff_mail_resp']) ? $_SESSION['alert_diff_mail_resp'] : "n")); $alert_diff_mail_ele=isset($_POST['alert_diff_mail_ele']) ? $_POST['alert_diff_mail_ele'] : (isset($_GET['alert_diff_mail_ele']) ? $_GET['alert_diff_mail_ele'] : (isset($_SESSION['alert_diff_mail_ele']) ? $_SESSION['alert_diff_mail_ele'] : "n")); $alert_diff_etab_origine=isset($_POST['alert_diff_etab_origine']) ? $_POST['alert_diff_etab_origine'] : (isset($_GET['alert_diff_etab_origine']) ? $_GET['alert_diff_etab_origine'] : (isset($_SESSION['alert_diff_etab_origine']) ? $_SESSION['alert_diff_etab_origine'] : "n")); // Sauvegarde des préférences davantage que le temps de la session saveSetting('alert_diff_mail_ele', $alert_diff_mail_ele); saveSetting('alert_diff_mail_resp', $alert_diff_mail_resp); saveSetting('alert_diff_etab_origine', $alert_diff_etab_origine); $alert_diff_mef=isset($_POST['alert_diff_mef']) ? $_POST['alert_diff_mef'] : (isset($_GET['alert_diff_mef']) ? $_GET['alert_diff_mef'] : (isset($_SESSION['alert_diff_mef']) ? $_SESSION['alert_diff_mef'] : "y")); saveSetting('alert_diff_mef', $alert_diff_mef); $alert_diff_date_entree=isset($_POST['alert_diff_date_entree']) ? $_POST['alert_diff_date_entree'] : (isset($_GET['alert_diff_date_entree']) ? $_GET['alert_diff_date_entree'] : (isset($_SESSION['alert_diff_date_entree']) ? $_SESSION['alert_diff_date_entree'] : "y")); saveSetting('alert_diff_date_entree', $alert_diff_date_entree); // ===================================================== // Test sur les modifications de telephone élève $ele_tel_prof_signaler_modif=isset($_POST['ele_tel_prof_signaler_modif']) ? $_POST['ele_tel_prof_signaler_modif'] : (isset($_GET['ele_tel_prof_signaler_modif']) ? $_GET['ele_tel_prof_signaler_modif'] : (isset($_SESSION['ele_tel_prof_signaler_modif']) ? $_SESSION['ele_tel_prof_signaler_modif'] : getSettingValue('ele_tel_prof_signaler_modif'))); if(($ele_tel_prof_signaler_modif!='yes')&&($ele_tel_prof_signaler_modif!='no')) {$ele_tel_prof_signaler_modif="yes";} saveSetting('ele_tel_prof_signaler_modif', $ele_tel_prof_signaler_modif); $ele_tel_pers_signaler_modif=isset($_POST['ele_tel_pers_signaler_modif']) ? $_POST['ele_tel_pers_signaler_modif'] : (isset($_GET['ele_tel_pers_signaler_modif']) ? $_GET['ele_tel_pers_signaler_modif'] : (isset($_SESSION['ele_tel_pers_signaler_modif']) ? $_SESSION['ele_tel_pers_signaler_modif'] : getSettingValue('ele_tel_pers_signaler_modif'))); if(($ele_tel_pers_signaler_modif!='yes')&&($ele_tel_pers_signaler_modif!='no')) {$ele_tel_pers_signaler_modif="yes";} saveSetting('ele_tel_pers_signaler_modif', $ele_tel_pers_signaler_modif); $ele_tel_port_signaler_modif=isset($_POST['ele_tel_port_signaler_modif']) ? $_POST['ele_tel_port_signaler_modif'] : (isset($_GET['ele_tel_port_signaler_modif']) ? $_GET['ele_tel_port_signaler_modif'] : (isset($_SESSION['ele_tel_port_signaler_modif']) ? $_SESSION['ele_tel_port_signaler_modif'] : getSettingValue('ele_tel_port_signaler_modif'))); if(($ele_tel_port_signaler_modif!='yes')&&($ele_tel_port_signaler_modif!='no')) {$ele_tel_port_signaler_modif="yes";} saveSetting('ele_tel_port_signaler_modif', $ele_tel_port_signaler_modif); // ===================================================== $stop=isset($_POST['stop']) ? $_POST['stop'] : (isset($_GET['stop']) ? $_GET['stop'] :'n'); //$style_specifique="responsables/maj_import2"; $gepiSchoolRne=getSettingValue("gepiSchoolRne") ? getSettingValue("gepiSchoolRne") : ""; //======================================================================== $chaine_mysql_collate="CHARSET utf8 COLLATE utf8_general_ci"; $chaine_collate="COLLATE utf8_bin "; //$chaine_collate="COLLATE latin1_bin "; //======================================================================== $sql="SELECT 1=1 FROM utilisateurs WHERE statut='eleve' AND etat='actif' LIMIT 1;"; $res_comptes_eleves=mysqli_query($GLOBALS["mysqli"], $sql); $nb_comptes_eleves=mysqli_num_rows($res_comptes_eleves); $sql="SELECT 1=1 FROM utilisateurs WHERE statut='eleve' AND etat='actif' LIMIT 1;"; $res_comptes_resp=mysqli_query($GLOBALS["mysqli"], $sql); $nb_comptes_resp=mysqli_num_rows($res_comptes_resp); //**************** EN-TETE ***************** $titre_page = "Mise à jour eleves/responsables"; require_once("../lib/header.inc.php"); //**************** FIN EN-TETE ***************** if((isset($_POST['temoin_suhosin_1']))&&(!isset($_POST['temoin_suhosin_2']))) { echo "
Il semble que certaines variables n'ont pas été transmises.
Cela peut arriver lorsqu'on tente de transmettre (cocher trop de cases) trop de variables.
Vous devriez tenter d'afficher moins de lignes à la fois.
";
if(isset($_SESSION['retour_apres_maj_sconet'])) {
echo "
Retour";
}
else {
echo "
Retour";
}
if($_SESSION['statut']=='administrateur') {
echo "
La table 'log_maj_sconet' est absente.
Une Mise à jour de la base est requise.
La table 'log_maj_sconet' est absente.
Une Mise à jour de la base est requise (contactez l'administrateur).
";
if(isset($_SESSION['retour_apres_maj_sconet'])) {
echo "
Retour";
}
else {
echo "
Retour";
}
if(acces("/responsables/consult_maj_sconet.php", $_SESSION['statut'])) {
echo " | Journaux des mises à jour";
}
//echo "
Cette page est destinée à effectuer l'import des élèves et responsables d'après les modifications et ajouts effectués sur Sconet.
\n"; // 20120922 $ts_maj_sconet=getSettingValue('ts_maj_sconet'); if($ts_maj_sconet!='') { echo "ATTENTION : Une mise à jour Sconet a été lancée le ".formate_date($ts_maj_sconet).".
L'opération n'est pas arrivée à son terme.
Cela peut signifier que la mise à jour est encore en cours.
Vous ne devriez pas lancer deux mises à jour d'après Sconet en même temps.
Vous pourriez obtenir des choses aberrantes.
Voici ce qui a été enregistré lors de cette mise à jour :
"; echo "NOTE : Le témoin de mise à jour sconet lancée n'est supprimé qu'une fois atteinte la dernière étape de mise à jour
(après la mise à jour des responsabilités des responsables d'élèves.).
Si vous ne faites qu'une partie de la mise à jour, le témoin ne sera pas supprimé.
Le module suhosin est activé.
\nUn paramétrage trop restrictif de ce module peut perturber le fonctionnement de Gepi, particulièrement dans les pages comportant de nombreux champs de formulaire.
Cela peut empêcher le bon fonctionnement de la Mise à jour d'après Sconet.
Vous allez importer des fichiers d'exports XML de Sconet.
\nLes fichiers requis au cours de la procédure sont dans un premier temps ElevesAvecAdresses.xml, puis le fichier ResponsablesAvecAdresses.xml
Il est recommandé d'importer les informations élèves et de ne passer qu'ensuite à l'import des informations responsables.
\n";
echo "Passer néanmoins à la page d'importation des responsables
NOTES :
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 } $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(!isset($_POST['step'])){ switch($step){ case "0": // Affichage des informations élèves 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 "
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.
Retour à la page Mise à jour d'après Sconet
"; 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 "
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.
Retour à la page Mise à jour d'après Sconet
"; require("../lib/footer.inc.php"); die(); } echo "Le fichier a été uploadé.
\n"; /* echo "\$xml_file['tmp_name']=".$xml_file['tmp_name']."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 "\$xml_file['size']=".volume_human($xml_file['size'])."
\n";
echo "
NETTOYAGE : Suppression du fichier eleves.xml précédent : "; if(unlink($dest_file)) {echo "SUCCES";} else {echo "ECHEC";} echo "
\n"; } $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"; echo "Retour à la page Mise à jour d'après Sconet
"; require("../lib/footer.inc.php"); die(); } if(sizeof($list_file_zip)!=1) { echo "Erreur : L'archive contient plus d'un fichier.
\n"; echo "Retour à la page Mise à jour d'après Sconet
"; 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']."
\$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(); } $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"; echo "Retour à la page Mise à jour d'après Sconet
"; 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
Retour à la page Mise à jour d'après Sconet
"; require("../lib/footer.inc.php"); die(); } else{ echo "La copie du fichier vers le dossier temporaire a réussi.
\n"; info_debug("Mise à jour sconet",1); $sql="DROP TABLE IF EXISTS temp_gep_import2;"; info_debug($sql); $suppr_table = mysqli_query($GLOBALS["mysqli"], $sql); $sql="CREATE TABLE IF NOT EXISTS `temp_gep_import2` ( `ID_TEMPO` varchar(40) NOT NULL default '', `LOGIN` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELENOM` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELEPRE` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELESEXE` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELEDATNAIS` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELENOET` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELE_ID` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELEDOUBL` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELENONAT` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELEREG` varchar(40) $chaine_mysql_collate NOT NULL default '', `DIVCOD` varchar(40) $chaine_mysql_collate NOT NULL default '', `ETOCOD_EP` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELEOPT1` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELEOPT2` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELEOPT3` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELEOPT4` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELEOPT5` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELEOPT6` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELEOPT7` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELEOPT8` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELEOPT9` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELEOPT10` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELEOPT11` varchar(40) $chaine_mysql_collate NOT NULL default '', `ELEOPT12` varchar(40) $chaine_mysql_collate NOT NULL default '', `LIEU_NAISSANCE` varchar(50) $chaine_mysql_collate NOT NULL default '', `MEL` varchar(255) $chaine_mysql_collate NOT NULL default '', `TEL_PERS` varchar(255) $chaine_mysql_collate NOT NULL default '', `TEL_PORT` varchar(255) $chaine_mysql_collate NOT NULL default '', `TEL_PROF` varchar(255) $chaine_mysql_collate NOT NULL default '', DATE_ENTREE DATETIME, MEF_CODE VARCHAR(50) DEFAULT '' NOT NULL ) ENGINE=MyISAM;"; info_debug($sql); $create_table = mysqli_query($GLOBALS["mysqli"], $sql); $sql="TRUNCATE TABLE temp_gep_import2;"; info_debug($sql); $vide_table = mysqli_query($GLOBALS["mysqli"], $sql); $sql="CREATE TABLE IF NOT EXISTS temp_grp ( id smallint(6) unsigned NOT NULL auto_increment, ELE_ID varchar(40) NOT NULL default '', NOM_GRP varchar(255) NOT NULL default '', PRIMARY KEY id (id));"; $create_table = mysqli_query($GLOBALS["mysqli"], $sql); $sql="TRUNCATE TABLE temp_grp;"; $vide_table = mysqli_query($GLOBALS["mysqli"], $sql); //echo "DEBUG \$tempdir=$tempdir
"; echo "\n"; echo "\n"; require("../lib/footer.inc.php"); die(); } } break; case "0b": 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'.
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) ?
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 "\n";
echo "Analyse 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) {
//echo("\$structure->$key=".$value."
");
if(in_array(my_strtoupper($key),$tab_champs_struct)) {
$eleves[$i]["structures"][$j][my_strtolower($key)]=preg_replace('/"/','',preg_replace("/'/","",trim($value)));
//my_echo("\$structure->$key=".$value."
");
}
}
$j++;
}
if($debug_import=='y') {
//if($eleves[$i]['eleve_id']=='596023') {
echo "
Tableau \$eleves[$i] :"; print_r($eleves[$i]); echo ""; } } } } } //$nb_err=0; // $cpt: Identifiant id_tempo $id_tempo=1; for($i=0;$i
La première phase s'est passée sans erreur.
\n"; echo "\n"; } elseif($nb_err==1) { echo "$nb_err erreur.
\n"; } else{ echo "$nb_err erreurs
\n"; } $stat=$id_tempo-1-$nb_err; echo "$stat associations identifiant élève/classe ont été inséré(s) dans la table 'temp_gep_import2'.
\n"; //echo "\n"; //echo "\n"; echo "\n"; require("../lib/footer.inc.php"); die(); break; case "1": 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'.
";
//echo "Analyse du fichier pour extraire les informations de la section ELEVES...
\n";
echo "Traitement de la section ELEVES...
\n";
//echo "
\n"; $eleves=array(); //Compteur élève: $i=-1; $tab_champs_eleve=array("ID_NATIONAL", "ELENOET", "NOM_DE_FAMILLE", "NOM_USAGE", "NOM", "PRENOM", "DATE_NAISS", "DOUBLEMENT", "DATE_ENTREE", "DATE_SORTIE", "CODE_REGIME", "DATE_ENTREE", "CODE_MOTIF_SORTIE", "CODE_SEXE", "CODE_COMMUNE_INSEE_NAISS", "CODE_PAYS", "VILLE_NAISS", "MEL", "TEL_PERSONNEL", "TEL_PORTABLE", "TEL_PROFESSIONNEL", "CODE_MEF" ); $tab_champs_scol_an_dernier=array("CODE_STRUCTURE", "CODE_RNE", "SIGLE", "DENOM_PRINC", "DENOM_COMPL", "LIGNE1_ADRESSE", "LIGNE2_ADRESSE", "LIGNE3_ADRESSE", "LIGNE4_ADRESSE", "BOITE_POSTALE", "MEL", "TELEPHONE", "CODE_COMMUNE_INSEE", "LL_COMMUNE_INSEE" ); $avec_scolarite_an_dernier="y"; $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.
\n"; require("../lib/footer.inc.php"); die(); } $objet_eleves=($ele_xml->DONNEES->ELEVES); foreach ($objet_eleves->children() as $eleve) { $i++; //echo "
Sa racine devrait être 'BEE_ELEVES'.Elève $i
"; $eleves[$i]=array(); foreach($eleve->attributes() as $key => $value) { //echo "$key=".$value."
"; //$eleves[$i][strtolower($key)]=trim(traite_utf8($value)); $eleves[$i][my_strtolower($key)]=trim($value); } foreach($eleve->children() 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)))); //echo "\$eleve->$key=".$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) { //echo "\$eleve->SCOLARITE_AN_DERNIER->$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]["prenom"])){ $tab_prenom = explode(" ",$eleves[$i]["prenom"]); $tab_prenom[0] = nettoyer_caracteres_nom($tab_prenom[0], "a", " './-", ""); $eleves[$i]["prenom"] = preg_replace("/'/", "", $tab_prenom[0]); } if(isset($eleves[$i]["date_naiss"])){ //echo $eleves[$i]["date_naiss"]."
\n"; unset($naissance); $naissance=explode("/",$eleves[$i]["date_naiss"]); //$eleve_naissance_annee=$naissance[2]; //$eleve_naissance_mois=$naissance[1]; //$eleve_naissance_jour=$naissance[0]; 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 ""; } } flush(); affiche_debug("count(\$eleves)=".count($eleves)."
\n"); affiche_debug("count(\$tab_ele_id)=".count($tab_ele_id)."
\n"); //=========================== // A FAIRE: boireaus 20071115 // Insérer ici un tableau comme dans la partie ADRESSES pour simuler une barre de progression //=========================== $stat=0; $nb_err=0; for($i=0;$i".$eleves[$i]["nom"]." ".$eleves[$i]["prenom"]." n'est pas renseigné dans Sconet."; } */ // A FAIRE: Ajouter une case pour choisir si on désactive le compte de l'élève et des parents quand la date de sortie est passée // On peut souhaiter laisser l'accès un peu au-delà... // Pour les parents, il faudrait tester si il reste des élèves associés dont la date de sortie n'est pas passée. $temoin_date_sortie="n"; if(isset($eleves[$i]['date_sortie'])) { echo $eleves[$i]['prenom']." ".$eleves[$i]['nom']." a quitté l'établissement le ".$eleves[$i]['date_sortie']."
\n"; $tmp_tab_date=explode("/",$eleves[$i]['date_sortie']); if(checkdate($tmp_tab_date[1],$tmp_tab_date[0],$tmp_tab_date[2])) { $timestamp_sortie=mktime(0,0,0,$tmp_tab_date[1],$tmp_tab_date[0],$tmp_tab_date[2]); $timestamp_instant=time(); if($timestamp_instant>$timestamp_sortie){ $temoin_date_sortie="y"; } } } if($temoin_date_sortie=="y") { $sql="DELETE FROM temp_gep_import2 WHERE ele_id='".$eleves[$i]['eleve_id']."';"; info_debug($sql); $nettoyage=mysqli_query($GLOBALS["mysqli"], $sql); $sql="INSERT INTO tempo2 SET col1='ele_id_eleve_parti', col2='".$eleves[$i]['eleve_id']."';"; info_debug($sql); $insert=mysqli_query($GLOBALS["mysqli"], $sql); //Eric // Enregistrement de l'information de la date de sortie pour l'élève (à partir de son id) $sql="INSERT INTO tempo2 SET col1='".$eleves[$i]['eleve_id']."', col2='".$eleves[$i]['date_sortie']."';"; info_debug($sql); $insert=mysqli_query($GLOBALS["mysqli"], $sql); // Fin Eric } else { // On n'avait jusque là dans temp_gep_import2 que des associations ELE_ID/DIVCOD et rien d'autre // On complète: $sql="UPDATE temp_gep_import2 SET "; $sql.="elenoet='".$eleves[$i]['elenoet']."', "; if(isset($eleves[$i]['id_national'])) {$sql.="elenonat='".$eleves[$i]['id_national']."', ";} $sql.="elenom='".mysqli_real_escape_string($GLOBALS["mysqli"], my_strtoupper($eleves[$i]['nom']))."', "; // On ne retient que le premier prénom: $tab_prenom = explode(" ",$eleves[$i]['prenom']); $sql.="elepre='".mysqli_real_escape_string($GLOBALS["mysqli"], maj_ini_prenom($tab_prenom[0]))."'"; //$sql.="elesexe='".sexeMF($eleves[$i]["code_sexe"])."', "; if(isset($eleves[$i]["code_sexe"])) { $sql.=", elesexe='".sexeMF($eleves[$i]["code_sexe"])."'"; } else { $texte_oubli="Sexe non défini dans Sconet pour ".maj_ini_prenom($tab_prenom[0])." ".my_strtoupper($eleves[$i]['nom'])."
\n"; enregistre_log_maj_sconet($texte_oubli); echo $texte_oubli; $sql.=", elesexe='M'"; } $sql.=", eledatnais='".$eleves[$i]['date_naiss']."'"; $sql.=", eledoubl='".ouinon($eleves[$i]["doublement"])."'"; if(isset($eleves[$i]["scolarite_an_dernier"]["code_rne"])){$sql.=", etocod_ep='".$eleves[$i]["scolarite_an_dernier"]["code_rne"]."'";} if(isset($eleves[$i]["code_regime"])){$sql.=", elereg='".$eleves[$i]["code_regime"]."'";} if(isset($eleves[$i]["code_mef"])){$sql.=", mef_code='".$eleves[$i]["code_mef"]."'";} //affiche_debug("eleve_id=".$eleves[$i]["eleve_id"]."
"); //affiche_debug("code_pays=".$eleves[$i]["code_pays"]."
"); //affiche_debug("ville_naiss=".$eleves[$i]["ville_naiss"]."
"); //affiche_debug("code_commune_insee_naiss=".$eleves[$i]["code_commune_insee_naiss"]."
"); if((isset($eleves[$i]["code_pays"]))&&($eleves[$i]["code_pays"]!='')&& (isset($eleves[$i]["ville_naiss"]))&&($eleves[$i]["ville_naiss"]!='')) { $sql.=", lieu_naissance='".$eleves[$i]["code_pays"]."@".mysqli_real_escape_string($GLOBALS["mysqli"], $eleves[$i]["ville_naiss"])."'"; } elseif(isset($eleves[$i]["code_commune_insee_naiss"])) { $sql.=", lieu_naissance='".$eleves[$i]["code_commune_insee_naiss"]."'"; } if(isset($eleves[$i]['mel'])) {$sql.=", mel='".$eleves[$i]['mel']."'";} if(isset($eleves[$i]['tel_personnel'])) {$sql.=", tel_pers='".$eleves[$i]['tel_personnel']."'";} if(isset($eleves[$i]['tel_portable'])) {$sql.=", tel_port='".$eleves[$i]['tel_portable']."'";} if(isset($eleves[$i]['tel_professionnel'])) {$sql.=", tel_prof='".$eleves[$i]['tel_professionnel']."'";} if(isset($eleves[$i]['date_entree'])) { $sql.=", date_entree='".get_mysql_date_from_slash_date($eleves[$i]['date_entree'])."'"; } $sql.=" WHERE ele_id='".$eleves[$i]['eleve_id']."';"; affiche_debug("$sql
\n"); info_debug($sql); $res_insert=mysqli_query($GLOBALS["mysqli"], $sql); if(!$res_insert){ echo "Erreur lors de la requête $sql
\n"; $nb_err++; flush(); } else{ $stat++; } } } else { // echo $eleves[$i]['prenom']." ".$eleves[$i]['nom']." n'est pas dans \$tab_ele_id donc pas dans une classe..."."
"; // On devrait supprimer l'élève de la table là, non? // Si l'élève est encore dans la table, on enregistre sa date de sortie //création de la chaine au format timestamp if(isset($eleves[$i]['date_sortie'])) { list($day, $month, $year) = explode('/', $eleves[$i]['date_sortie']); $date_de_sortie_eleve = $year."-".$month."-".$day." 00:00:00"; $sql_corrige="UPDATE eleves SET date_sortie = '$date_de_sortie_eleve' WHERE ele_id='".$eleves[$i]['eleve_id']."';"; //echo "
".$eleves[$i]['prenom']." ".$eleves[$i]['nom'].' mise a jour
'.$sql_corrige.'
'; $res_corrige=mysqli_query($GLOBALS["mysqli"], $sql_corrige); } //else { // echo "
".$eleves[$i]['prenom']." ".$eleves[$i]['nom'].' sans date de sortie
'; //} // 20141013 // Mettre un message en page d'accueil pour les élèves encore dans des classes alors qu'ils n'y sont plus dans Sconet. $date_mysql_courante=strftime("%Y-%m-%d %H:%M:%S"); $sql="SELECT DISTINCT e.* FROM eleves e, j_eleves_classes jec, periodes p WHERE e.login=jec.login AND jec.id_classe=p.id_classe AND jec.periode=p.num_periode AND p.date_fin>='".$date_mysql_courante."' AND e.ele_id='".$eleves[$i]['eleve_id']."';"; $test_ele_classe=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test_ele_classe)>0) { $lig_ele=mysqli_fetch_object($test_ele_classe); $info_action_titre="Incohérence Sconet/Gepi pour ".remplace_accents(stripslashes($lig_ele->nom)." ".stripslashes($lig_ele->prenom))." ($lig_ele->login)"; $info_action_texte="L'élève ".remplace_accents(stripslashes($lig_ele->nom)." ".stripslashes($lig_ele->prenom))." est inscrit dans une classe dans Gepi, alors qu'il n'y est plus dans Sconet.
Il faut soit le désinscrire pour les périodes à venir dans Gepi, soit le réinscrire dans une classe dans Sconet (selon l'endroit où l'erreur se situe)."; $info_action_destinataire=array("administrateur","scolarite"); $info_action_mode="statut"; enregistre_infos_actions($info_action_titre,$info_action_texte,$info_action_destinataire,$info_action_mode); } } } /* if($the_end=="n") { $suite="1"; } else { */ $suite="2"; //} if($nb_err==0) { /* if($the_end=="n") { echo "Parcours d'une tranche de la deuxième phase ($cpt_saut_lignes_ini -> $cpt_saut_lignes)...
\n"; echo "\n"; } else { */ echo "La deuxième phase s'est passée sans erreur.
\n"; echo "\n"; //} } elseif($nb_err==1) { echo "$nb_err erreur.
\n"; } else{ echo "$nb_err erreurs
\n"; } echo "$stat enregistrement(s) ont été mis à jour dans la table 'temp_gep_import2'.
\n"; echo "\n"; require("../lib/footer.inc.php"); die(); break; case "2": echo "Import/mise à jour des élèves
\n"; info_debug("=============================================="); info_debug("=============== Phase step $step ================="); // CETTE PHASE D'ANALYSE DES OPTIONS EST A REVOIR: Il faudrait le fichier Nomenclature pour pouvoir proposer les bonnes options lors de l'inscription de nouveaux élèves (ou stocker dans une table les correspondances de codes/matières). // // Par contre, on y fait quand même des tests pour les élèves partis... ne pas squizzer ça si on supprime l'étape $dest_file="../temp/".$tempdir."/eleves.xml"; $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.
\n"; require("../lib/footer.inc.php"); die(); } $cpt_saut_lignes=isset($_POST['cpt_saut_lignes']) ? $_POST['cpt_saut_lignes'] : (isset($_GET['cpt_saut_lignes']) ? $_GET['cpt_saut_lignes'] : 0); $the_end=""; $saut_effectue="n"; $cpt_saut_lignes_ini=$cpt_saut_lignes; // On récupère les ele_id des élèves qui sont affectés dans une classe $sql="SELECT ele_id FROM temp_gep_import2 ORDER BY id_tempo"; info_debug($sql); $res_ele_id=mysqli_query($GLOBALS["mysqli"], $sql); //echo "count(\$res_ele_id)=".count($res_ele_id)."
Sa racine devrait être 'BEE_ELEVES'.
"; unset($tab_ele_id); $tab_ele_id=array(); $cpt=0; // Pourquoi est-ce que cela ne fonctionne pas en mysql _fetch_object()??? // TROUVé: C'EST SENSIBLE à LA CASSE: IL FAUDRAIT $lig->ELE_ID //while($lig=mysql _fetch_object($res_ele_id)){ while($lig=mysqli_fetch_array($res_ele_id)){ //$tab_ele_id[$cpt]="$lig->ele_id"; $tab_ele_id[$cpt]=$lig[0]; affiche_debug("\$tab_ele_id[$cpt]=$tab_ele_id[$cpt]
"); $cpt++; } flush(); echo ""; echo "Analyse du fichier pour extraire les informations de la section OPTIONS...
\n"; //echo "\n"; // PARTIE$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