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();
}
$auth_sso=getSettingValue("auth_sso") ? getSettingValue("auth_sso") : "";
$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;
}
//================================================
if (isset($_POST['is_posted']) and ($_POST['is_posted'] == "1")) {
check_token();
// Détermination du format de la date de naissance
$call_eleve_test = mysqli_query($GLOBALS["mysqli"], "SELECT naissance FROM eleves WHERE 1");
$test_eleve_naissance = @old_mysql_result($call_eleve_test, "0", "naissance");
$format = mb_strlen($test_eleve_naissance);
// Cas de la création d'un élève
$reg_nom = trim($reg_nom);
$reg_prenom = trim($reg_prenom);
$reg_email = trim($reg_email);
if ($reg_resp1 == '(vide)') {$reg_resp1 = '';}
if (!preg_match ("/^[0-9]{4}$/", $birth_year)) {$birth_year = "1900";}
if(preg_match ("/^[1-9]{1}$/", $birth_month)) {$birth_month="0".$birth_month;}
elseif (!preg_match ("/^[0-9]{2}$/", $birth_month)) {$birth_month = "01";}
if(preg_match ("/^[1-9]{1}$/", $birth_day)) {$birth_day="0".$birth_day;}
elseif (!preg_match ("/^[0-9]{2}$/", $birth_day)) {$birth_day = "01";}
if ($format == '10') {
// YYYY-MM-DD
$reg_naissance = $birth_year."-".$birth_month."-".$birth_day." 00:00:00";
}
else {
if ($format == '8') {
// YYYYMMDD
$reg_naissance = $birth_year.$birth_month.$birth_day;
settype($reg_naissance,"integer");
} else {
// Format inconnu
$reg_naissance = $birth_year.$birth_month.$birth_day;
}
}
//===========================
//AJOUT:
if(!isset($msg)){$msg="";}
//===========================
$continue = 'yes';
if (($reg_nom == '') or ($reg_prenom == '')) {
$msg = "Les champs nom et prénom sont obligatoires.";
$continue = 'no';
}
//$msg.="\$reg_login=$reg_login
";
//if(isset($eleve_login)){$msg.="\$eleve_login=$eleve_login
";}
// $reg_login non vide correspond à un nouvel élève.
// On a saisi un login avant de valider
if (($continue == 'yes') and (isset($reg_login))) {
$msg = '';
$ok = 'yes';
if (preg_match("/^[a-zA-Z_]{1}[a-zA-Z0-9_.]{0,".($longmax_login_eleve-1)."}$/", $reg_login)) {
if ($reg_no_gep != '') {
$test1 = mysqli_query($GLOBALS["mysqli"], "SELECT login FROM eleves WHERE elenoet='$reg_no_gep'");
$count1 = mysqli_num_rows($test1);
if ($count1 != "0") {
//$msg .= "Erreur : un élève ayant le même numéro GEP existe déjà.
";
$msg .= "Erreur : un élève ayant le même numéro interne Sconet (elenoet) existe déjà.
";
$ok = 'no';
}
}
if ($reg_no_nat != '') {
$test2 = mysqli_query($GLOBALS["mysqli"], "SELECT login FROM eleves WHERE no_gep='$reg_no_nat'");
$count2 = mysqli_num_rows($test2);
if ($count2 != "0") {
$msg .= "Erreur : un élève ayant le même numéro national existe déjà.";
$ok = 'no';
}
}
if ($ok == 'yes') {
$test = mysqli_query($GLOBALS["mysqli"], "SELECT login FROM eleves WHERE login='$reg_login'");
$count = mysqli_num_rows($test);
if ($count == "0") {
if(!isset($ele_id)){
// GENERER UN ele_id...
/*
$sql="SELECT MAX(ele_id) max_ele_id FROM eleves";
$res_ele_id_eleve=mysql_query($sql);
$max_ele_id = old_mysql_result($call_resp , 0, "max_ele_id");
$sql="SELECT MAX(ele_id) max_ele_id FROM responsables2";
$res_ele_id_responsables2=mysql_query($sql);
$max_ele_id2 = old_mysql_result($call_resp , 0, "max_ele_id");
if($max_ele_id2>$max_ele_id){$max_ele_id=$max_ele_id2;}
$ele_id=$max_ele_id+1;
*/
// PB si on fait ensuite un import sconet le pers_id risque de ne pas correspondre... de provoquer des collisions.
// QUAND ON LES METS A LA MAIN, METTRE UN ele_id, pers_id,... négatifs?
// PREFIXER D'UN e...
$sql="SELECT ele_id FROM eleves WHERE ele_id LIKE 'e%' ORDER BY ele_id DESC";
$res_ele_id_eleve=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_ele_id_eleve)>0){
$tmp=0;
$lig_ele_id_eleve=mysqli_fetch_object($res_ele_id_eleve);
$tmp=mb_substr($lig_ele_id_eleve->ele_id,1);
$tmp++;
$max_ele_id=$tmp;
}
else{
$max_ele_id=1;
}
$sql="SELECT ele_id FROM responsables2 WHERE ele_id LIKE 'e%' ORDER BY ele_id DESC";
$res_ele_id_responsables2=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_ele_id_responsables2)>0){
$tmp=0;
$lig_ele_id_responsables2=mysqli_fetch_object($res_ele_id_responsables2);
$tmp=mb_substr($lig_ele_id_responsables2->ele_id,1);
$tmp++;
$max_ele_id2=$tmp;
}
else{
$max_ele_id2=1;
}
$tmp=max($max_ele_id,$max_ele_id2);
$ele_id="e".sprintf("%09d",max($max_ele_id,$max_ele_id2));
}
$reg_data1 = mysqli_query($GLOBALS["mysqli"], "INSERT INTO eleves SET
no_gep = '".$reg_no_nat."',
nom='".$reg_nom."',
prenom='".$reg_prenom."',
email='".$reg_email ."',
login='".$reg_login."',
sexe='".$reg_sexe."',
naissance='".$reg_naissance."',
elenoet = '".$reg_no_gep."',
ele_id = '".$ele_id."',
date_sortie = NULL
");
if($reg_resp1!=""){
// Quand on laisse '(vide)' pour le choix du responsable, la variable est créée puisque le champ est posté, mais la variable est une chaine vide qui ne doit pas correspondre à une insertion dans responsables2
$sql="SELECT 1=1 FROM responsables2 WHERE ele_id='$ele_id' AND pers_id='$reg_resp1'";
$test_resp1=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test_resp1)>0){
// Il y a déjà une association élève/responsable (c'est bizarre pour un élève que l'on inscrit maintenant???)
$sql="SELECT 1=1 FROM responsables2 WHERE ele_id='$ele_id' AND pers_id='$reg_resp1' AND resp_legal='2'";
$test_resp1b=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test_resp1b)==1){
// Le responsable 2 devient responsable 1.
$temoin_maj_resp="";
$sql="SELECT pers_id FROM responsables2 WHERE ele_id='$ele_id' AND pers_id!='$reg_resp1' AND resp_legal='1'";
$test_resp1c=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test_resp1c)==1){
$lig_autre_resp=mysqli_fetch_object($test_resp1c);
$sql="UPDATE responsables2 SET resp_legal='2' WHERE ele_id='$ele_id' AND pers_id='$lig_autre_resp->pers_id'";
$res_update=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$res_update){
$msg.="Erreur lors de la mise à jour du responsable $lig_autre_resp->pers_id en responsable légal n°2.
\n";
$temoin_maj_resp="PB";
}
}
if($temoin_maj_resp==""){
$sql="UPDATE responsables2 SET resp_legal='1' WHERE ele_id='$ele_id' AND pers_id='$reg_resp1'";
$res_update=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$res_update){
$msg.="Erreur lors de la mise à jour du responsable $reg_resp1 en responsable légal n°1.
\n";
}
}
}
// Sinon, l'association est déjà la bonne... pas de changement.
}
else{
// Il n'y a pas encore d'association entre cet élève et ce responsable
$temoin_maj_resp="";
$sql="SELECT pers_id FROM responsables2 WHERE ele_id='$ele_id' AND pers_id!='$reg_resp1' AND resp_legal='1'";
$test_resp1c=mysqli_query($GLOBALS["mysqli"], $sql);
//if(mysql_num_rows($test_resp1c)==1){
if(mysqli_num_rows($test_resp1c)>0){
$lig_autre_resp=mysqli_fetch_object($test_resp1c);
// Y avait-il un autre responsable légal n°2?
$sql="DELETE FROM responsables2 WHERE ele_id='$ele_id' AND resp_legal='2'";
$res_menage=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$res_menage){
$msg.="Erreur lors de la suppression de l'association avec le précédent responsable légal n°2.
";
$temoin_maj_resp="PB";
}
else{
// L'ancien resp_legal 1 devient resp_legal 2
$sql="UPDATE responsables2 SET resp_legal='2' WHERE ele_id='$ele_id' AND pers_id='$lig_autre_resp->pers_id'";
$res_update=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$res_update){
$msg.="Erreur lors de la mise à jour du responsable $lig_autre_resp->pers_id en responsable légal n°2.
\n";
$temoin_maj_resp="PB";
}
}
}
if($temoin_maj_resp==""){
$sql="INSERT INTO responsables2 SET ele_id='$ele_id', pers_id='$reg_resp1', resp_legal='1', pers_contact='1'";
$reg_data2b=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$reg_data2b){
$msg.="Erreur lors de la mise à jour du responsable $reg_resp1 en responsable légal n°1.
\n";
}
}
}
}
// Régime et établissement d'origine:
$reg_data3 = mysqli_query($GLOBALS["mysqli"], "INSERT INTO j_eleves_regime SET login='$reg_login', doublant='-', regime='d/p';");
if ($reg_no_gep != '') {
$call_test = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM j_eleves_etablissements WHERE id_eleve = '$reg_no_gep';");
$count2 = mysqli_num_rows($call_test);
if ($count2 == "0") {
if ($reg_etab != "(vide)") {
$reg_data2 = mysqli_query($GLOBALS["mysqli"], "INSERT INTO j_eleves_etablissements VALUES ('$reg_no_gep','$reg_etab');");
}
} else {
if ($reg_etab != "(vide)") {
$reg_data2 = mysqli_query($GLOBALS["mysqli"], "UPDATE j_eleves_etablissements SET id_etablissement = '$reg_etab' WHERE id_eleve='$reg_no_gep';");
} else {
//$reg_data2 = mysql_query("DELETE FROM j_eleves_etablissements WHERE id_eleve='$reg_login'");
$reg_data2 = mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_eleves_etablissements WHERE id_eleve='$reg_no_gep';");
}
}
}
if ((!$reg_data1) or (!$reg_data3)) {
$msg = "Erreur lors de l'enregistrement des données";
} elseif ($mode == "unique") {
$mess=rawurlencode("Elève enregistré !");
header("Location: index.php?msg=$mess");
die();
} elseif ($mode == "multiple") {
$mess=rawurlencode("Elève enregistré. Vous pouvez saisir l'élève suivant.");
header("Location: add_eleve.php?mode=multiple&msg=$mess");
die();
}
} else {
$msg="Un élève portant le même identifiant existe déja !";
}
}
} else {
$msg="L'identifiant choisi est constitué au maximum de 12 caractères : lettres, chiffres, \"_\" ou \".\" et ne doit pas commencer par un chiffre !";
}
} else if ($continue == 'yes') {
// C'est une mise à jour pour un élève qui existait déjà dans la table 'eleves'.
// On nettoie les windozeries
$reg_data = mysqli_query($GLOBALS["mysqli"], "UPDATE eleves SET no_gep = '$reg_no_nat', nom='$reg_nom',prenom='$reg_prenom',email='$reg_email',sexe='$reg_sexe',naissance='".$reg_naissance."', ereno='".$reg_resp1."', elenoet = '".$reg_no_gep."' WHERE login='".$eleve_login."'");
if (!$reg_data) {
$msg = "Erreur lors de l'enregistrement des données";
} else {
// On met à jour la table utilisateurs si un compte existe pour cet élève
$test_login = old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT count(login) FROM utilisateurs WHERE login = '".$eleve_login ."'"), 0);
if ($test_login > 0) {
$res = mysqli_query($GLOBALS["mysqli"], "UPDATE utilisateurs SET nom='".$reg_nom."', prenom='".$reg_prenom."', email='".$reg_email."' WHERE login = '".$eleve_login."'");
//$msg.="TEMOIN test_login puis update
";
}
}
if ($reg_no_gep != '') {
$call_test = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM j_eleves_etablissements WHERE id_eleve = '$reg_no_gep';");
$count = mysqli_num_rows($call_test);
if ($count == "0") {
if ($reg_etab != "(vide)") {
$reg_data = mysqli_query($GLOBALS["mysqli"], "INSERT INTO j_eleves_etablissements VALUES ('$reg_no_gep','$reg_etab');");
}
} else {
if ($reg_etab != "(vide)") {
$reg_data = mysqli_query($GLOBALS["mysqli"], "UPDATE j_eleves_etablissements SET id_etablissement = '$reg_etab' WHERE id_eleve='$reg_no_gep';");
} else {
$reg_data = mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_eleves_etablissements WHERE id_eleve='$reg_no_gep';");
}
}
}
if (!$reg_data) {
$msg = "Erreur lors de l'enregistrement des données !";
} else {
$msg .= "Les modifications ont bien été enregistrées !";
}
$temoin_ele_id="";
$sql="SELECT ele_id FROM eleves WHERE login='$eleve_login'";
$res_ele_id_eleve=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_ele_id_eleve)==0){
$msg.="Erreur: Le champ ele_id n'est pas présent. Votre table 'eleves' n'a pas l'air à jour.
";
$temoin_ele_id="PB";
}
else{
$lig_tmp=mysqli_fetch_object($res_ele_id_eleve);
$ele_id=$lig_tmp->ele_id;
}
if($temoin_ele_id==""){
$sql="SELECT 1=1 FROM responsables2 WHERE ele_id='$ele_id' AND pers_id='$reg_resp1'";
$test_resp1=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test_resp1)>0){
// Il y a déjà une association élève/responsable (c'est bizarre pour un élève que l'on inscrit maintenant???)
$sql="SELECT 1=1 FROM responsables2 WHERE ele_id='$ele_id' AND pers_id='$reg_resp1' AND resp_legal='2'";
$test_resp1b=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test_resp1b)==1){
// Le responsable 2 devient responsable 1.
$temoin_maj_resp="";
$sql="SELECT pers_id FROM responsables2 WHERE ele_id='$ele_id' AND pers_id!='$reg_resp1' AND resp_legal='1'";
$test_resp1c=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test_resp1c)==1){
$lig_autre_resp=mysqli_fetch_object($test_resp1c);
$sql="UPDATE responsables2 SET resp_legal='2' WHERE ele_id='$ele_id' AND pers_id='$lig_autre_resp->pers_id'";
$res_update=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$res_update){
$msg.="Erreur lors de la mise à jour du responsable $lig_autre_resp->pers_id en responsable légal n°2.
\n";
$temoin_maj_resp="PB";
}
}
if($temoin_maj_resp==""){
$sql="UPDATE responsables2 SET resp_legal='1' WHERE ele_id='$ele_id' AND pers_id='$reg_resp1'";
$res_update=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$res_update){
$msg.="Erreur lors de la mise à jour du responsable $reg_resp1 en responsable légal n°1.
\n";
}
}
}
// Sinon, l'association est déjà la bonne... pas de changement.
}
else{
// Il n'y a pas encore d'association entre cet élève et ce responsable
$temoin_maj_resp="";
$sql="SELECT pers_id FROM responsables2 WHERE ele_id='$ele_id' AND pers_id!='$reg_resp1' AND resp_legal='1'";
$test_resp1c=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test_resp1c)>0){
$lig_autre_resp=mysqli_fetch_object($test_resp1c);
// Y avait-il un autre responsable légal n°2?
$sql="DELETE FROM responsables2 WHERE ele_id='$ele_id' AND resp_legal='2'";
$res_menage=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$res_menage){
$msg.="Erreur lors de la suppression de l'association avec le précédent responsable légal n°2.
";
$temoin_maj_resp="PB";
}
else{
// L'ancien resp_legal 1 devient resp_legal 2
$sql="UPDATE responsables2 SET resp_legal='2' WHERE ele_id='$ele_id' AND pers_id='$lig_autre_resp->pers_id'";
$res_update=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$res_update){
$msg.="Erreur lors de la mise à jour du responsable $lig_autre_resp->pers_id en responsable légal n°2.
\n";
$temoin_maj_resp="PB";
}
}
}
if($temoin_maj_resp==""){
$sql="INSERT INTO responsables2 SET ele_id='$ele_id', pers_id='$reg_resp1', resp_legal='1', pers_contact='1'";
$reg_data2b=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$reg_data2b){
$msg.="Erreur lors de la mise à jour du responsable $reg_resp1 en responsable légal n°1.
\n";
}
}
}
}
}
}
//================================================
// On appelle les informations de l'utilisateur pour les afficher :
if (isset($eleve_login)) {
$call_eleve_info = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM eleves WHERE login='$eleve_login'");
$eleve_nom = old_mysql_result($call_eleve_info, "0", "nom");
$eleve_prenom = old_mysql_result($call_eleve_info, "0", "prenom");
$eleve_email = old_mysql_result($call_eleve_info, "0", "email");
$eleve_sexe = old_mysql_result($call_eleve_info, "0", "sexe");
$eleve_naissance = old_mysql_result($call_eleve_info, "0", "naissance");
if (mb_strlen($eleve_naissance) == 10) {
// YYYY-MM-DD
$eleve_naissance_annee = mb_substr($eleve_naissance, 0, 4);
$eleve_naissance_mois = mb_substr($eleve_naissance, 5, 2);
$eleve_naissance_jour = mb_substr($eleve_naissance, 8, 2);
} elseif (mb_strlen($eleve_naissance) == 8 ) {
// YYYYMMDD
$eleve_naissance_annee = mb_substr($eleve_naissance, 0, 4);
$eleve_naissance_mois = mb_substr($eleve_naissance, 4, 2);
$eleve_naissance_jour = mb_substr($eleve_naissance, 6, 2);
} elseif (mb_strlen($eleve_naissance) == 19 ) {
// YYYY-MM-DD xx:xx:xx
$eleve_naissance_annee = mb_substr($eleve_naissance, 0, 4);
$eleve_naissance_mois = mb_substr($eleve_naissance, 5, 2);
$eleve_naissance_jour = mb_substr($eleve_naissance, 8, 2);
} else {
// Format inconnu
$eleve_naissance_annee = "??";
$eleve_naissance_mois = "??";
$eleve_naissance_jour = "????";
}
//$eleve_no_resp = old_mysql_result($call_eleve_info, "0", "ereno");
$reg_no_nat = old_mysql_result($call_eleve_info, "0", "no_gep");
$reg_no_gep = old_mysql_result($call_eleve_info, "0", "elenoet");
$call_etab = mysqli_query($GLOBALS["mysqli"], "SELECT e.* FROM etablissements e, j_eleves_etablissements j WHERE (j.id_eleve='$eleve_login' and e.id = j.id_etablissement)");
$id_etab = @old_mysql_result($call_etab, "0", "id");
if(!isset($ele_id)){
$ele_id=old_mysql_result($call_eleve_info, "0", "ele_id");
}
$sql="SELECT pers_id FROM responsables2 WHERE ele_id='$ele_id' AND resp_legal='1'";
$res_resp1=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_resp1)>0){
$lig_no_resp1=mysqli_fetch_object($res_resp1);
$eleve_no_resp1=$lig_no_resp1->pers_id;
}
else{
$eleve_no_resp1=0;
}
$sql="SELECT pers_id FROM responsables2 WHERE ele_id='$ele_id' AND resp_legal='2'";
$res_resp2=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_resp2)>0){
$lig_no_resp2=mysqli_fetch_object($res_resp2);
$eleve_no_resp2=$lig_no_resp2->pers_id;
}
else{
$eleve_no_resp2=0;
}
} else {
// On passe par là au premier accès à la page et si après validation le champ login n'a pas été saisi.
//echo "\$reg_nom=$reg_nom
\n";
if (isset($reg_nom)) $eleve_nom = $reg_nom;
if (isset($reg_prenom)) $eleve_prenom = $reg_prenom;
if (isset($reg_email)) $eleve_email = $reg_email;
if (isset($reg_sexe)) $eleve_sexe = $reg_sexe;
if (isset($reg_no_nat)) $reg_no_nat = $reg_no_nat;
if (isset($reg_no_gep)) $reg_no_gep = $reg_no_gep;
if (isset($birth_year)) $eleve_naissance_annee = $birth_year;
if (isset($birth_month)) $eleve_naissance_mois = $birth_month;
if (isset($birth_day)) $eleve_naissance_jour = $birth_day;
//$eleve_no_resp = 0;
$eleve_no_resp1 = 0;
$eleve_no_resp2 = 0;
$id_etab = 0;
}
//**************** EN-TETE *****************
$titre_page = "Gestion des élèves | Ajouter/Modifier une fiche élève";
require_once("../lib/header.inc.php");
//**************** FIN EN-TETE *****************
if ((isset($order_type)) and (isset($quelles_classes))) {
echo "
Le format de login élève est invalide.
Veuillez définir le format dans Configuration générale
Attention: L'enregistrement de l'établissement d'origine est conditionnée par la saisie d'un identifiant SCONET/GEP (Elenoet)
\n"; echo "