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(); } $step=isset($_POST['step']) ? $_POST['step'] : (isset($_GET['step']) ? $_GET['step'] : NULL); $num_fich=isset($_POST['num_fich']) ? $_POST['num_fich'] : (isset($_GET['num_fich']) ? $_GET['num_fich'] : NULL); $mode=isset($_POST['mode']) ? $_POST['mode'] : (isset($_GET['mode']) ? $_GET['mode'] : NULL); if((isset($mode))&&($mode=='telech')&&(isset($num_fich))) { check_token(); $num_fich_test=preg_replace("/[^0-9_]/", "", $num_fich); if($num_fich_test!=$num_fich) { $msg="Le numéro de fichier transmis est invalide : $num_fich
"; unset($step); } else { $tempdir=get_user_temp_directory(); if(!$tempdir){ $msg="Il semble que le dossier temporaire de l'utilisateur ".$_SESSION['login']." ne soit pas défini!?
"; unset($step); } else { $nom_fichier="export_groupes_".$num_fich.".xml"; header('Content-type: text/html'); header('Content-Disposition: attachment; filename="'.$nom_fichier.'"'); $contenu=readfile("../temp/".$tempdir."/export_groupes_".$num_fich.".xml"); echo $contenu; die(); //unset($step); //unset($num_fich); } } } //**************** EN-TETE ***************** $titre_page = "Export XML Groupes"; require_once("../lib/header.inc.php"); //************** FIN EN-TETE ***************** //debug_var(); $ajout_ariane=""; if(isset($step)) { $ajout_ariane=" | Effectuer un autre export"; } echo "

Retour vers Classes et enseignements

Export des groupes au format XML pour Sconet

"; /* // Boucler sur les élèves pour extraire leurs groupes $sql="SELECT DISTINCT e.* FROM eleves e, j_eleves_classes jec, classes c WHERE e.login=jec.login AND jec.id_classe=c.id ORDER BY c.classe, e.nom, e.prenom;"; // On n'aura pas assurément la bonne liste d'élèves en terme d'order dans le cas des élèves changeant de classe. // Pour les élèves changeant de classe, on va avoir trop de groupes. // Ou alors faire une extraction pour tel numéro de période ou la dernière période // Mieux vaut la dernière période */ $tranche=100; if(!isset($step)) { echo "

Sconet peut recevoir un fichier XML des affectations élèves dans les groupes de Gepi.
La présente page permet de générer cet export en parcourant les élèves par tranches de $tranche.

Effectuer l'export XML

"; } elseif($step==1) { check_token(false); $sql="TRUNCATE tempo2;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); $sql="INSERT INTO tempo2 (SELECT DISTINCT e.login, e.login FROM eleves e, j_eleves_classes jec, classes c WHERE e.login=jec.login AND jec.id_classe=c.id ORDER BY c.classe, e.nom, e.prenom);"; $res=mysqli_query($GLOBALS["mysqli"], $sql); $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(); } $num_fich=strftime("%Y%m%d%H%M%S")."_".rand(); // Numéro d'envoi à enregistrer dans setting $num_envoi=getSettingValue("NumExportGroupesSconet"); if($num_envoi=="") { $num_envoi=1; } else { $num_envoi++; } saveSetting("NumExportGroupesSconet", $num_envoi); $f=fopen("../temp/".$tempdir."/export_groupes_".$num_fich.".xml", "w+"); fwrite($f, " ".getSettingValue('GepiSchoolRne')." ".mb_substr(getSettingValue('gepiYear'), 0, 4)." ".strftime("%d/%m/%Y")." 50218 GEPI "); fclose($f); echo "

Préparation initiale effectuée.

Suite

"; } else { // Filtrage de num_fich $num_fich_test=preg_replace("/[^0-9_]/", "", $num_fich); if($num_fich_test!=$num_fich) { echo "

Le numéro de fichier transmis est invalide : $num_fich

\n"; require("../lib/footer.inc.php"); die(); } // Parcourir par tranches la table tempo2 $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(); } $debut_annee=strftime("%Y-%m-%d", getSettingValue('begin_bookings')); $fin_annee=strftime("%Y-%m-%d", getSettingValue('end_bookings')); //echo "

Fichier : export_groupes_".$num_fich.".xml

"; $f=fopen("../temp/".$tempdir."/export_groupes_".$num_fich.".xml", "a+"); $sql="SELECT COUNT(col1) AS eff FROM tempo2;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); $lig=mysqli_fetch_object($res); if($lig->eff>0) { echo "

$lig->eff élève(s) restent à extraire.

Liste des élèves extraits dans cette tranche : "; $sql="SELECT col1 AS login FROM tempo2 LIMIT $tranche;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { $cpt=0; while($lig=mysqli_fetch_object($res)) { $sql="SELECT e.ele_id, e.nom, e.prenom, e.naissance FROM eleves e WHERE login='$lig->login';"; //echo "$sql
"; $res2=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res2)==0) { echo "

ERREUR : $lig->login non trouvé dans la table 'eleves'.

"; } else { if($cpt>0) { echo ", "; } $lig2=mysqli_fetch_object($res2); $chaine_eleve=" $lig2->ele_id $lig2->nom $lig2->prenom $lig2->naissance "; // Récupérer la dernière classe/période de l'élève $sql="SELECT id_classe, periode FROM j_eleves_classes WHERE login='$lig->login' ORDER BY periode DESC LIMIT 1;"; $res_clas=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_clas)==0) { // On ne devrait pas passer là avec la façon dont tempo2 est remplie echo "$lig2->nom $lig2->prenom"; } else { $lig_clas=mysqli_fetch_object($res_clas); // Récupérer la liste des groupes de l'élève $sql="SELECT jeg.id_groupe FROM j_eleves_groupes jeg WHERE login='".$lig->login."' AND periode='".$lig_clas->periode."';"; $res_grp=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_grp)==0) { // On ne devrait pas passer là avec la façon dont tempo2 est remplie echo "$lig2->nom $lig2->prenom"; } else { echo "$lig2->nom $lig2->prenom"; while($lig_grp=mysqli_fetch_object($res_grp)) { $info_grp=$lig_grp->id_groupe; $chaine_eleve.=" $info_grp $debut_annee $fin_annee "; } } $chaine_eleve.=" "; fwrite($f, $chaine_eleve); $cpt++; } } $sql="DELETE FROM tempo2 WHERE col1='$lig->login';"; $del=mysqli_query($GLOBALS["mysqli"], $sql); } $step++; echo "

Suite

"; echo ""; } } else { fwrite($f, "
" . "
" . "
"); echo "

Parcours terminé.

Récupérer le fichier XML

"; // En l'état: clic-droit/enregistrer la cible. } fclose($f); } require("../lib/footer.inc.php"); ?>