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='/groupes/maj_inscript_ele_d_apres_edt.php';"; $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)==0) { $sql="INSERT INTO droits SET id='/groupes/maj_inscript_ele_d_apres_edt.php', administrateur='V', professeur='F', cpe='F', scolarite='F', eleve='F', responsable='F', secours='F', autre='F', description='Import des inscriptions élèves depuis un XML EDT', statut='';"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); } if (!checkAccess()) { header("Location: ../logout.php?auto=1"); die(); } $sql="CREATE TABLE IF NOT EXISTS edt_eleves_lignes ( id int(11) NOT NULL AUTO_INCREMENT, nom varchar(255) NOT NULL default '', prenom varchar(255) NOT NULL default '', date_naiss varchar(255) NOT NULL default '', sexe varchar(255) NOT NULL default '', n_national varchar(255) NOT NULL default '', classe varchar(255) NOT NULL default '', groupes varchar(255) NOT NULL default '', option_1 varchar(255) NOT NULL default '', option_2 varchar(255) NOT NULL default '', option_3 varchar(255) NOT NULL default '', option_4 varchar(255) NOT NULL default '', option_5 varchar(255) NOT NULL default '', option_6 varchar(255) NOT NULL default '', option_7 varchar(255) NOT NULL default '', option_8 varchar(255) NOT NULL default '', option_9 varchar(255) NOT NULL default '', option_10 varchar(255) NOT NULL default '', option_11 varchar(255) NOT NULL default '', option_12 varchar(255) NOT NULL default '', PRIMARY KEY (id) ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"; $create_table=mysqli_query($GLOBALS["mysqli"], $sql); $sql="CREATE TABLE IF NOT EXISTS edt_tempo ( id int(11) NOT NULL AUTO_INCREMENT, col1 varchar(255) NOT NULL default '', col2 varchar(255) NOT NULL default '', PRIMARY KEY (id) ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"; $create_table=mysqli_query($GLOBALS["mysqli"], $sql); $acces_prepa_conseil_edit_limite="y"; if(!acces('/prepa_conseil/edit_limite.php', $_SESSION['statut'])) { $acces_prepa_conseil_edit_limite="n"; } /* "NOM", "PRENOM", "DATE_NAISS", "SEXE", "N_NATIONAL", "CLASSE", "GROUPES", "OPTION_1", "OPTION_2", "OPTION_3", "OPTION_4", "OPTION_5", "OPTION_6", "OPTION_7", "OPTION_8", "OPTION_9", "OPTION_10", "OPTION_11", "OPTION_12"*/ $debug_import_edt="n"; $avec_colonnes_detail_groupes_eleves="y"; // Le paramètre $debug_import_edt ci-dessus affecté à 'y' force l'affichage des colonnes groupes/classes EDT. $msg=""; $action=isset($_POST['action']) ? $_POST['action'] : (isset($_GET['action']) ? $_GET['action'] : ""); $num_periode=isset($_POST['num_periode']) ? $_POST['num_periode'] : (isset($_GET['num_periode']) ? $_GET['num_periode'] : NULL); $id_groupe=isset($_POST['id_groupe']) ? $_POST['id_groupe'] : (isset($_GET['id_groupe']) ? $_GET['id_groupe'] : NULL); if(isset($_POST['MajInscriptEleEdtEnvoiMail'])) { check_token(); if(!saveSetting('MajInscriptEleEdtEnvoiMail', $_POST['MajInscriptEleEdtEnvoiMail'])) { $msg="Erreur lors de l'enregistrement du paramètre 'MajInscriptEleEdtEnvoiMail' (".strftime("%d/%m/%Y à %H:%M:%S").").
"; } else { $msg="Enregistrement du paramètre 'MajInscriptEleEdtEnvoiMail' effectué (".strftime("%d/%m/%Y à %H:%M:%S").").
"; } } if((isset($_POST['mode']))&&($_POST['mode']=="cherche_eleve")) { $nom_ele=isset($_POST['nom_ele']) ? $_POST['nom_ele'] : NULL; $prenom_ele=isset($_POST['prenom_ele']) ? $_POST['prenom_ele'] : NULL; if((isset($nom_ele))&&(isset($prenom_ele))) { //$sql="SELECT * FROM eleves WHERE nom LIKE '%".mysqli_real_escape_string($GLOBALS['mysqli'], $nom_ele)."%' AND prenom LIKE '%".mysqli_real_escape_string($GLOBALS['mysqli'], $prenom_ele)."%' ORDER BY nom, prenom;"; $sql="SELECT * FROM eleves WHERE nom LIKE '%".preg_replace("/[^A-Za-z]/u", "%", $nom_ele)."%' AND prenom LIKE '%".preg_replace("/[^A-Za-z]/u", "%", $prenom_ele)."%' ORDER BY nom, prenom;"; //echo "$sql
"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)==0) { echo "

Aucun élève trouvé.

"; } else { echo ""; while($lig=mysqli_fetch_object($res)){ echo " "; } echo "
Nom Prénom Naissance INE Classes
".$lig->nom." ".$lig->prenom." ".formate_date($lig->naissance)." "; if($lig->no_gep!=""){ //echo 'no_gep.'\';cacher_div(\'div_search\');return false;\">'.$lig->no_gep.''; echo ''.$lig->no_gep.''; } else{ echo "Non renseigné"; } echo " ".get_chaine_liste_noms_classes_from_ele_login($lig->login)."
"; } } else { echo "

Nom ou prénom non transmis.

"; } die(); } // 20151021 if($action=="corrige_ine_eleve") { check_token(); //debug_var(); $edt_eleves_lignes_id=isset($_POST['edt_eleves_lignes_id']) ? $_POST['edt_eleves_lignes_id'] : NULL; $ine_corrige=isset($_POST['ine_corrige']) ? $_POST['ine_corrige'] : NULL; $nom_eleve=isset($_POST['nom_eleve']) ? $_POST['nom_eleve'] : array(); $prenom_eleve=isset($_POST['prenom_eleve']) ? $_POST['prenom_eleve'] : array(); if(!isset($edt_eleves_lignes_id)) { $msg.="Aucun identifiant élève de la table 'edt_eleves_lignes' n'a été transmis.
"; } elseif(!isset($ine_corrige)) { $msg.="Le tableau des INE potentiellement corrigés n'a pas été transmis.
"; } else { $msg.="Prise en compte des corrections d'INE :
"; for($loop=0;$loop"; if((isset($_POST['mode_js']))&&($_POST['mode_js']='y')) { echo "Regroupement EDT associé : L'identifiant nom_edt choisi ".htmlentities($_POST['id_nom_edt'])." n'existe pas."; die(); } } else { $lig_edt=mysqli_fetch_object($res_edt); $sql="DELETE FROM edt_corresp2 WHERE id_groupe='$id_groupe';"; $del=mysqli_query($GLOBALS["mysqli"], $sql); // Problème? On ne saisit pas le nom de matière EDT $sql="INSERT INTO edt_corresp2 SET id_groupe='$id_groupe', nom_groupe_edt='".mysqli_real_escape_string($GLOBALS["mysqli"], $lig_edt->nom_edt)."';"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); if($insert) { $msg="Association enregistrée.
"; if((isset($_POST['mode_js']))&&($_POST['mode_js']='y')) { echo "Regroupement EDT associé : ".htmlentities($lig_edt->nom_edt); die(); } } else { $msg="Erreur lors de l'enregistrement de l'association.
"; if((isset($_POST['mode_js']))&&($_POST['mode_js']='y')) { echo "Regroupement EDT associé : ERREUR"; die(); } } /* $sql="SELECT * FROM edt_corresp2 WHERE id_groupe='$id_groupe';"; $res_grp=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_grp)>0) { $sql="UPDATE SELECT * FROM edt_corresp2 WHERE id_groupe='$id_groupe';"; $res_grp=mysqli_query($GLOBALS["mysqli"], $sql); } else { } */ } } } if((isset($_GET['div_suppr_assoc_regroupement']))&&(isset($_GET['id_groupe']))&&(preg_match("/^[0-9]{1,}$/", $_GET['id_groupe']))&&(isset($_GET['id_edt_tempo']))&&(preg_match("/^[0-9]{1,}$/", $_GET['id_edt_tempo']))) { $sql="SELECT * FROM edt_corresp2 ec2, edt_tempo et WHERE ec2.nom_groupe_edt=et.col1 AND et.id='".$_GET['id_edt_tempo']."' AND ec2.id_groupe='".$_GET['id_groupe']."';"; //echo "$sql
"; $res_grp=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_grp)==0) { echo "

L'identifiant de groupe Gepi et celui EDT ne correspondent pas.

"; } else { $sql="UPDATE edt_lignes SET traitement='', details_cours='' WHERE details_cours LIKE '".$_GET['id_groupe']."|%';"; $mise_a_blanc=mysqli_query($GLOBALS["mysqli"], $sql); $sql="DELETE FROM edt_corresp2 WHERE nom_groupe_edt IN (SELECT col1 FROM edt_tempo WHERE id='".$_GET['id_edt_tempo']."') AND id_groupe='".$_GET['id_groupe']."';"; //echo "$sql
"; $suppr=mysqli_query($GLOBALS["mysqli"], $sql); if($suppr) { echo "Association supprimée."; } else { echo "Erreur lors de la suppression de l'association."; } } die(); } if(($action=="editer_ec2")&&(isset($_POST['suppr_assoc']))&&($_POST['suppr_assoc']=="y")&&(isset($_POST['suppr']))) { check_token(); $msg=""; $nb_suppr=0; $suppr=$_POST['suppr']; for($loop=0;$loop"; $res_grp=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_grp)==0) { $msg.="Association n°".$suppr[$loop]." non trouvée.
"; } else { $lig_grp=mysqli_fetch_object($res_grp); $sql="UPDATE edt_lignes SET traitement='', details_cours='' WHERE details_cours LIKE '".$lig_grp->id_groupe."|%';"; $mise_a_blanc=mysqli_query($GLOBALS["mysqli"], $sql); $sql="DELETE FROM edt_corresp2 WHERE id='".$suppr[$loop]."';"; //echo "$sql
"; $del=mysqli_query($GLOBALS["mysqli"], $sql); if($del) { $nb_suppr++; } else { $msg.="Erreur lors de la suppression de l'association n°".$suppr[$loop].".
"; } } } $msg.=$nb_suppr." association(s) supprimée(s).
"; } if(($action=="editer_ec2")&&(isset($_POST['suppr_assoc']))&&($_POST['suppr_assoc']=="y2")&&(isset($_POST['suppr']))) { check_token(); $msg=""; $nb_suppr=0; $suppr=$_POST['suppr']; for($loop=0;$loop"; $res_grp=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_grp)==0) { $msg.="Association n°".$suppr[$loop]." non trouvée.
"; } else { $lig_grp=mysqli_fetch_object($res_grp); $sql="UPDATE edt_lignes SET traitement='', details_cours='' WHERE details_cours LIKE '".$lig_grp->id_groupe."|%';"; $mise_a_blanc=mysqli_query($GLOBALS["mysqli"], $sql); $sql="DELETE FROM edt_corresp2 WHERE id='".$suppr[$loop]."';"; //echo "$sql
"; $del=mysqli_query($GLOBALS["mysqli"], $sql); if($del) { $nb_suppr++; } else { $msg.="Erreur lors de la suppression de l'association n°".$suppr[$loop].".
"; } } } $msg.=$nb_suppr." association(s) supprimée(s).
"; } if((isset($_GET['maj_composition_groupe']))&&(isset($_GET['id_groupe']))&&(preg_match("/^[0-9]{1,}$/", $_GET['id_groupe']))&&(isset($_GET['id_edt_tempo']))&&(preg_match("/^[0-9]{1,}$/", $_GET['id_edt_tempo']))&&(isset($_GET['num_periode']))&&(preg_match("/^[0-9]{1,}$/", $_GET['num_periode']))) { //echo "plop"; $ts0=time(); //echo "ts0=$ts0
"; // Test pour vérifier que l'on a bien une correspondance $sql="SELECT 1=1 FROM edt_corresp2 ec2, edt_tempo et WHERE ec2.nom_groupe_edt=et.col1 AND et.id='".$_GET['id_edt_tempo']."' AND ec2.id_groupe='".$_GET['id_groupe']."';"; //echo "$sql
"; $res_grp=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_grp)==0) { echo "

L'identifiant de groupe Gepi et celui EDT ne correspondent pas.

"; } else { $ts=time(); //echo "
Temps écoulé ".($ts-$ts0)."
"; $tab_corresp_classe=array(); $sql="select * from edt_corresp where champ='classe';"; $res_corresp_classe=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_corresp_classe)>0) { while($lig_corresp_classe=mysqli_fetch_object($res_corresp_classe)) { $tab_corresp_classe[]=$lig_corresp_classe->nom_edt; } } echo "

L'identifiant de groupe Gepi et celui EDT correspondent.

"; // Problème: On peut avoir plusieurs regroupements EDT associés à un id_groupe selon ce qui a été sélectionné dans l'import EDT //$sql="SELECT * FROM edt_corresp2 WHERE id_groupe='".$_GET['id_groupe']."';"; //$sql="SELECT * FROM edt_corresp2 WHERE id_groupe='".$_GET['id_groupe']."' AND nom_groupe_edt LIKE '[%]';"; //$sql="SELECT * FROM edt_corresp2 WHERE id_groupe='".$_GET['id_groupe']."' AND nom_groupe_edt LIKE '[%]' AND nom_groupe_edt IN (SELECT col1 FROM edt_tempo);"; $sql="SELECT * FROM edt_corresp2 WHERE id_groupe='".$_GET['id_groupe']."' AND (nom_groupe_edt LIKE '[%]' OR nom_groupe_edt LIKE '%<%>%') AND nom_groupe_edt IN (SELECT col1 FROM edt_tempo);"; // Si on a plusieurs enregistrements, ça ne convient pas. //echo "$sql
"; $res_grp=mysqli_query($GLOBALS["mysqli"], $sql); $ts=time(); //echo "
Temps écoulé ".($ts-$ts0)."
"; if(mysqli_num_rows($res_grp)==0) { echo "

Aucun regroupement EDT n'est associé au groupe Gepi n°".$_GET['id_groupe'].".

"; } elseif(mysqli_num_rows($res_grp)>1) { echo "

Plusieurs regroupements EDT sont associés au groupe Gepi n°".$_GET['id_groupe'].".
Vous devez commencer par supprimer la ou les associations en trop.
Les regroupements associés sont :
"; while($lig_grp=mysqli_fetch_object($res_grp)) { $sql="SELECT id FROM edt_tempo WHERE col1='".mysqli_real_escape_string($GLOBALS["mysqli"], $lig_grp->nom_groupe_edt)."';"; //echo "$sql
"; $res_id=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_id)>0) { $lig_id=mysqli_fetch_object($res_id); echo "$lig_grp->nom_groupe_edt
"; } else { echo "$lig_grp->nom_groupe_edt
"; } //$current_nom_groupe=preg_replace("/\[/", "", preg_replace("/\]/", "", $lig_grp->nom_groupe_edt)); //echo "\$current_nom_groupe=$current_nom_groupe
"; } echo "

"; } else { $tab_info_grp=array(); $tab_ele_grp=array(); echo "

Le ou les groupes suivants sont associés à ce nom de regroupement d'élèves EDT :
"; $lig_grp=mysqli_fetch_object($res_grp); /* //echo "\$lig_grp->nom_groupe_edt=$lig_grp->nom_groupe_edt
"; $current_nom_groupe=preg_replace("/\[/", "", preg_replace("/\]/", "", $lig_grp->nom_groupe_edt)); //echo "\$current_nom_groupe=$current_nom_groupe
"; */ $nom_groupe_edt=$lig_grp->nom_groupe_edt; $nom_groupe_edt_clean=preg_replace("/\[/", "", preg_replace("/\]/", "", $lig_grp->nom_groupe_edt)); //$chaine_nom_groupe=""; /* $current_nom_groupe=preg_replace("/\[/", "", preg_replace("/\]/", "", $lig->nom_groupe_edt)); $sql="SELECT nom,prenom,date_naiss,sexe,n_national,groupes FROM edt_eleves_lignes WHERE (groupes like '$current_nom_groupe' OR groupes like '$current_nom_groupe, %' OR groupes like '%, $current_nom_groupe, %' OR groupes like '%, $current_nom_groupe');"; $sql="SELECT nom,prenom,date_naiss,sexe,n_national,groupes FROM edt_eleves_lignes WHERE (groupes like '$current_nom_groupe' OR groupes like '$current_nom_groupe, %' OR groupes like '%, $current_nom_groupe, %' OR groupes like '%, $current_nom_groupe');"; echo "$sql
"; */ //$sql=""; $sql="SELECT nom,prenom,date_naiss,sexe,n_national,groupes FROM edt_eleves_lignes WHERE ("; $tmp_tab_nom_groupe=explode(",", $lig_grp->nom_groupe_edt); $loop2=0; for($loop=0;$loop0) { $sql.=" OR "; } $sql.="classe like '$current_nom_groupe' OR classe like '$current_nom_groupe, %' OR classe like '%, $current_nom_groupe, %' OR classe like '%, $current_nom_groupe'"; $sql.=" OR groupes like '$current_nom_groupe' OR groupes like '$current_nom_groupe, %' OR groupes like '%, $current_nom_groupe, %' OR groupes like '%, $current_nom_groupe'"; $loop2++; } } $sql.=");"; if($debug_import_edt=="y") { echo "$sql
"; } $res_ele=mysqli_query($GLOBALS["mysqli"], $sql); $ts=time(); //echo "
Temps écoulé ".($ts-$ts0)."
"; if(mysqli_num_rows($res_ele)==0) { echo "

Le regroupement EDT est vide.

"; // Faut-il vider le groupe Gepi? } else { // Le groupe Gepi actuel: $current_group=get_group($_GET['id_groupe']); $reg_nom_groupe = $current_group["name"]; $reg_nom_complet = $current_group["description"]; $reg_matiere = $current_group["matiere"]["matiere"]; $reg_clazz = $current_group["classes"]["list"]; $reg_professeurs = (array)$current_group["profs"]["list"]; // Mettre à jour le $reg_eleves $old_reg_eleves = array(); $reg_eleves = array(); foreach ($current_group["periodes"] as $period) { if($period["num_periode"]!=""){ if($period["num_periode"]!=$num_periode) { $reg_eleves[$period["num_periode"]] = $current_group["eleves"][$period["num_periode"]]["list"]; } $old_reg_eleves[$period["num_periode"]] = $current_group["eleves"][$period["num_periode"]]["list"]; } } $texte_mail="Le groupe ".$reg_nom_groupe." ($reg_nom_complet) en ".$current_group["classlist_string"]." a été mis à jour d'après EDT pour la période n°$num_periode.\nLes élèves inscrits étaient:\n"; for($loop=0;$loopLes élèves du regroupement EDT sont : "; $cpt_ele=0; while($lig_ele=mysqli_fetch_object($res_ele)) { if($cpt_ele>0) { echo ", "; echo "
"; } echo $lig_ele->nom." ".$lig_ele->prenom." (".$lig_ele->date_naiss.") (".$lig_ele->n_national.")"; // Si $lig_ele->n_national est vide, il faut tenter d'identifier autrement l'élève (nom, prénom, date de naissance). if($lig_ele->n_national!="") { $sql="SELECT login, date_sortie FROM eleves WHERE no_gep='".$lig_ele->n_national."';"; } else { $sql="SELECT login, date_sortie FROM eleves WHERE nom='".$lig_ele->nom."' AND prenom='".$lig_ele->prenom."';"; } //echo "$sql
"; $res_nn=mysqli_query($GLOBALS["mysqli"], $sql); $ts=time(); //echo "
Temps écoulé ".($ts-$ts0)."
"; if(mysqli_num_rows($res_nn)==0) { echo " INE ".$lig_ele->n_national." non trouvé dans la table 'eleves'"; $reserves_sur_maj++; } elseif(mysqli_num_rows($res_nn)==1) { $lig_nn=mysqli_fetch_object($res_nn); $tab_ele_regroupement_edt['login'][]=$lig_nn->login; $tab_ele_regroupement_edt['date_sortie'][]=$lig_nn->date_sortie; $tab_ele_regroupement_edt['nom'][]=$lig_ele->nom; $tab_ele_regroupement_edt['prenom'][]=$lig_ele->prenom; $tab_ele_regroupement_edt['date_naiss'][]=$lig_ele->date_naiss; $tab_ele_regroupement_edt['n_national'][]=$lig_ele->n_national; //echo "
\$lig_nn->login=$lig_nn->login
"; //echo "
\$num_periode=$num_periode
"; $id_classe=""; $classe=""; $tmp_tab=get_class_periode_from_ele_login($lig_nn->login); /* echo "
";
						print_r($tmp_tab);
						echo "
"; */ if(isset($tmp_tab['periode'][$num_periode]['id_classe'])) { $id_classe=$tmp_tab['periode'][$num_periode]['id_classe']; $inscrire="y"; // Contrôler que le $id_classe est bien associé au groupe if(!in_array($id_classe, $reg_clazz)) { // Il faudrait vérifier que le nombre de périodes de la classe est le même que pour les classes déjà inscrites. $sql="SELECT MAX(num_periode) AS maxper FROM periodes WHERE id_classe='$id_classe';"; $res_per=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_per)==0) { $inscrire="n"; echo "
La classe de l'élève ".$lig_ele->nom." ".$lig_ele->prenom." n'a pas de période (l'élève ne peut pas être ajouté au groupe Gepi)"; $texte_mail.="Ajout de ".$lig_ele->nom." ".$lig_ele->prenom." impossible (élève non trouvé).\n"; $reserves_sur_maj++; } else { $lig_per=mysqli_fetch_object($res_per); if($lig_per->maxper==count($current_group["periodes"])) { $reg_clazz[]=$id_classe; } else { $inscrire="n"; echo "
La classe de l'élève ".$lig_ele->nom." ".$lig_ele->prenom." n'a pas le même nombre de périodes que les autres classes du groupe (l'élève ne peut pas être ajouté au groupe Gepi)"; $texte_mail.="Ajout de ".$lig_ele->nom." ".$lig_ele->prenom." impossible (nombre de périodes incompatible).\n"; $reserves_sur_maj++; } } } if($inscrire=="y") { $reg_eleves[$num_periode][]=$lig_nn->login; } } else { echo "
L'élève ".$lig_ele->nom." ".$lig_ele->prenom." n'est dans aucune classe (il ne peut pas être ajouté au groupe Gepi)"; $texte_mail.="Ajout de ".$lig_ele->nom." ".$lig_ele->prenom." impossible (élève inscrit dans aucune classe).\n"; $reserves_sur_maj++; } $tab_ele_regroupement_edt['id_classe'][]=$id_classe; if(isset($tmp_tab['periode'][$num_periode]['classe'])) {$classe=$tmp_tab['periode'][$num_periode]['classe'];} $tab_ele_regroupement_edt['classe'][]=$classe; } else { echo " Plusieurs élèves trouvés dans la table 'eleves' pour cet INE (???)"; $reserves_sur_maj++; } $cpt_ele++; } echo "

"; for($loop=0;$loop"; $temoin.="Bulletin non vide"; $temoin.=""; } else { $temoin.="Bulletin non vide"; } $temoin_bull_ou_cn_non_vide++; } $nb_notes_cn=nb_notes_ele_dans_tel_enseignement($current_login_ele, $current_id_groupe, $num_periode); if($nb_notes_cn>0) { $temoin.="Carnet de notes non vide: $nb_notes_cn notes"; $temoin_bull_ou_cn_non_vide++; } if($temoin_bull_ou_cn_non_vide>0) { $current_nom_prenom_eleve=get_nom_prenom_eleve($current_login_ele); echo "
Désinscription de l'élève ".$current_nom_prenom_eleve." impossible : $temoin"; $texte_mail.="Désinscription de ".$current_nom_prenom_eleve." impossible (carnet de notes ou bulletin non vide).\n"; $reg_eleves[$num_periode][]=$current_login_ele; $reserves_sur_maj++; } } } $ts=time(); //echo "
Temps écoulé ".($ts-$ts0)."
"; // 20160420: On ne modifie pas les modalités: $code_modalite_elect_eleves=$current_group["modalites"]; echo "

Mise à jour du groupe en période $num_periode : "; $update = update_group($_GET['id_groupe'], $reg_nom_groupe, $reg_nom_complet, $reg_matiere, $reg_clazz, $reg_professeurs, $reg_eleves, $code_modalite_elect_eleves); if($update) { echo "SUCCES"; if($reserves_sur_maj>0) {echo " avec les réserves mentionnées plus haut.";} $texte_mail.="\nNouvelle composition du groupe en période $num_periode:\n"; for($loop=0;$loop\r\n"; $tab_param_mail['cc']=$_SESSION['email']; $tab_param_mail['cc_name']=$_SESSION['prenom']." ".$_SESSION['nom']; } $destinataire_mail=""; $gepiAdminAdress=getSettingValue("gepiAdminAdress"); if(($gepiAdminAdress!="")&&(check_mail($gepiAdminAdress))) { $destinataire_mail=$gepiAdminAdress; $tab_param_mail['destinataire'][]=$destinataire_mail; } for($loop=0;$loopECHEC";} echo "

"; } } } die(); } $avec_js_et_css_edt="y"; $javascript_specifique[] = "lib/tablekit"; $utilisation_tablekit="ok"; //**************** EN-TETE ***************** $titre_page = "EDT : Inscriptions Eleves"; require_once("../lib/header.inc.php"); //**************** FIN EN-TETE ***************** //debug_var(); echo "

Retour Retour"; /* if($nb_reg_edt_corresp>0) {echo " | Editer les correspondances enregistrées ";} if($nb_reg_edt_lignes>0) {echo " | Effectuer les rapprochements d'après le dernier XML envoyé";} if($nb_reg_edt_lignes>0) {echo " | Remplir l'EDT d'après le dernier XML envoyé et d'après les rapprochements effectués";} */ if($action!="") {echo " | Autre import ";} $sql="SELECT 1=1 FROM edt_eleves_lignes LIMIT 5;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { echo " | Effectuer les comparaisons d'après le dernier EDT_ELEVES.xml importé "; } $sql="SELECT 1=1 FROM edt_corresp2 LIMIT 5;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { echo " | Contrôler les associations groupe Gepi/nom de regroupement EDT "; } echo " | Importer l'emploi du temps "; echo "

Import des inscriptions élèves dans les enseignements depuis un XML d'EDT

"; // 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"; require("../lib/footer.inc.php"); die(); } if($action=="") { // 20160908 : Ajouter un formulaire pour activer/désactiver l'envoi de mail if(getSettingANon("MajInscriptEleEdtEnvoiMail")) { $checked_envoi_y=""; $checked_envoi_n=" checked"; } else { $checked_envoi_y=" checked"; $checked_envoi_n=""; } echo "
".add_token_field()."

Lors de la modification des membres élèves d'un groupe, un mail peut être envoyé au professeur (si son mail est renseigné).


".add_token_field()."

Veuillez fournir l'export EXP_ELEVE.xml d'EDT :

"; if ($gepiSettings['unzipped_max_filesize']>=0) { echo "

REMARQUE : Vous pouvez fournir à Gepi le fichier compressé en ZIP.

"; } echo "

NOTE : Le fichier EXP_ELEVE.xml importé va être traité en identifiant les élèves par leur numéro INE (N_NATIONAL dans le fichier XML et no_gep dans Gepi).
Les groupes d'élèves EDT auxquels appartient chaque élève sont donnés dans la liste CLASSE où les groupes sont séparés par une virgule (le premier groupe est généralement la classe de l'élève et les suivants désignent des groupes d'élèves).
Lors de l'import du EXP_Cours.xml d'EDT, les associations groupe_Gepi/nom_de_groupe_EDT ont été enregistrées.
C'est ce qui va permettre de rechercher les différences.

"; require("../lib/footer.inc.php"); die(); } elseif($action=="upload") { 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'); $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(); } 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."/edt_eleves.xml"; $res_copy=copy("$source_file" , "$dest_file"); $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(); } } } 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(); } echo "

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

\n"; echo "

Ré-écriture d'un XML élagué.

\n"; echo ""; $f=fopen($dest_file, "r"); $dest_file2="../temp/".$tempdir."/edt_eleves_elague.xml"; $f2=fopen($dest_file2, "w+"); fwrite($f2, ''."\n"); $cpt=0; $nb_ele=0; while(!feof($f)) { $ligne = ensure_utf8(fgets($f, 4096)); //echo "$cpt : ".htmlentities($ligne)."
"; if(trim($ligne)!="") { /*if((preg_match('/^<\?xml/', $ligne))|| (preg_match("/^
/i", $ligne))|| (preg_match("/^/i", $ligne))|| (preg_match("/^/i", $ligne))|| (preg_match("/^/i", $ligne))|| (preg_match("/^/i", $ligne))|| (preg_match("/^/i", $ligne))|| (preg_match("|^|i", $ligne))|| (preg_match("|^
|i", $ligne))) { */ if((preg_match("/^/i", $ligne))|| (preg_match("/^/i", $ligne))|| (preg_match("/^/i", $ligne))|| (preg_match("/^/i", $ligne))|| (preg_match("/^/i", $ligne))|| (preg_match("/^/i", $ligne))|| (preg_match("|^|i", $ligne))|| (preg_match("|^|i", $ligne))) { fwrite($f2, $ligne); echo ". "; flush(); if(preg_match("/^/i", $ligne)) { $nb_ele++; } } } $cpt++; } echo "
"; fclose($f); fclose($f2); $dest_file=$dest_file2; echo "

$nb_ele élève(s) trouvés dans ce fichier.

ATTENTION : Si ce n'est pas l'effectif de l'établissement, vous avez peut-être oublié de sélectionner des classes pour réaliser l'export EXP_ELEVE.xml.
Si une classe n'est pas sélectionnée, les enseignements/groupes multi-classe qui font intervenir cette classe pourraient être amputés de membres de cette classe.
Exemple : Si vous avez un groupe AGL1_4B_4C faisant intervenir des élèves de 4B et 4C, mais que seule la 4B a été sélectionnée, il vous sera proposé par la suite de désincrire du groupe les élèves de 4C puisque non trouvés dans le fichier XML parmi les membres du regroupement EDT associé à AGL1_4B_4C.

"; $eleves_xml=simplexml_load_file($dest_file); if(!$eleves_xml) { echo "

ECHEC du chargement du fichier avec simpleXML.

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

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

\n"; require("../lib/footer.inc.php"); die(); } */ /* ... 2 XXXXXXXX XXXXXXX XX/XX/XXXX BERNAY FRANCE FRANCE F XXXXXXXX ... 3D, <3D> <Dédoublement> 3D GR2, <3D> <LATIN> LAT, <3D> <BILANGUE> BIL, <3D> <DP3> NON-DP3 3ALL1GR.1, 3D GR2, 3LATINGR.1, GR_3C3D_BIL 4 D N 3EME BILANGUES 4EME BILANGUES DEMI-PENSIONNAIRE DANS L'ETABLISSEMENT ANGLAIS LV1 ALLEMAND LV2 LATIN */ $tab_champs=array("NUMERO", "NOM", "PRENOM", "DATE_NAISS", "SEXE", "N_NATIONAL", "CLASSE", "GROUPES", "OPTION_1", "OPTION_2", "OPTION_3", "OPTION_4", "OPTION_5", "OPTION_6", "OPTION_7", "OPTION_8", "OPTION_9", "OPTION_10", "OPTION_11", "OPTION_12"); for($loop=0;$loopParcours du XML.

\n"; echo ""; $cpt=0; $tab_ele=array(); //$tab_classes_trouvees=array(); foreach ($eleves_xml->children() as $key => $cur_eleve) { if($key=='Eleves') { /* echo "

$key

"; echo "
";
			print_r($cur_eleve);
			echo "
"; */ foreach ($cur_eleve->children() as $key2 => $value2) { if(in_array($key2, $tab_champs)) { $champ_courant=$tab_champs2[$key2]; $tab_ele[$cpt]["$champ_courant"]=trim($value2); //echo "$key2:$value2
"; } } /* echo "

\$tab_ele[$cpt]

"; echo "
";
			print_r($tab_ele[$cpt]);
			echo "
"; */ // Enregistrer la ligne dans edt_lignes $sql="INSERT INTO edt_eleves_lignes SET "; $sql_ajout=""; for($loop=0;$loop"; if(isset($tab_ele[$cpt][$champ_courant])) { if($sql_ajout!="") {$sql_ajout.=",";} $sql_ajout.=" ".$champ_courant."='".mysqli_real_escape_string($GLOBALS["mysqli"], $tab_ele[$cpt][$champ_courant])."'"; } } //echo "\$sql_ajout=$sql_ajout
"; if($sql_ajout!="") { $sql.=$sql_ajout.";"; //echo "$sql
"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); if(!$insert) { echo "$sql
"; } /* else { echo "$sql
"; } */ } echo ". "; flush(); $cpt++; } } echo "
"; echo "

$cpt élève(s) trouvés dans ce fichier.

"; echo creer_div_infobulle("div_search","Formulaire de recherche dans la table 'eleves'","","

Saisir une portion du nom à rechercher...

Nom:
Prénom:
","",32,0,"y","y","n","n"); $cpt=0; $chaine_ine_pb=""; //$tab_ine_pb=array(); $tab_ine_pb_id=array(); //$sql="SELECT DISTINCT id, nom, prenom, n_national, date_naiss, classe FROM edt_eleves_lignes WHERE n_national NOT IN (SELECT no_gep FROM eleves);"; $sql="SELECT DISTINCT id, nom, prenom, n_national, date_naiss, classe FROM edt_eleves_lignes WHERE classe!='' AND n_national NOT IN (SELECT no_gep FROM eleves);"; $res_ine_non_trouve=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_ine_non_trouve)>0) { $chaine_ine_pb.="

Voici la liste des élèves concernés :

"; $cpt=0; while($lig=mysqli_fetch_object($res_ine_non_trouve)) { $chaine_ine_pb.=" "; /* if($lig->n_national!="") { $tab_ine_pb[]=$lig->n_national; } */ $tab_ine_pb_id[]=$lig->id; $cpt++; } $chaine_ine_pb.="
Nom Prénom Naissance INE (EDT) Classe INE corrigé Chercher
$lig->nom nom."\" /> id."\" /> $lig->prenom prenom."\" /> $lig->date_naiss $lig->n_national $lig->classe Chercher
"; } $chaine_ine_pb_complement=""; // Cas GALLIER, GALLIER-GENTES inscrite deux fois dans Sconet et le principal adjoint a conservé dans sa base EDT la mauvaise élève (celle qui dans Sconet a une date de sortie renseignée) $sql="SELECT DISTINCT id, nom, prenom, n_national, date_naiss, classe FROM edt_eleves_lignes WHERE classe!='' AND n_national NOT IN (SELECT no_gep FROM eleves e, j_eleves_classes jec WHERE e.login=jec.login);"; $res_ine_non_trouve=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_ine_non_trouve)>0) { while($lig=mysqli_fetch_object($res_ine_non_trouve)) { //if(!in_array($lig->n_national, $tab_ine_pb)) { if(!in_array($lig->id, $tab_ine_pb_id)) { $chaine_ine_pb_complement.=" $lig->nom nom."\" /> id."\" /> $lig->prenom prenom."\" /> $lig->date_naiss $lig->n_national $lig->classe Chercher "; /* if($lig->n_national!="") { $tab_ine_pb[]=$lig->n_national; } */ $cpt++; } } if($chaine_ine_pb_complement!="") { $chaine_ine_pb.="

Un ou des élèves du fichiers EDT correspondent à des élèves qui ne sont pas/plus dans des classes dans Gepi.
Certains rapprochements sont peut-être nécessaires.
Sinon, il faut (re)mettre l'élève dans la classe dans Gepi.

Voici la liste des élèves concernés :

".$chaine_ine_pb_complement."
Nom Prénom Naissance INE (EDT) Classe INE corrigé Chercher
"; } } if($cpt>0) { echo "
".add_token_field()."

Un ou des INE du XML importé n'ont pas été trouvés dans la table 'eleves'.
Cela peut arriver dans plusieurs cas :

  • Vous avez mis à jour la liste des élèves dans EDT sans effectuer le même ajout d'élève dans Gepi (ou sans prendre en compte un export XML de Sconet pour procéder à une mise à jour non manuelle).
  • La liste des élèves dans EDT n'est pas à jour (INE non renseigné dans EDT, ou mauvais INE (l'INE peut changer dans les premiers jours de l'arrivée d'un élève dans l'établissement par exemple dans le cas où il vient d'une autre académie)).
"; echo $chaine_ine_pb; echo "

Il est recommandé de faire le rapprochement avant rechercher les modifications d'appartenance aux groupes/enseignements.

"; } echo "

Rechercher les modifications d'appartenance aux groupes/enseignements.

"; echo ""; require("../lib/footer.inc.php"); die(); } elseif($action=="comparer") { echo ""; if(!isset($num_periode)) { echo "

Choix de la période

"; echo affiche_tableau_periodes_et_date_fin_classes(); $sql="SELECT DISTINCT num_periode FROM periodes p, classes c WHERE c.id=p.id_classe ORDER BY num_periode;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)==0) { echo "

Aucune période n'est encore définie.

"; } else { echo "

Rechercher les différences d'affectation des élèves sur :
"; while($lig=mysqli_fetch_object($res)) { echo "la num_periode."'>période ".$lig->num_periode."
"; } echo "

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

Différences EDT/Gepi sur la période $num_periode

"; if((getSettingAOui('autorise_edt_tous'))|| ((getSettingAOui('autorise_edt_admin'))&&($_SESSION['statut']=='administrateur'))) { $titre_infobulle="EDT de "; $texte_infobulle=""; $tabdiv_infobulle[]=creer_div_infobulle('edt_prof',$titre_infobulle,"",$texte_infobulle,"",40,0,'y','y','n','n'); //https://127.0.0.1/steph/gepi_git_trunk/edt_organisation/index_edt.php?login_edt=boireaus&type_edt_2=prof&no_entete=y&no_menu=y&lien_refermer=y function affiche_lien_edt_prof($login_prof, $info_prof) { return " EDT"; } $titre_infobulle="EDT de la classe de "; $texte_infobulle=""; $tabdiv_infobulle[]=creer_div_infobulle('edt_classe',$titre_infobulle,"",$texte_infobulle,"",40,0,'y','y','n','n'); echo " \n"; } else { function affiche_lien_edt_prof($login_prof, $info_prof) { return ""; } } //$sql="SELECT DISTINCT nom_edt FROM edt_corresp WHERE champ='groupe';"; $sql="SELECT DISTINCT nom_groupe_edt FROM edt_corresp2 ORDER BY nom_groupe_edt;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)==0) { echo "

Aucun enregistrement n'a été trouvé dans 'edt_corresp2'.

"; require("../lib/footer.inc.php"); die(); } $tab_corresp_classe=array(); $sql="select * from edt_corresp where champ='classe';"; $res_corresp_classe=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_corresp_classe)>0) { while($lig_corresp_classe=mysqli_fetch_object($res_corresp_classe)) { $tab_corresp_classe[]=$lig_corresp_classe->nom_edt; } } // 20160504 $tab_eleves_sortis=array(); $sql="SELECT DISTINCT login FROM eleves WHERE date_sortie IS NOT NULL AND date_sortie NOT LIKE '0000-00-00%' AND date_sortie<='".strftime("%Y-%m-%d %H:%M:%S")."';"; //echo "$sql
"; $res_sortis=mysqli_query($GLOBALS["mysqli"], $sql); while($lig_sorti=mysqli_fetch_object($res_sortis)) { $tab_eleves_sortis[]=$lig_sorti->login; } /* echo "\$tab_eleves_sortis
";
	print_r($tab_eleves_sortis);
	echo "
"; */ $sql="TRUNCATE edt_tempo;"; $menage=mysqli_query($GLOBALS["mysqli"], $sql); echo " "; $tab_nom_classe=array(); $cpt_regroupement=0; $chaine_js_div=""; while($lig=mysqli_fetch_object($res)) { $sql="INSERT INTO edt_tempo set col1='".mysqli_real_escape_string($GLOBALS["mysqli"], $lig->nom_groupe_edt)."';"; if($debug_import_edt=="y") { echo "$sql
"; } $insert=mysqli_query($GLOBALS["mysqli"], $sql); $current_id_temp=mysqli_insert_id($GLOBALS["mysqli"]); $temoin_differences=0; echo "
"; echo ""; echo "

Regroupement d'élèves ".$lig->nom_groupe_edt."

"; $sql="SELECT DISTINCT id_groupe FROM edt_corresp2 WHERE nom_groupe_edt='".mysqli_real_escape_string($GLOBALS["mysqli"], $lig->nom_groupe_edt)."';"; if($debug_import_edt=="y") { echo "$sql
"; } $res_grp=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_grp)==0) { echo "

Aucun groupe n'est associé au nom EDT ".$lig->nom_groupe_edt.".

"; } else { $tab_info_grp=array(); $tab_ele_grp=array(); $tab_prof_grp=array(); echo "

Le ou les groupes suivants sont associés à ce nom de regroupement d'élèves EDT :
"; while($lig_grp=mysqli_fetch_object($res_grp)) { $tab_info_grp[$lig_grp->id_groupe]=get_info_grp($lig_grp->id_groupe); echo $tab_info_grp[$lig_grp->id_groupe]."
"; $tmp_tab=get_eleves_from_groupe($lig_grp->id_groupe, $num_periode); $tab_ele_grp[$lig_grp->id_groupe]['list']=$tmp_tab['list']; $tab_ele_grp[$lig_grp->id_groupe]['users']=$tmp_tab['users']; $tab_prof_grp[$lig_grp->id_groupe]=get_profs_for_group($lig_grp->id_groupe); } echo "

"; $nom_groupe_edt=$lig->nom_groupe_edt; $nom_groupe_edt_clean=preg_replace("/\[/", "", preg_replace("/\]/", "", $lig->nom_groupe_edt)); //$chaine_nom_groupe=""; /* $current_nom_groupe=preg_replace("/\[/", "", preg_replace("/\]/", "", $lig->nom_groupe_edt)); $sql="SELECT nom,prenom,date_naiss,sexe,n_national,groupes FROM edt_eleves_lignes WHERE (groupes like '$current_nom_groupe' OR groupes like '$current_nom_groupe, %' OR groupes like '%, $current_nom_groupe, %' OR groupes like '%, $current_nom_groupe');"; */ //$sql=""; $sql="SELECT id,nom,prenom,date_naiss,sexe,n_national,groupes FROM edt_eleves_lignes WHERE ("; $tmp_tab_nom_groupe=explode(",", $lig->nom_groupe_edt); $loop2=0; for($loop=0;$loop0) { //$chaine_nom_groupe.=", "; //$sql.=" UNION "; $sql.=" OR "; } /* $sql="(SELECT nom,prenom,date_naiss,sexe,n_national,groupes FROM edt_eleves_lignes WHERE (groupes like '$current_nom_groupe' OR groupes like '$current_nom_groupe, %' OR groupes like '%, $current_nom_groupe, %' OR groupes like '%, $current_nom_groupe'))"; */ /* $sql.="groupes like '$current_nom_groupe' OR groupes like '$current_nom_groupe, %' OR groupes like '%, $current_nom_groupe, %' OR groupes like '%, $current_nom_groupe'"; */ $sql.="classe like '$current_nom_groupe' OR classe like '$current_nom_groupe, %' OR classe like '%, $current_nom_groupe, %' OR classe like '%, $current_nom_groupe'"; $sql.=" OR groupes like '$current_nom_groupe' OR groupes like '$current_nom_groupe, %' OR groupes like '%, $current_nom_groupe, %' OR groupes like '%, $current_nom_groupe'"; $loop2++; } } $sql.=");"; if($debug_import_edt=="y") { echo "$sql
"; } if($loop2>0) { $res_ele=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_ele)==0) { //echo "

Aucun élève n'a dans ses groupes le nom EDT ".$current_nom_groupe.".

"; //echo "

Aucun élève n'a dans ses groupes le nom EDT ".$chaine_nom_groupe.".

"; echo "

Aucun élève n'a dans ses groupes le nom EDT ".$nom_groupe_edt.".

"; } else { $tab_ele_regroupement_edt=array(); echo "

Le ou les élèves suivants ont dans leurs groupes le nom EDT ".$current_nom_groupe." :
"; $cpt_ele=0; while($lig_ele=mysqli_fetch_object($res_ele)) { echo $lig_ele->nom." ".$lig_ele->prenom." (".$lig_ele->date_naiss.") (".$lig_ele->n_national.")"; // Si $lig_ele->n_national est vide, il faut tenter d'identifier autrement l'élève (nom, prénom, date de naissance). if($lig_ele->n_national!="") { $sql="SELECT login, date_sortie FROM eleves WHERE no_gep='".$lig_ele->n_national."';"; } else { $sql="SELECT login, date_sortie FROM eleves WHERE nom='".$lig_ele->nom."' AND prenom='".$lig_ele->prenom."';"; } //echo "$sql
"; $res_nn=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_nn)==0) { echo " INE non trouvé dans la table 'eleves'"; } elseif(mysqli_num_rows($res_nn)==1) { $lig_nn=mysqli_fetch_object($res_nn); $tab_ele_regroupement_edt['id_edt_eleves_lignes'][]=$lig_ele->id; $tab_ele_regroupement_edt['login'][]=$lig_nn->login; $tab_ele_regroupement_edt['date_sortie'][]=$lig_nn->date_sortie; $tab_ele_regroupement_edt['nom'][]=$lig_ele->nom; $tab_ele_regroupement_edt['prenom'][]=$lig_ele->prenom; $tab_ele_regroupement_edt['date_naiss'][]=$lig_ele->date_naiss; $tab_ele_regroupement_edt['n_national'][]=$lig_ele->n_national; /* $classes=""; $tmp_tab=get_class_from_ele_login($lig_nn->login); if(isset($tmp_tab['liste_nbsp'])) {$classes=$tmp_tab['liste_nbsp'];} */ $id_classe=""; $classe=""; $tmp_tab=get_class_periode_from_ele_login($lig_nn->login); if(isset($tmp_tab['periode'][$num_periode]['id_classe'])) {$id_classe=$tmp_tab['periode'][$num_periode]['id_classe'];} $tab_ele_regroupement_edt['id_classe'][]=$id_classe; if(isset($tmp_tab['periode'][$num_periode]['classe'])) {$classe=$tmp_tab['periode'][$num_periode]['classe'];} $tab_ele_regroupement_edt['classe'][]=$classe; } else { echo " Plusieurs élèves trouvés dans la table 'eleves' pour cet INE (???)"; } echo "
"; $cpt_ele++; } echo "

"; echo "

Effectif : $cpt_ele

"; foreach($tab_ele_grp as $current_id_groupe => $current_tab_ele) { $tab_test_association_grp_classe=array(); $diff=array_diff($current_tab_ele['list'], $tab_ele_regroupement_edt['login']); $diff2=array_diff($tab_ele_regroupement_edt['login'], $current_tab_ele['list']); $au_moins_une_vraie_diff=0; foreach($diff as $current_diff) { if(!in_array($current_diff, $tab_eleves_sortis)) { //echo "$current_diff
"; $au_moins_une_vraie_diff++; break; } } foreach($diff2 as $current_diff) { if(!in_array($current_diff, $tab_eleves_sortis)) { //echo "$current_diff
"; $au_moins_une_vraie_diff++; break; } } //echo "\$au_moins_une_vraie_diff=$au_moins_une_vraie_diff
"; if(((count($diff)==0)&&(count($diff2)==0))||($au_moins_une_vraie_diff==0)) { echo "

Le groupe ".$tab_info_grp[$current_id_groupe]." est à jour.

"; } else { /* echo "diff
";
							print_r($diff);
							echo "
"; echo "diff2
";
							print_r($diff2);
							echo "
"; */ $temoin_bull_ou_cn_non_vide=0; $temoin_differences++; echo "

Différences pour ".$tab_info_grp[$current_id_groupe]." Élèves

"; /* echo "
";
							print_r($diff);
							echo "
							
"; echo "
";
							print_r($diff2);
							echo "
							
"; */ //================================== $details_lignes=""; $sql="SELECT * FROM edt_lignes WHERE classe='".mysqli_real_escape_string($GLOBALS["mysqli"], $nom_groupe_edt)."' ORDER BY mat_code, prof_nom, prof_prenom, jour, h_debut;"; //$details_lignes.="
$sql
"; $res_edt_lig=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_edt_lig)>0) { $details_lignes.="".(($debug_import_edt=="y") ? " " : "")." "; while($lig_edt_lig=mysqli_fetch_object($res_edt_lig)) { $details_lignes.=" ".(($debug_import_edt=="y") ? " " : "")." "; } $details_lignes.=" "; } //================================== echo "
Regroupement EDT
".htmlentities($nom_groupe_edt_clean)." ".$details_lignes."
Enseignement Gepi
".$tab_info_grp[$current_id_groupe]; if(isset($tab_prof_grp[$current_id_groupe]["users"])) { echo "
"; $cpt_prof=0; foreach($tab_prof_grp[$current_id_groupe]["users"] as $tab_prof){ if($cpt_prof>0){echo ", ";} echo casse_mot($tab_prof['prenom'],'majf2')." ".my_strtoupper($tab_prof['nom']); echo affiche_lien_edt_prof($tab_prof["login"], $tab_prof["prenom"]." ".$tab_prof["nom"]); } } echo "
".((($debug_import_edt=="y")||($avec_colonnes_detail_groupes_eleves=="y")) ? " " : "")." "; for($loop=0;$loop"; print_r($tab_ele_regroupement_edt); echo ""; */ } echo " ".((($debug_import_edt=="y")||($avec_colonnes_detail_groupes_eleves=="y")) ? " " : "")." "; } echo "
Nom Prénom INE ClasseClasse(s) EDT Groupe(s) EDT
".$temoin." ".$tab_ele_regroupement_edt['nom'][$loop]." ".$tab_ele_regroupement_edt['prenom'][$loop]." ".$tab_ele_regroupement_edt['n_national'][$loop]." ".$tab_ele_regroupement_edt['classe'][$loop]; if($tab_ele_regroupement_edt['id_classe'][$loop]!="") { if(!isset($tab_test_association_grp_classe[$tab_ele_regroupement_edt['id_classe'][$loop]])) { $sql="SELECT 1=1 FROM j_groupes_classes WHERE id_groupe='$current_id_groupe' AND id_classe='".$tab_ele_regroupement_edt['id_classe'][$loop]."';"; //echo "$sql
"; $test_grp_clas=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test_grp_clas)==0) { $tab_test_association_grp_classe[$tab_ele_regroupement_edt['id_classe'][$loop]]=" ATTENTION"; } else { $tab_test_association_grp_classe[$tab_ele_regroupement_edt['id_classe'][$loop]]=""; } } echo $tab_test_association_grp_classe[$tab_ele_regroupement_edt['id_classe'][$loop]]; } echo "
".preg_replace("/, /",",
\n", htmlentities(get_valeur_champ('edt_eleves_lignes', "id='".$tab_ele_regroupement_edt['id_edt_eleves_lignes'][$loop]."'", "classe")))."
".preg_replace("/, /",",
\n", htmlentities(get_valeur_champ('edt_eleves_lignes', "id='".$tab_ele_regroupement_edt['id_edt_eleves_lignes'][$loop]."'", "groupes")))."

Effectif : ".count($tab_ele_regroupement_edt['login'])."

".((($debug_import_edt=="y")||($avec_colonnes_detail_groupes_eleves=="y")) ? " " : "")." "; foreach($current_tab_ele['users'] as $current_login_ele => $current_ele) { $temoin=""; if(in_array($current_login_ele, $diff)) { $temoin="Attention"; print_r($current_ele); echo ""; */ if (!test_before_eleve_removal($current_login_ele, $current_id_groupe, $num_periode)) { if(($acces_prepa_conseil_edit_limite=="y")&&($current_ele['classe']!="")) { $temoin.=""; $temoin.="Bulletin non vide"; $temoin.=""; } else { $temoin.="Bulletin non vide"; } $temoin_bull_ou_cn_non_vide++; } $nb_notes_cn=nb_notes_ele_dans_tel_enseignement($current_login_ele, $current_id_groupe, $num_periode); if($nb_notes_cn>0) { $temoin.="Carnet de notes non vide: $nb_notes_cn notes"; $temoin_bull_ou_cn_non_vide++; } } echo " ".((($debug_import_edt=="y")||($avec_colonnes_detail_groupes_eleves=="y")) ? " " : "")." "; } echo "
Nom Prénom INE ClasseClasse(s) EDT Groupe(s) EDT
".$temoin." ".$current_ele['nom']." ".$current_ele['prenom']." ".$current_ele['no_gep']." "; if (($debug_import_edt=="y")||($avec_colonnes_detail_groupes_eleves=="y")) { $debug_edt_eleves_lignes_classe=""; $debug_edt_eleves_lignes_groupes=""; $sql="SELECT eel.* FROM edt_eleves_lignes eel, eleves e WHERE eel.n_national=e.no_gep AND e.no_gep!='' AND e.login='".$current_login_ele."';"; $res_debug_ele=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_debug_ele)>0) { $lig_debug_ele=mysqli_fetch_object($res_debug_ele); $debug_edt_eleves_lignes_classe=$lig_debug_ele->classe; $debug_edt_eleves_lignes_groupes=$lig_debug_ele->groupes; } else { $sql="SELECT eel.* FROM edt_eleves_lignes eel, eleves e WHERE eel.nom=e.nom AND eel.prenom=e.prenom AND e.login='".$current_login_ele."';"; //$debug_edt_eleves_lignes_classe.=$sql."
"; $res_debug_ele=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_debug_ele)==1) { $lig_debug_ele=mysqli_fetch_object($res_debug_ele); $debug_edt_eleves_lignes_classe=$lig_debug_ele->classe; $debug_edt_eleves_lignes_groupes=$lig_debug_ele->groupes; } } } if(!isset($tab_nom_classe[$current_ele['classe']])) { $tab_nom_classe[$current_ele['classe']]=get_nom_classe($current_ele['classe']); } echo $tab_nom_classe[$current_ele['classe']]; echo "
".preg_replace("/, /",",
\n", htmlentities($debug_edt_eleves_lignes_classe))."
".preg_replace("/, /",",
\n", htmlentities($debug_edt_eleves_lignes_groupes))."

Effectif : ".count($current_tab_ele['users'])."

"; $sql="SELECT MAX(p.num_periode) AS maxper FROM j_groupes_classes jgc, periodes p WHERE p.id_classe=jgc.id_classe AND jgc.id_groupe='$current_id_groupe';"; $res_per=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_per)==0) { $maxper=$num_periode; } else { $lig_per=mysqli_fetch_object($res_per); $maxper=$lig_per->maxper; } for($loop_per=$num_periode;$loop_per<=$maxper;$loop_per++) { echo " Mettre à jour en période $loop_per
"; } echo "

Groupe n°$current_id_groupe
"; } } } } } echo "
"; echo "
"; if($temoin_differences==0) { if($chaine_js_div!="") { $chaine_js_div.=", "; } $chaine_js_div.="'$cpt_regroupement'"; } $cpt_regroupement++; } if($chaine_js_div!="") { echo "

Afficher tous les regroupements
N'afficher que les regroupements avec différence trouvée

"; } require("../lib/footer.inc.php"); die(); } elseif($action=="editer_ec2") { echo "

Voici les associations groupe Gepi/nom de regroupement EDT
Deux formulaires vont être proposés :
Le deuxième permet de contrôler qu'un groupe Gepi n'est pas associé à plusieurs regroupements EDT (et de corriger si nécessaire).

"; // Ménage $sql="DELETE FROM edt_corresp2 WHERE id_groupe NOT IN (SELECT id FROM groupes);"; $del=mysqli_query($GLOBALS["mysqli"], $sql); $sql="SELECT DISTINCT nom_groupe_edt FROM edt_corresp2 ORDER BY nom_groupe_edt;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)==0) { echo "

Aucune association n'est enregistrée.

"; } else { echo "
".add_token_field()." "; $cpt=0; while($lig=mysqli_fetch_object($res)) { $sql="SELECT * FROM edt_corresp2 WHERE nom_groupe_edt='".mysqli_real_escape_string($GLOBALS["mysqli"], $lig->nom_groupe_edt)."' ORDER BY mat_code_edt;"; $res2=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res2)>0) { while($lig2=mysqli_fetch_object($res2)) { echo " "; $cpt++; } } } echo "
Nom de
regroupement EDT
Groupes Gepi associés
Supprimer
l'association
Tout cocher / Tout décocher
Matière EDT Groupe Gepi Éditer
".get_info_grp($lig2->id_groupe)." Editer

NOTES : Seuls les enseignements Gepi, pour lesquels une association avec un regroupement EDT existe, sont proposés pour la mise à jour des affectations d'élèves.
Supprimez les associations erronées.

"; } //================================================================= echo ""; $sql="SELECT DISTINCT ec.id_groupe FROM classes c, j_groupes_classes jgc, edt_corresp2 ec WHERE c.id=jgc.id_classe AND jgc.id_groupe=ec.id_groupe ORDER BY c.classe, ec.mat_code_edt;"; //echo "$sql
"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)==0) { echo "

Aucune association n'est enregistrée.

"; } else { $tab_assoc_a_1=array(); echo "
".add_token_field()."

Afficher/Masquer les lignes pour lesquelles il n'y a qu'un seul regroupement EDT associé à un groupe Gepi.

"; $cpt=0; while($lig=mysqli_fetch_object($res)) { $sql="SELECT * FROM edt_corresp2 WHERE id_groupe='".$lig->id_groupe."' ORDER BY nom_groupe_edt, mat_code_edt;"; $res2=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res2)>0) { $current_group=get_group($lig->id_groupe, array("matieres", "classes", "profs")); $lig2=mysqli_fetch_object($res2); $rowspan=""; if(mysqli_num_rows($res2)>1) { $rowspan=" rowspan='".mysqli_num_rows($res2)."'"; } else { $tab_assoc_a_1[]=$cpt; } echo " ".$current_group['name']." ".$current_group['description']." ".$current_group['matiere']['matiere']." ".$current_group['classlist_string']." ".$current_group['profs']['proflist_string']." Editer "; $cpt++; while($lig2=mysqli_fetch_object($res2)) { echo " "; $cpt++; } } } echo "
Groupe Gepi Nom de
regroupement EDT
Matière EDT Suppr
Tout cocher / Tout décocher
Éditer
Id Nom Descr. Matière Classes Profs
".$lig->id_groupe."".get_info_grp($lig->id_groupe)."

NOTES : Seuls les enseignements Gepi, pour lesquels une association avec un regroupement EDT existe, sont proposés pour la mise à jour des affectations d'élèves.
Supprimez les associations erronées.

"; } //================================================================= require("../lib/footer.inc.php"); die(); } elseif((isset($id_groupe))&&($action=="editer_ec3")) { $current_group=get_group($id_groupe); echo "

Regroupement EDT associé à ".get_info_grp($id_groupe)." Editer

"; $sql="SELECT * FROM edt_corresp WHERE champ='groupe' ORDER BY nom_edt;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)==0) { echo "

Aucune association n'est enregistrée.

"; } else { $tab_assoc=array(); $sql="SELECT * FROM edt_corresp2 WHERE id_groupe='$id_groupe' ORDER BY nom_groupe_edt;"; $res2=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res2)>0) { while($lig2=mysqli_fetch_object($res2)) { $tab_assoc[]=$lig2->nom_groupe_edt; } } if(count($tab_assoc)>1) { echo "

ANOMALIE : Le groupe/enseignement Gepi est associé à ".count($tab_assoc)." regroupements EDT ("; for($loop=0;$loop0) { echo ", "; } echo $tab_assoc[$loop]; } echo ").
Il ne devrait y en avoir qu'un.
Choisissez ci-dessous le bon et validez.

"; } $lignes_options=" "; while($lig=mysqli_fetch_object($res)) { $selected=""; if(in_array($lig->nom_edt, $tab_assoc)) { $selected=" selected"; } $lignes_options.=" "; } echo "
".add_token_field()."

Regroupement EDT à associer :

"; } require("../lib/footer.inc.php"); die(); } else { echo "plop"; } require("../lib/footer.inc.php"); ?>