From 0da213eb761d9fa4cfdc58794fb6fb9c9f33d4c2 Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 13:45:15 +0200
Subject: [PATCH 01/63] lib/Session.class.php: reformmatage
---
lib/Session.class.php | 1678 ++++++++++++++++++++---------------------
1 file changed, 839 insertions(+), 839 deletions(-)
diff --git a/lib/Session.class.php b/lib/Session.class.php
index 98527d4186..22da443cb8 100755
--- a/lib/Session.class.php
+++ b/lib/Session.class.php
@@ -20,31 +20,30 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-$debug_test_mdp="n";
-if(getSettingValue('debug_test_mdp_file')!='') {
- $debug_test_mdp_file=getSettingValue('debug_test_mdp_file');
-}
-else {
- $debug_test_mdp_file="/tmp/test_mdp.txt";
+$debug_test_mdp = "n";
+if (getSettingValue('debug_test_mdp_file') != '') {
+ $debug_test_mdp_file = getSettingValue('debug_test_mdp_file');
+} else {
+ $debug_test_mdp_file = "/tmp/test_mdp.txt";
}
//$debug_test_mdp_file="/tmp/test_mdp.txt";
// Passer à 'y' pour loguer les premiers accès (pour expliquer à l'utilisateur ce qu'il fait de travers lors de sa première connexion)
-$debug_login_nouveaux_comptes="n";
+$debug_login_nouveaux_comptes = "n";
// Ne pas toucher: La variable est déclarée ici pour être globale et modifiée à y ou n par la suite
-$loguer_nouveau_login="n";
+$loguer_nouveau_login = "n";
# Cette classe sert à manipuler la session en cours.
# Elle gère notamment l'authentification des utilisateurs
# à partir de différentes sources.
function my_warning_handler($errno, $errstr) {
- if ($errno == E_WARNING && strpos($errstr, 'PHP_Incomplete_Class') !== false) {
- //ignore warning, this one is probably due to propel unserialization wuthout correct class declaration
- return true;
- } else {
- return false;
- }
+ if ($errno == E_WARNING && strpos($errstr, 'PHP_Incomplete_Class') !== false) {
+ //ignore warning, this one is probably due to propel unserialization wuthout correct class declaration
+ return true;
+ } else {
+ return false;
+ }
}
class Session {
@@ -64,33 +63,33 @@ class Session {
public $auth_simpleSAML = false; # false, cas, lemon, lcs
private $login_sso = false; //login (ou uid) du sso auquel on est connecté (peut être différent du login gepi, la correspondance est faite dans mod_sso_table)
public $current_auth_mode = false; # gepi, ldap, sso, ou false : le mode d'authentification
- public $mysqli = '';
+ public $mysqli = '';
- private $etat = false; # actif/inactif. Utilisé simplement en interne pour vérifier que
- # l'utilisateur authentifié de source externe est bien actif dans Gepi.
-
- private $cas_extra_attributes = false; # D'éventuels attributs chargés depuis la réponse CAS
+ private $etat = false; # actif/inactif. Utilisé simplement en interne pour vérifier que
+ # l'utilisateur authentifié de source externe est bien actif dans Gepi.
- public function __construct($login_CAS_en_cours = false) {
+ private $cas_extra_attributes = false; # D'éventuels attributs chargés depuis la réponse CAS
- global $temoin_pas_d_update_session_table_log;
- global $mysqli;
- $this->mysqli = $mysqli;
+ public function __construct($login_CAS_en_cours = false) {
- if (!$login_CAS_en_cours) {
- # On initialise la session
- session_name("GEPI");
- set_error_handler("my_warning_handler", E_WARNING);
- if(!isset($_SESSION)) {
- session_start();
+ global $temoin_pas_d_update_session_table_log;
+ global $mysqli;
+ $this->mysqli = $mysqli;
+
+ if (!$login_CAS_en_cours) {
+ # On initialise la session
+ session_name("GEPI");
+ set_error_handler("my_warning_handler", E_WARNING);
+ if (!isset($_SESSION)) {
+ session_start();
+ }
+ restore_error_handler();
}
- restore_error_handler();
- }
# Avant de faire quoi que ce soit, on initialise le fuseau horaire
if (isset($GLOBALS['timezone']) && $GLOBALS['timezone'] != '') {
- $this->update_timezone($GLOBALS['timezone']);
- }
+ $this->update_timezone($GLOBALS['timezone']);
+ }
$this->maxLength = getSettingValue("sessionMaxLength");
$this->verif_CAS_multisite();
@@ -104,79 +103,78 @@ public function __construct($login_CAS_en_cours = false) {
$this->auth_sso = in_array(getSettingValue("auth_sso"), array("lemon", "cas", "lcs")) ? getSettingValue("auth_sso") : false;
if (!$this->is_anonymous()) {
- # Il s'agit d'une session non anonyme qui existait déjà.
- if (!$login_CAS_en_cours) {
- if (isset($GLOBALS['niveau_arbo'])) {
- if ($GLOBALS['niveau_arbo'] == "0") {
- $logout_path = "./logout.php";
- } elseif ($GLOBALS['niveau_arbo'] == "2") {
- $logout_path = "../../logout.php";
- } elseif ($GLOBALS['niveau_arbo'] == "3") {
- $logout_path = "../../../logout.php";
- } else {
- $logout_path = "../logout.php";
- }
- } else {
- $logout_path = "../logout.php";
- }
- # On regarde s'il n'y a pas de timeout
- if ($this->start && $this->timeout()) {
- # timeout : on remet à zéro.
- $debut_session = $_SESSION['start'];
- $this->reset(3);
- header("Location:".$logout_path."?auto=3&debut_session=".$debut_session."&session_id=".session_id());
- exit();
- } elseif (isset($GLOBALS['multisite']) && $GLOBALS['multisite'] == 'y') {
- //echo ($_COOKIE['RNE'].' '.$this->rne);die;
- if ($_COOKIE['RNE'] != $this->rne){
- //le rne a été modifié en cours de session
- $this->reset(2);
- header("Location:".$logout_path."?auto=0&session_id=".session_id());
- exit();
- } elseif ((getSettingValue('gepiSchoolRne')!='')&&(mb_strtoupper($_COOKIE['RNE']) != mb_strtoupper(getSettingValue('gepiSchoolRne')))) {
- //le rne ne correspond pas à celui de la base
- $this->reset(2);
- header("Location:".$logout_path."?auto=2&session_id=".session_id());
- exit();
- }
- } else {
- $debug_maintien_session="n";
- if($debug_maintien_session=="y") {
- $sql = "SELECT END from log where SESSION_ID = '" . session_id() . "' and START = '" . $this->start . "';";
-
- if($this->mysqli !="") {
- $result = mysqli_query($this->mysqli, $sql);
- $tmp_fin_session = $result->fetch_object();
- $tmp_fin_session = $tmp_fin_session->END;
- $result->close();
- } else {
- $tmp_res_fin_session=mysqli_query($GLOBALS["mysqli"], $sql);
- $tmp_fin_session=old_mysql_result($tmp_res_fin_session,0,'END');
- }
-
- }
+ # Il s'agit d'une session non anonyme qui existait déjà.
+ if (!$login_CAS_en_cours) {
+ if (isset($GLOBALS['niveau_arbo'])) {
+ if ($GLOBALS['niveau_arbo'] == "0") {
+ $logout_path = "./logout.php";
+ } elseif ($GLOBALS['niveau_arbo'] == "2") {
+ $logout_path = "../../logout.php";
+ } elseif ($GLOBALS['niveau_arbo'] == "3") {
+ $logout_path = "../../../logout.php";
+ } else {
+ $logout_path = "../logout.php";
+ }
+ } else {
+ $logout_path = "../logout.php";
+ }
+ # On regarde s'il n'y a pas de timeout
+ if ($this->start && $this->timeout()) {
+ # timeout : on remet à zéro.
+ $debut_session = $_SESSION['start'];
+ $this->reset(3);
+ header("Location:" . $logout_path . "?auto=3&debut_session=" . $debut_session . "&session_id=" . session_id());
+ exit();
+ } elseif (isset($GLOBALS['multisite']) && $GLOBALS['multisite'] == 'y') {
+ //echo ($_COOKIE['RNE'].' '.$this->rne);die;
+ if ($_COOKIE['RNE'] != $this->rne) {
+ //le rne a été modifié en cours de session
+ $this->reset(2);
+ header("Location:" . $logout_path . "?auto=0&session_id=" . session_id());
+ exit();
+ } elseif ((getSettingValue('gepiSchoolRne') != '') && (mb_strtoupper($_COOKIE['RNE']) != mb_strtoupper(getSettingValue('gepiSchoolRne')))) {
+ //le rne ne correspond pas à celui de la base
+ $this->reset(2);
+ header("Location:" . $logout_path . "?auto=2&session_id=" . session_id());
+ exit();
+ }
+ } else {
+ $debug_maintien_session = "n";
+ if ($debug_maintien_session == "y") {
+ $sql = "SELECT END from log where SESSION_ID = '" . session_id() . "' and START = '" . $this->start . "';";
+
+ if ($this->mysqli != "") {
+ $result = mysqli_query($this->mysqli, $sql);
+ $tmp_fin_session = $result->fetch_object();
+ $tmp_fin_session = $tmp_fin_session->END;
+ $result->close();
+ } else {
+ $tmp_res_fin_session = mysqli_query($GLOBALS["mysqli"], $sql);
+ $tmp_fin_session = old_mysql_result($tmp_res_fin_session, 0, 'END');
+ }
- if((!isset($temoin_pas_d_update_session_table_log))||($temoin_pas_d_update_session_table_log!="y")) {
- # Pas de timeout : on met à jour le log
- $this->update_log();
+ }
- if($debug_maintien_session=="y") {
- $fich=fopen("/tmp/update_log.txt", "a+");
- fwrite($fich, strftime("%Y%m%d %H%M%S")." : Update log à $tmp_fin_session\n");
- fwrite($fich, "$sql\n");
- fclose($fich);
- }
- }
- else {
- if($debug_maintien_session=="y") {
- $fich=fopen("/tmp/update_log.txt", "a+");
- fwrite($fich, strftime("%Y%m%d %H%M%S")." : Pas d update log \nLa fin de session reste à $tmp_fin_session\n".(isset($temoin_pas_d_update_session_table_log) ? "\$temoin_pas_d_update_session_table_log=".$temoin_pas_d_update_session_table_log : "\$temoin_pas_d_update_session_table_log non initialise")."\n");
- fwrite($fich, "$sql\n");
- fclose($fich);
+ if ((!isset($temoin_pas_d_update_session_table_log)) || ($temoin_pas_d_update_session_table_log != "y")) {
+ # Pas de timeout : on met à jour le log
+ $this->update_log();
+
+ if ($debug_maintien_session == "y") {
+ $fich = fopen("/tmp/update_log.txt", "a+");
+ fwrite($fich, strftime("%Y%m%d %H%M%S") . " : Update log à $tmp_fin_session\n");
+ fwrite($fich, "$sql\n");
+ fclose($fich);
+ }
+ } else {
+ if ($debug_maintien_session == "y") {
+ $fich = fopen("/tmp/update_log.txt", "a+");
+ fwrite($fich, strftime("%Y%m%d %H%M%S") . " : Pas d update log \nLa fin de session reste à $tmp_fin_session\n" . (isset($temoin_pas_d_update_session_table_log) ? "\$temoin_pas_d_update_session_table_log=" . $temoin_pas_d_update_session_table_log : "\$temoin_pas_d_update_session_table_log non initialise") . "\n");
+ fwrite($fich, "$sql\n");
+ fclose($fich);
+ }
+ }
}
}
- }
- }
}
}
@@ -205,11 +203,11 @@ public function authenticate($_login = null, $_password = null) {
// Quelques petits tests de sécurité
- // Vérification de la liste noire des adresses IP
- if (isset($GLOBALS['liste_noire_ip']) && in_array($_SERVER['REMOTE_ADDR'], $GLOBALS['liste_noire_ip'])) {
- tentative_intrusion(1, "Tentative de connexion depuis une IP sur liste noire (login utilisé : ".$_login.")");
- return "3";
- die();
+ // Vérification de la liste noire des adresses IP
+ if (isset($GLOBALS['liste_noire_ip']) && in_array($_SERVER['REMOTE_ADDR'], $GLOBALS['liste_noire_ip'])) {
+ tentative_intrusion(1, "Tentative de connexion depuis une IP sur liste noire (login utilisé : " . $_login . ")");
+ return "3";
+ die();
}
if ($_login != null && mb_strtoupper($_login) != mb_strtoupper($this->login)) {
@@ -217,104 +215,104 @@ public function authenticate($_login = null, $_password = null) {
$this->reset("10");
}
- if($debug_test_mdp=="y") {
- $f_tmp=fopen($debug_test_mdp_file,"a+");
- fwrite($f_tmp,strftime("%a %d/%m/%Y - %H%M%S").": \$_login=$_login et \$_password=$_password\n");
+ if ($debug_test_mdp == "y") {
+ $f_tmp = fopen($debug_test_mdp_file, "a+");
+ fwrite($f_tmp, strftime("%a %d/%m/%Y - %H%M%S") . ": \$_login=$_login et \$_password=$_password\n");
fclose($f_tmp);
- }
- elseif($debug_login_nouveaux_comptes=="y") {
- $loguer_nouveau_login="n";
- if(preg_match("/[A-Za-z0-9_\.-]/", $_login)) {
- $sql="SELECT 1=1 FROM utilisateurs WHERE login='$_login' AND change_mdp='y';";
-
- $resultat = mysqli_query($mysqli, $sql);
- $nb_lignes = $resultat->num_rows;
- $resultat->close();
- if($nb_lignes>0) {
- $loguer_nouveau_login="y";
-
- $f_tmp=fopen($debug_test_mdp_file,"a+");
- fwrite($f_tmp,strftime("%a %d/%m/%Y - %H%M%S").": \$_login=$_login et \$_password=$_password : ");
- fclose($f_tmp);
- }
+ } elseif ($debug_login_nouveaux_comptes == "y") {
+ $loguer_nouveau_login = "n";
+ if (preg_match("/[A-Za-z0-9_\.-]/", $_login)) {
+ $sql = "SELECT 1=1 FROM utilisateurs WHERE login='$_login' AND change_mdp='y';";
+
+ $resultat = mysqli_query($mysqli, $sql);
+ $nb_lignes = $resultat->num_rows;
+ $resultat->close();
+ if ($nb_lignes > 0) {
+ $loguer_nouveau_login = "y";
+
+ $f_tmp = fopen($debug_test_mdp_file, "a+");
+ fwrite($f_tmp, strftime("%a %d/%m/%Y - %H%M%S") . ": \$_login=$_login et \$_password=$_password : ");
+ fclose($f_tmp);
+ }
}
}
- // On initialise la session de l'utilisateur.
- // On commence par extraire le mode d'authentification défini
- // pour l'utilisateur. Si l'utilisateur n'existe pas, on essaiera
- // l'authentification LDAP et le SSO quand même.
+ // On initialise la session de l'utilisateur.
+ // On commence par extraire le mode d'authentification défini
+ // pour l'utilisateur. Si l'utilisateur n'existe pas, on essaiera
+ // l'authentification LDAP et le SSO quand même.
$auth_mode = self::user_auth_mode($_login);
// 20140301
- $auth_sso_secours=isset($_POST['auth_sso_secours']) ? $_POST['auth_sso_secours'] : NULL;
- if((isset($auth_sso_secours))&&
- ($auth_sso_secours=="y")&&
- ($_login!="")&&
- ($_password!="")&&
+ $auth_sso_secours = isset($_POST['auth_sso_secours']) ? $_POST['auth_sso_secours'] : NULL;
+ if ((isset($auth_sso_secours)) &&
+ ($auth_sso_secours == "y") &&
+ ($_login != "") &&
+ ($_password != "") &&
(getSettingAOui('autoriser_sso_password_auth'))) {
- $auth_mode="gepi";
+ $auth_mode = "gepi";
}
switch ($auth_mode) {
case "gepi":
- # Authentification locale sur la base de données Gepi
- $auth = $this->authenticate_gepi($_login,$_password);
- break;
+ # Authentification locale sur la base de données Gepi
+ $auth = $this->authenticate_gepi($_login, $_password);
+ break;
case "ldap":
- # Authentification sur un serveur LDAP
- $auth = $this->authenticate_ldap($_login,$_password);
- break;
- case "simpleSAML":
- $auth = $this->authenticate_simpleSAML();
- break;
+ # Authentification sur un serveur LDAP
+ $auth = $this->authenticate_ldap($_login, $_password);
+ break;
+ case "simpleSAML":
+ $auth = $this->authenticate_simpleSAML();
+ break;
case "sso":
- # Authentification gérée par un service de SSO
- # On n'a pas besoin du login ni du mot de passe
- switch ($this->auth_sso) {
- case "cas":
- $auth = $this->authenticate_cas();
- break;
- case "lemon":
- $auth = $this->authenticate_lemon();
- break;
- case "lcs":
- $auth = $this->authenticate_lcs();
- break;
- }
- break;
+ # Authentification gérée par un service de SSO
+ # On n'a pas besoin du login ni du mot de passe
+ switch ($this->auth_sso) {
+ case "cas":
+ $auth = $this->authenticate_cas();
+ break;
+ case "lemon":
+ $auth = $this->authenticate_lemon();
+ break;
+ case "lcs":
+ $auth = $this->authenticate_lcs();
+ break;
+ }
+ break;
case false:
- # L'utilisateur n'existe pas dans la base de données ou bien
- # n'a pas été passé en paramètre.
- # On va donc tenter d'abord une authentification simpleSAML, puis LDAP,
- # puis une authentification SSO, à condition que celles-ci
- # soient bien sûr configurées.
- if ($this->auth_ldap && $_login != null && $_password != null) {
- $auth = $this->authenticate_ldap($_login,$_password);
- }if ($this->auth_simpleSAML) {
- $auth = $this->authenticate_simpleSAML();
- } else if ($this->auth_sso && $_login == null) {
- // L'auth LDAP n'a pas marché, on essaie le SSO
- switch ($this->auth_sso) {
- case "cas":
- $auth = $this->authenticate_cas();
- break;
- case "lemon":
- $auth = $this->authenticate_lemon();
- break;
- case "lcs":
- $auth = $this->authenticate_lcs();
- break;
- }
- } else {
- $auth = false;
- }
- break;
+ # L'utilisateur n'existe pas dans la base de données ou bien
+ # n'a pas été passé en paramètre.
+ # On va donc tenter d'abord une authentification simpleSAML, puis LDAP,
+ # puis une authentification SSO, à condition que celles-ci
+ # soient bien sûr configurées.
+ if ($this->auth_ldap && $_login != null && $_password != null) {
+ $auth = $this->authenticate_ldap($_login, $_password);
+ }
+ if ($this->auth_simpleSAML) {
+ $auth = $this->authenticate_simpleSAML();
+ } else if ($this->auth_sso && $_login == null) {
+ // L'auth LDAP n'a pas marché, on essaie le SSO
+ switch ($this->auth_sso) {
+ case "cas":
+ $auth = $this->authenticate_cas();
+ break;
+ case "lemon":
+ $auth = $this->authenticate_lemon();
+ break;
+ case "lcs":
+ $auth = $this->authenticate_lcs();
+ break;
+ }
+ } else {
+ $auth = false;
+ }
+ break;
default:
- # Si on arrive là, c'est qu'il y a un problème avec la définition
- # du mode d'authentification pour l'utilisateur en question.
- $auth = false;
- break;
+ # Si on arrive là, c'est qu'il y a un problème avec la définition
+ # du mode d'authentification pour l'utilisateur en question.
+ $auth = false;
+ break;
}
// A partir d'ici soit on a un avis d'échec de l'authentification, soit
@@ -327,7 +325,7 @@ public function authenticate($_login = null, $_password = null) {
// en paramètre.
if (isset($GLOBALS['multisite']) && $GLOBALS['multisite'] == "y") {
- if (!isset($_GET['rne']) AND (!isset($_COOKIE["RNE"]) OR $_COOKIE["RNE"] == 'RNE')) {
+ if (!isset($_GET['rne']) and (!isset($_COOKIE["RNE"]) or $_COOKIE["RNE"] == 'RNE')) {
if (isset($GLOBALS['mode_choix_base']) && $GLOBALS['mode_choix_base'] == "url") {
// dans ce cas, on se connecte à l'url $url_cas_sso donnée par le secure/connect.inc.php
$t_rne = file_get_contents($GLOBALS[url_cas_sso] . '?login=' . $this->login . '&cle=' . $GLOBALS['cle_url_cas']);
@@ -335,15 +333,15 @@ public function authenticate($_login = null, $_password = null) {
$rep_rne = explode("|", $t_rne);
$nbre_rne = count($rep_rne);
if ($nbre_rne > 1) {
- header("Location: choix_rne.php?nbre=".$nbre_rne."&lesrne=".$t_rne);
+ header("Location: choix_rne.php?nbre=" . $nbre_rne . "&lesrne=" . $t_rne);
exit();
- } else{
+ } else {
if ($this->current_auth_mode == "sso") {
setcookie('RNE', $t_rne, null, '/');
- header("Location: login_sso.php?rne=".$t_rne);
+ header("Location: login_sso.php?rne=" . $t_rne);
exit();
} else {
- header("Location: login.php?rne=".$t_rne);
+ header("Location: login.php?rne=" . $t_rne);
exit();
}
}
@@ -361,21 +359,21 @@ public function authenticate($_login = null, $_password = null) {
if ($test > 1) {
// On envoie l'utilisateur choisir lui même son RNE
$rnes = NULL;
- for($a = 0 ; $a < $test ; $a++){
- $rnes .= $user["rne"][$a].'|';
+ for ($a = 0; $a < $test; $a++) {
+ $rnes .= $user["rne"][$a] . '|';
}
- header("Location: choix_rne.php?nbre=".$test."&lesrne=".$rnes);
+ header("Location: choix_rne.php?nbre=" . $test . "&lesrne=" . $rnes);
exit();
- }else{
+ } else {
// Il n'y en a qu'un, on recharge !
if ($this->current_auth_mode == "sso") {
setcookie('RNE', $user["rne"][0], null, '/');
- header("Location: login_sso.php?rne=".$user["rne"][0]);
+ header("Location: login_sso.php?rne=" . $user["rne"][0]);
exit();
} else {
- header("Location: login.php?rne=".$user["rne"][0]);
+ header("Location: login.php?rne=" . $user["rne"][0]);
exit();
}
}
@@ -411,7 +409,7 @@ public function authenticate($_login = null, $_password = null) {
$load = $this->import_user_profile_from_scribe();
# Sinon, on utilise l'import classique, très basique.
- } elseif (getSettingValue("may_import_user_profile")=="yes") {
+ } elseif (getSettingValue("may_import_user_profile") == "yes") {
$load = $this->import_user_profile();
}
if (!$load) {
@@ -441,8 +439,8 @@ public function authenticate($_login = null, $_password = null) {
# On teste la cohérence de mode de connexion
// 20140301
- if((!isset($auth_sso_secours))||
- ($auth_sso_secours!="y")||
+ if ((!isset($auth_sso_secours)) ||
+ ($auth_sso_secours != "y") ||
(!getSettingAOui('autoriser_sso_password_auth'))) {
$auth_mode = self::user_auth_mode($this->login);
if ($this->current_auth_mode != 'simpleSAML' && $auth_mode != $this->current_auth_mode) {
@@ -464,7 +462,7 @@ public function authenticate($_login = null, $_password = null) {
$row = $sql_start->fetch_row();
$this->start = $row[0];
$sql_start->close();
-
+
$_SESSION['start'] = $this->start;
$this->insert_log();
# On supprime l'historique des logs conformément à la durée définie.
@@ -508,13 +506,13 @@ public function security_check() {
# D'abord on regarde si on a une tentative d'accès anonyme à une page protégée :
if ($this->auth_simpleSAML == 'yes') {
- include_once(dirname(__FILE__).'/simplesaml/lib/_autoload.php');
+ include_once(dirname(__FILE__) . '/simplesaml/lib/_autoload.php');
$auth = new SimpleSAML_Auth_GepiSimple();
if (!$this->login || !$auth->isAuthenticated()) {
$this->authenticate();
}
} else if ($this->is_anonymous()) {
- if((!isset($pas_acces_a_une_page_sans_etre_logue))||($pas_acces_a_une_page_sans_etre_logue!="y")) {
+ if ((!isset($pas_acces_a_une_page_sans_etre_logue)) || ($pas_acces_a_une_page_sans_etre_logue != "y")) {
tentative_intrusion(1, "Accès à une page sans être logué (peut provenir d'un timeout de session).");
}
return "0";
@@ -522,10 +520,10 @@ public function security_check() {
}
$sql = "SELECT statut, change_mdp, etat FROM utilisateurs where login = '" . $this->login . "'";
-
-
- $result = mysqli_query($mysqli, $sql);
- $row = $result->fetch_object();
+
+
+ $result = mysqli_query($mysqli, $sql);
+ $row = $result->fetch_object();
$change_password = $row->change_mdp != "n" ? true : false;
$statut_ok = $this->statut == $row->statut ? true : false;
@@ -550,10 +548,9 @@ public function security_check() {
// Si on est là, ce que l'utilisateur a le droit de rester.
if ($change_password &&
- ($this->current_auth_mode == "gepi" || $this->current_auth_mode == "simpleSAML" || getSettingValue("ldap_write_access") == "yes"))
- {
- return "c";
- }
+ ($this->current_auth_mode == "gepi" || $this->current_auth_mode == "simpleSAML" || getSettingValue("ldap_write_access") == "yes")) {
+ return "c";
+ }
# Mieux vaut deux fois qu'une...
if ($statut_ok && $etat_ok && ($login_allowed || $this->statut == "administrateur")) {
@@ -571,8 +568,8 @@ public static function user_auth_mode($_login) {
die();
}
- $sql = "SELECT auth_mode FROM utilisateurs WHERE UPPER(login) = '".mb_strtoupper($_login)."'";
- $resultat = mysqli_query($mysqli, $sql);
+ $sql = "SELECT auth_mode FROM utilisateurs WHERE UPPER(login) = '" . mb_strtoupper($_login) . "'";
+ $resultat = mysqli_query($mysqli, $sql);
$nb_lignes = $resultat->num_rows;
if ($nb_lignes == 0) {
return false;
@@ -584,7 +581,7 @@ public static function user_auth_mode($_login) {
}
}
- public function close ($_auto) {
+ public function close($_auto) {
// $_auto_ reprend les codes de reset()
$this->reset($_auto);
}
@@ -606,8 +603,8 @@ public function recreate_log() {
} else {
global $mysqli;
- $sql = "SELECT login FROM utilisateurs WHERE login = '".$this->login."'";
- $resultat = mysqli_query($mysqli, $sql);
+ $sql = "SELECT login FROM utilisateurs WHERE login = '" . $this->login . "'";
+ $resultat = mysqli_query($mysqli, $sql);
$nb_lignes = $resultat->num_rows;
$resultat->close();
@@ -624,7 +621,7 @@ public function recreate_log() {
// Création d'une entrée de log
public function insert_log() {
global $mysqli;
- include_once(dirname(__FILE__).'/HTMLPurifier.standalone.php');
+ include_once(dirname(__FILE__) . '/HTMLPurifier.standalone.php');
$config = HTMLPurifier_Config::createDefault();
$config->set('Core.Encoding', 'utf-8'); // replace with your encoding
$config->set('HTML.Doctype', 'XHTML 1.0 Strict'); // replace with your doctype
@@ -653,14 +650,14 @@ private function update_log() {
return false;
} else {
$sql = "UPDATE log SET END = now() + interval " . $this->maxLength . " minute where SESSION_ID = '" . session_id() . "' and START = '" . $this->start . "'";
- $res = mysqli_query($mysqli, $sql);
+ $res = mysqli_query($mysqli, $sql);
}
}
// Dans le cas du multisite on vérifie si la session a été initialisée dans la bonne base
- private function verif_CAS_multisite(){
- global $mysqli;
- if (isset($_GET['rne']) AND $GLOBALS['multisite'] == 'y' AND isset($_SESSION["login"]) && getSettingValue("auth_simpleSAML") != 'yes') {
+ private function verif_CAS_multisite() {
+ global $mysqli;
+ if (isset($_GET['rne']) and $GLOBALS['multisite'] == 'y' and isset($_SESSION["login"]) && getSettingValue("auth_simpleSAML") != 'yes') {
// Alors, on initialise la session ici
if (!preg_match("/^[0-9A-Za-z]*$/", $_GET["rne"])) {
@@ -700,15 +697,19 @@ private function register_logout($_auto) {
$sql = "UPDATE log SET AUTOCLOSE = '" . $_auto . "', END = now() where SESSION_ID = '" . session_id() . "' and START = '" . $this->start . "'";
$res = mysqli_query($mysqli, $sql);
- if((getSettingValue('csrf_log')=='y')&&(isset($_SESSION['login']))) {
- $csrf_log_chemin=getSettingValue('csrf_log_chemin');
- if($csrf_log_chemin=='') {$csrf_log_chemin="/home/root/csrf";}
+ if ((getSettingValue('csrf_log') == 'y') && (isset($_SESSION['login']))) {
+ $csrf_log_chemin = getSettingValue('csrf_log_chemin');
+ if ($csrf_log_chemin == '') {
+ $csrf_log_chemin = "/home/root/csrf";
+ }
//$f=fopen("$csrf_log_chemin/csrf_".$_SESSION['login'].".log","a+");
- $f=fopen("$csrf_log_chemin/csrf_".$_SESSION['login'].".log","a+");
- fwrite($f,"Fin de session ".strftime("%a %d/%m/%Y %H:%M:%S")." avec\n");
- if(isset($_SESSION['gepi_alea'])) {fwrite($f,"\$_SESSION['gepi_alea']=".$_SESSION['gepi_alea']."\n");}
- fwrite($f,"$sql\n");
- fwrite($f,"-----------------\n");
+ $f = fopen("$csrf_log_chemin/csrf_" . $_SESSION['login'] . ".log", "a+");
+ fwrite($f, "Fin de session " . strftime("%a %d/%m/%Y %H:%M:%S") . " avec\n");
+ if (isset($_SESSION['gepi_alea'])) {
+ fwrite($f, "\$_SESSION['gepi_alea']=" . $_SESSION['gepi_alea'] . "\n");
+ }
+ fwrite($f, "$sql\n");
+ fwrite($f, "-----------------\n");
fclose($f);
}
}
@@ -728,14 +729,14 @@ private function reset($_auto = "0") {
}
if ($this->auth_simpleSAML == 'yes') {
- include_once(dirname(__FILE__).'/simplesaml/lib/_autoload.php');
- $auth = new SimpleSAML_Auth_GepiSimple();
- if ($auth->isAuthenticated()) {
- $auth->logout();
- //attention, cette fonction ->logout() ne retourne, pas, le reste du script ne sera pas éxécuter à partir de cette ligne.
- //Il à y avoir un refresh automatique de la page suite au ->logout(), et donc le script va être re-éxecuter, avec cette fois
- //$auth->isAuthenticated() qui vaudra false, et donc le reste du reset va être éxecuter
- }
+ include_once(dirname(__FILE__) . '/simplesaml/lib/_autoload.php');
+ $auth = new SimpleSAML_Auth_GepiSimple();
+ if ($auth->isAuthenticated()) {
+ $auth->logout();
+ //attention, cette fonction ->logout() ne retourne, pas, le reste du script ne sera pas éxécuter à partir de cette ligne.
+ //Il à y avoir un refresh automatique de la page suite au ->logout(), et donc le script va être re-éxecuter, avec cette fois
+ //$auth->isAuthenticated() qui vaudra false, et donc le reste du reset va être éxecuter
+ }
}
// Détruit toutes les variables de session
@@ -744,7 +745,7 @@ private function reset($_auto = "0") {
// Détruit le cookie sur le navigateur
$CookieInfo = session_get_cookie_params();
- @setcookie(session_name(), '', time()-3600, $CookieInfo['path']);
+ @setcookie(session_name(), '', time() - 3600, $CookieInfo['path']);
// détruit la session sur le serveur
@@ -753,12 +754,12 @@ private function reset($_auto = "0") {
//on redémarre une nouvelle session
session_start();
session_regenerate_id();
-
+
$this->login = null;
-
+
//si une url de portail est donnée, on redirige
if (isset($_REQUEST['portal_return_url'])) {
- header('Location:'.$_REQUEST['portal_return_url']);
+ header('Location:' . $_REQUEST['portal_return_url']);
die;
}
}
@@ -767,145 +768,145 @@ private function load_session_data() {
# On ne met à jour que si la variable de session est assignée.
# Si elle est assignée et null, on met 'false'.
if (isset($_SESSION['login'])) {
- $this->login = $_SESSION['login'] != null ? $_SESSION["login"] : false;
+ $this->login = $_SESSION['login'] != null ? $_SESSION["login"] : false;
}
if (isset($_SESSION['nom'])) {
- $this->nom = $_SESSION['nom'] != null ? $_SESSION["nom"] : false;
+ $this->nom = $_SESSION['nom'] != null ? $_SESSION["nom"] : false;
}
if (isset($_SESSION['prenom'])) {
- $this->prenom = $_SESSION['prenom'] != null ? $_SESSION["prenom"] : false;
+ $this->prenom = $_SESSION['prenom'] != null ? $_SESSION["prenom"] : false;
}
if (isset($_SESSION['statut'])) {
- $this->statut = $_SESSION['statut'] != null ? $_SESSION["statut"] : false;
+ $this->statut = $_SESSION['statut'] != null ? $_SESSION["statut"] : false;
}
if (isset($_SESSION['start'])) {
- $this->start = $_SESSION['start'] != null ? $_SESSION["start"] : false;
+ $this->start = $_SESSION['start'] != null ? $_SESSION["start"] : false;
}
if (isset($_SESSION['matiere'])) {
- $this->matiere = $_SESSION['matiere'] != null ? $_SESSION["matiere"] : false;
+ $this->matiere = $_SESSION['matiere'] != null ? $_SESSION["matiere"] : false;
}
if (isset($_SESSION['rne'])) {
- $this->rne = $_SESSION['rne'] != null ? $_SESSION["rne"] : false;
+ $this->rne = $_SESSION['rne'] != null ? $_SESSION["rne"] : false;
}
if (isset($_SESSION['statut_special'])) {
- $this->statut_special = $_SESSION['statut_special'] != null ? $_SESSION["statut_special"] : false;
+ $this->statut_special = $_SESSION['statut_special'] != null ? $_SESSION["statut_special"] : false;
}
if (isset($_SESSION['statut_special_id'])) {
- $this->statut_special_id = $_SESSION['statut_special_id'] != null ? $_SESSION["statut_special_id"] : false;
+ $this->statut_special_id = $_SESSION['statut_special_id'] != null ? $_SESSION["statut_special_id"] : false;
}
if (isset($_SESSION['maxLength'])) {
- $this->maxLength = $_SESSION['maxLength'] != null ? $_SESSION["maxLength"] : false;
+ $this->maxLength = $_SESSION['maxLength'] != null ? $_SESSION["maxLength"] : false;
}
if (isset($_SESSION['current_auth_mode'])) {
- $this->current_auth_mode = $_SESSION['current_auth_mode'] != null ? $_SESSION["current_auth_mode"] : false;
+ $this->current_auth_mode = $_SESSION['current_auth_mode'] != null ? $_SESSION["current_auth_mode"] : false;
}
}
- function authenticate_gepi($_login,$_password) {
+ function authenticate_gepi($_login, $_password) {
global $debug_test_mdp, $debug_test_mdp_file;
global $debug_login_nouveaux_comptes, $loguer_nouveau_login;
global $mysqli;
- $sql = "SELECT login, password FROM utilisateurs WHERE (login = '" . $_login . "' and etat != 'inactif')";
- $resultat = mysqli_query($mysqli, $sql);
- $nb_lignes = $resultat->num_rows;
- if ($nb_lignes == "1") {
- $result_query = $resultat->fetch_object();
- $sql_salt = "SELECT salt FROM utilisateurs WHERE (login = '" . $_login . "' and etat != 'inactif')";
- $query_salt = mysqli_query($mysqli, $sql_salt);
- if ($query_salt !== false) {
- $row = $query_salt->fetch_row();
- $db_salt = $row[0];
- $query_salt->close();
- } else {
- $db_salt = '';
- }
- $db_password = $result_query->password;
- # Un compte existe avec ce login
- if ($db_salt == '') {
- //on va tester avec le md5
- if ($db_password == md5($_password)) {
- } else {
- $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Recu: '.$_password."\n");
- $tmp_mdp = array_flip (get_html_translation_table(HTML_ENTITIES));
- $_password_unhtmlentities = strtr ($_password, $tmp_mdp);
- if ($db_password == md5($_password_unhtmlentities)) {
- $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Authentification md5 OK avec unhtmlentities()'."\n");
- } else {
- $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Authentification md5 en echec avec et sans modification unhtmlentities'."\n");
- return false;
- }
- }
- //l'authentification est réussie sinon on serait déjà sorti de la fonction
- $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Authentification md5 OK'."\n");
- $sql_show = "SHOW COLUMNS FROM utilisateurs LIKE 'salt';";
- $query_show = mysqli_query($mysqli, $sql_show);
- if ($query_show->num_rows > 0) {
- //on va passer le hash en hmac scha256
- $salt = md5(uniqid(rand(), 1));
- $hmac_password = hash_hmac('sha256', $_password, $salt);
- $sql_update = "UPDATE utilisateurs SET password = '".$hmac_password."', salt = '".$salt."' WHERE login = '".$_login."'";
- $update_query = mysqli_query($mysqli, $sql_update);
- if ($update_query) {
- $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Password ameliore en hmac'."\n");
- } else {
- $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Echec password ameliore en hmac'."\n");
- }
- }
-
- } else {
- //login deja en hmac sha256
- if ($db_password == hash_hmac('sha256', $_password, $db_salt)) {
- $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Authentification hmac OK sans modification'."\n");
- } else {
- $tmp_mdp = array_flip (get_html_translation_table(HTML_ENTITIES));
- $_password_unhtmlentities = strtr ($_password, $tmp_mdp);
- if ($db_password == hash_hmac('sha256', $_password_unhtmlentities, $db_salt)) {
- $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Authentification hmac OK avec unhtmlentities()'."\n");
- } else {
- $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Authentification hmac en echec avec et sans modification unhtmlentities'."\n");
- return false;
- }
- }
- }
- //si le login fait échec, la fonction a déjà retourné avec false
- $this->login = $result_query->login;
- $this->current_auth_mode = "gepi";
- return true;
-
- } else {
- # Le login est erroné (n'existe pas dans la base)
- return false;
- }
- $resultat->close();
+ $sql = "SELECT login, password FROM utilisateurs WHERE (login = '" . $_login . "' and etat != 'inactif')";
+ $resultat = mysqli_query($mysqli, $sql);
+ $nb_lignes = $resultat->num_rows;
+ if ($nb_lignes == "1") {
+ $result_query = $resultat->fetch_object();
+ $sql_salt = "SELECT salt FROM utilisateurs WHERE (login = '" . $_login . "' and etat != 'inactif')";
+ $query_salt = mysqli_query($mysqli, $sql_salt);
+ if ($query_salt !== false) {
+ $row = $query_salt->fetch_row();
+ $db_salt = $row[0];
+ $query_salt->close();
+ } else {
+ $db_salt = '';
+ }
+ $db_password = $result_query->password;
+ # Un compte existe avec ce login
+ if ($db_salt == '') {
+ //on va tester avec le md5
+ if ($db_password == md5($_password)) {
+ } else {
+ $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Recu: ' . $_password . "\n");
+ $tmp_mdp = array_flip(get_html_translation_table(HTML_ENTITIES));
+ $_password_unhtmlentities = strtr($_password, $tmp_mdp);
+ if ($db_password == md5($_password_unhtmlentities)) {
+ $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Authentification md5 OK avec unhtmlentities()' . "\n");
+ } else {
+ $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Authentification md5 en echec avec et sans modification unhtmlentities' . "\n");
+ return false;
+ }
+ }
+ //l'authentification est réussie sinon on serait déjà sorti de la fonction
+ $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Authentification md5 OK' . "\n");
+ $sql_show = "SHOW COLUMNS FROM utilisateurs LIKE 'salt';";
+ $query_show = mysqli_query($mysqli, $sql_show);
+ if ($query_show->num_rows > 0) {
+ //on va passer le hash en hmac scha256
+ $salt = md5(uniqid(rand(), 1));
+ $hmac_password = hash_hmac('sha256', $_password, $salt);
+ $sql_update = "UPDATE utilisateurs SET password = '" . $hmac_password . "', salt = '" . $salt . "' WHERE login = '" . $_login . "'";
+ $update_query = mysqli_query($mysqli, $sql_update);
+ if ($update_query) {
+ $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Password ameliore en hmac' . "\n");
+ } else {
+ $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Echec password ameliore en hmac' . "\n");
+ }
+ }
+
+ } else {
+ //login deja en hmac sha256
+ if ($db_password == hash_hmac('sha256', $_password, $db_salt)) {
+ $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Authentification hmac OK sans modification' . "\n");
+ } else {
+ $tmp_mdp = array_flip(get_html_translation_table(HTML_ENTITIES));
+ $_password_unhtmlentities = strtr($_password, $tmp_mdp);
+ if ($db_password == hash_hmac('sha256', $_password_unhtmlentities, $db_salt)) {
+ $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Authentification hmac OK avec unhtmlentities()' . "\n");
+ } else {
+ $this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Authentification hmac en echec avec et sans modification unhtmlentities' . "\n");
+ return false;
+ }
+ }
+ }
+ //si le login fait échec, la fonction a déjà retourné avec false
+ $this->login = $result_query->login;
+ $this->current_auth_mode = "gepi";
+ return true;
+
+ } else {
+ # Le login est erroné (n'existe pas dans la base)
+ return false;
+ }
+ $resultat->close();
+ }
+
+ static function change_password_gepi($user_login, $password) {
+ global $mysqli;
+ $sql = "SHOW COLUMNS FROM utilisateurs LIKE 'salt';";
+
+ $resultat = mysqli_query($mysqli, $sql);
+ if ($resultat->num_rows > 0) {
+ $salt = md5(uniqid(rand(), 1));
+ $hmac_password = hash_hmac('sha256', $password, $salt);
+ $result = mysqli_query($mysqli, "UPDATE utilisateurs SET password='$hmac_password', salt = '$salt' WHERE login='" . $user_login . "'");
+ $resultat->close();
+ return $result;
+ } else {
+ $result = mysqli_query($mysqli, "UPDATE utilisateurs SET password='" . md5($password) . "' WHERE login='" . $user_login . "'");
+ $resultat->close();
+ return $result;
+ }
+
}
- static function change_password_gepi($user_login,$password) {
- global $mysqli;
- $sql = "SHOW COLUMNS FROM utilisateurs LIKE 'salt';";
-
- $resultat = mysqli_query($mysqli, $sql);
- if ($resultat->num_rows > 0) {
- $salt = md5(uniqid(rand(), 1));
- $hmac_password = hash_hmac('sha256', $password, $salt);
- $result = mysqli_query($mysqli, "UPDATE utilisateurs SET password='$hmac_password', salt = '$salt' WHERE login='" . $user_login . "'");
- $resultat->close();
- return $result;
- } else {
- $result = mysqli_query($mysqli, "UPDATE utilisateurs SET password='".md5($password)."' WHERE login='" . $user_login . "'");
- $resultat->close();
- return $result;
- }
-
- }
-
- private function authenticate_ldap($_login,$_password) {
+ private function authenticate_ldap($_login, $_password) {
if ($_login == null || $_password == null) {
return false;
exit();
}
$ldap_server = new LDAPServer;
- if ($ldap_server->authenticate_user($_login,$_password)) {
+ if ($ldap_server->authenticate_user($_login, $_password)) {
$this->login = $_login;
$this->current_auth_mode = "ldap";
return true;
@@ -980,14 +981,14 @@ private function authenticate_cas() {
// Extractions des attributs supplémentaires, le cas échéant
$tab = phpCAS::getAttributes();
- $attributs = array('prenom','nom','email');
- foreach($attributs as $attribut) {
- $code_attribut = getSettingValue('cas_attribut_'.$attribut);
+ $attributs = array('prenom', 'nom', 'email');
+ foreach ($attributs as $attribut) {
+ $code_attribut = getSettingValue('cas_attribut_' . $attribut);
// Si un attribut a été spécifié, on va le chercher
if (!empty($code_attribut)) {
if (isset($tab[$code_attribut])) {
$valeur = $tab[$code_attribut];
- if (!empty($valeur)){
+ if (!empty($valeur)) {
// L'attribut est trouvé et non vide, on l'assigne pour mettre à jour l'utilisateur
// On s'assure que la chaîne est bien enregistrée en UTF-8.
$valeur = ensure_utf8($valeur);
@@ -999,8 +1000,7 @@ private function authenticate_cas() {
return true;
}
- private function test_loginsso()
- {
+ private function test_loginsso() {
global $mysqli;
$requete = "SELECT login_gepi FROM sso_table_correspondance WHERE login_sso='$this->login_sso'";
@@ -1010,14 +1010,14 @@ private function test_loginsso()
return "0";
} else {
return $valeur[0];
- }
+ }
}
public function logout_cas() {
include_once('CAS.php');
// config_cas.inc.php est le fichier d'informations de connexions au serveur cas
- $path = dirname(__FILE__)."/../secure/config_cas.inc.php";
+ $path = dirname(__FILE__) . "/../secure/config_cas.inc.php";
include($path);
// Le premier argument est la version du protocole CAS
@@ -1025,11 +1025,11 @@ public function logout_cas() {
phpCAS::setLang(PHPCAS_LANG_FRENCH);
if ($cas_use_logout) {
phpCAS::logout();
- }else{
+ } else {
if ($cas_logout_url != '') {
- header("Location:".$cas_logout_url);
+ header("Location:" . $cas_logout_url);
exit();
- }else{
+ } else {
// Il faudra trouver mieux
echo 'GEPIVous êtes déconnecté.
';
exit();
@@ -1054,11 +1054,11 @@ public function logout_cas() {
}
private function authenticate_simpleSAML() {
- include_once(dirname(__FILE__).'/simplesaml/lib/_autoload.php');
+ include_once(dirname(__FILE__) . '/simplesaml/lib/_autoload.php');
$auth = new SimpleSAML_Auth_GepiSimple();
$auth->requireAuth();
$attributes = $auth->getAttributes();
-
+
//exploitation des attributs
if (empty($attributes)) {
//authentification échouée
@@ -1067,23 +1067,23 @@ private function authenticate_simpleSAML() {
$this->login = $attributes['login_gepi'][0];
$this->current_auth_mode = "simpleSAML";
-
- // Extractions des attributs supplémentaires, le cas échéant
- // inutile pour le moment
+
+ // Extractions des attributs supplémentaires, le cas échéant
+ // inutile pour le moment
return true;
}
-
+
private function authenticate_lemon() {
#TODO: Vérifier que ça marche bien comme ça !!
- if (isset($_GET['login'])) $login = $_GET['login']; else $login = "";
- if (isset($_COOKIE['user'])) $cookie_user = $_COOKIE['user']; else $cookie_user="";
- if(empty($cookie_user) or $cookie_user != $login) {
- return false;
- } else {
- $this->login = $login;
- $this->current_auth_mode = "sso";
- return true;
- }
+ if (isset($_GET['login'])) $login = $_GET['login']; else $login = "";
+ if (isset($_COOKIE['user'])) $cookie_user = $_COOKIE['user']; else $cookie_user = "";
+ if (empty($cookie_user) or $cookie_user != $login) {
+ return false;
+ } else {
+ $this->login = $login;
+ $this->current_auth_mode = "sso";
+ return true;
+ }
}
private function authenticate_lcs() {
@@ -1104,21 +1104,21 @@ private function authenticate_lcs() {
$dbPass = $GLOBALS['dbPass'];
$dbDb = $GLOBALS['dbDb'];
- if ($login!="") {
- list($user, $groups)=people_get_variables($login, false);
+ if ($login != "") {
+ list($user, $groups) = people_get_variables($login, false);
#TODO: Utiliser les infos des lignes ci-dessous pour mettre à jour
# les informations de l'utilisateur dans la base.
$lcs_tab_login["nom"] = $user["nom"];
$lcs_tab_login["email"] = $user["email"];
$long = mb_strlen($user["fullname"]) - mb_strlen($user["nom"]);
- $lcs_tab_login["fullname"] = mb_substr($user["fullname"], 0, $long) ;
+ $lcs_tab_login["fullname"] = mb_substr($user["fullname"], 0, $long);
// A ce stade, l'utilisateur est authentifié
// Etablir à nouveau la connexion à la base
if (isset($GLOBALS['db_nopersist']) && !$GLOBALS['db_nopersist'])
- $db_c = ($GLOBALS["mysqli"] = mysqli_connect($dbHost, $dbUser, $dbPass));
+ $db_c = ($GLOBALS["mysqli"] = mysqli_connect($dbHost, $dbUser, $dbPass));
else
- $db_c = ($GLOBALS["mysqli"] = mysqli_connect($dbHost, $dbUser, $dbPass));
+ $db_c = ($GLOBALS["mysqli"] = mysqli_connect($dbHost, $dbUser, $dbPass));
if (!$db_c || !((bool)mysqli_query($GLOBALS["mysqli"], "USE $dbDb"))) {
echo "\nErreur : Echec de la connexion à la base de données";
@@ -1130,7 +1130,7 @@ private function authenticate_lcs() {
exit;
} else {
// L'utilisateur n'a pas été identifié'
- header("Location:".LCS_PAGE_AUTHENTIF);
+ header("Location:" . LCS_PAGE_AUTHENTIF);
exit;
}
}
@@ -1138,7 +1138,7 @@ private function authenticate_lcs() {
# Cette méthode charge en session les données de l'utilisateur,
# à la suite d'une authentification réussie.
public function load_user_data() {
- global $mysqli;
+ global $mysqli;
# Petit test de départ pour être sûr :
if (!$this->login || $this->login == null) {
return false;
@@ -1155,98 +1155,98 @@ public function load_user_data() {
}
# On interroge la base de données
- $sql = "SELECT login, nom, prenom, email, statut, etat, now() start, change_mdp, auth_mode FROM utilisateurs WHERE (login = '".$this->login."')";
-
- if($this->mysqli !="") {
- $query = mysqli_query($this->mysqli, $sql);
- # Est-ce qu'on a bien une entrée ?
- if ($query->num_rows != "1") {
- return false;
- exit();
- }
- $sql = "SELECT id_matiere FROM j_professeurs_matieres WHERE (id_professeur = '" . $this->login . "') ORDER BY ordre_matieres LIMIT 1";
- $matiere_principale = sql_query1($sql);
- $row = $query->fetch_object();
- } else {
- $query = mysqli_query($GLOBALS["mysqli"], $sql);
-
- # Est-ce qu'on a bien une entrée ?
- if (mysqli_num_rows($query) != "1") {
- return false;
- exit();
- }
-
- $sql = "SELECT id_matiere FROM j_professeurs_matieres WHERE (id_professeur = '" . $this->login . "') ORDER BY ordre_matieres LIMIT 1";
- $matiere_principale = sql_query1($sql);
-
- $row = mysqli_fetch_object($query);
- }
-
- $_SESSION['login'] = $this->login;
+ $sql = "SELECT login, nom, prenom, email, statut, etat, now() start, change_mdp, auth_mode FROM utilisateurs WHERE (login = '" . $this->login . "')";
+
+ if ($this->mysqli != "") {
+ $query = mysqli_query($this->mysqli, $sql);
+ # Est-ce qu'on a bien une entrée ?
+ if ($query->num_rows != "1") {
+ return false;
+ exit();
+ }
+ $sql = "SELECT id_matiere FROM j_professeurs_matieres WHERE (id_professeur = '" . $this->login . "') ORDER BY ordre_matieres LIMIT 1";
+ $matiere_principale = sql_query1($sql);
+ $row = $query->fetch_object();
+ } else {
+ $query = mysqli_query($GLOBALS["mysqli"], $sql);
+
+ # Est-ce qu'on a bien une entrée ?
+ if (mysqli_num_rows($query) != "1") {
+ return false;
+ exit();
+ }
+
+ $sql = "SELECT id_matiere FROM j_professeurs_matieres WHERE (id_professeur = '" . $this->login . "') ORDER BY ordre_matieres LIMIT 1";
+ $matiere_principale = sql_query1($sql);
+
+ $row = mysqli_fetch_object($query);
+ }
+
+ $_SESSION['login'] = $this->login;
if ($row->login != null) {
- $_SESSION['login'] = $row->login;
+ $_SESSION['login'] = $row->login;
} else {
- $_SESSION['login'] = $this->login;
+ $_SESSION['login'] = $this->login;
}
- $_SESSION['prenom'] = $row->prenom;
- $_SESSION['nom'] = $row->nom;
+ $_SESSION['prenom'] = $row->prenom;
+ $_SESSION['nom'] = $row->nom;
$_SESSION['email'] = $row->email;
- $_SESSION['statut'] = $row->statut;
- $_SESSION['start'] = $row->start;
- $_SESSION['matiere'] = $matiere_principale;
- $_SESSION['rne'] = $this->rne;
- $_SESSION['current_auth_mode'] = $this->current_auth_mode;
+ $_SESSION['statut'] = $row->statut;
+ $_SESSION['start'] = $row->start;
+ $_SESSION['matiere'] = $matiere_principale;
+ $_SESSION['rne'] = $this->rne;
+ $_SESSION['current_auth_mode'] = $this->current_auth_mode;
- # L'état de l'utilisateur n'est pas stocké en session, mais seulement en interne
- # pour pouvoir effectuer quelques tests :
- $this->etat = $row->etat;
+ # L'état de l'utilisateur n'est pas stocké en session, mais seulement en interne
+ # pour pouvoir effectuer quelques tests :
+ $this->etat = $row->etat;
// Ajout pour les statuts privés
- if ($_SESSION['statut'] == 'autre') {
+ if ($_SESSION['statut'] == 'autre') {
- // On charge aussi le statut spécial
- $sql = "SELECT ds.id, ds.nom_statut FROM droits_statut ds, droits_utilisateurs du
- WHERE du.login_user = '".$this->login."'
+ // On charge aussi le statut spécial
+ $sql = "SELECT ds.id, ds.nom_statut FROM droits_statut ds, droits_utilisateurs du
+ WHERE du.login_user = '" . $this->login . "'
AND du.id_statut = ds.id";
-
- $query = mysqli_query($mysqli, $sql);
- $result = $query->fetch_object();
-
+
+ $query = mysqli_query($mysqli, $sql);
+ $result = $query->fetch_object();
+
$_SESSION['statut_special'] = $result->nom_statut;
$_SESSION['statut_special_id'] = $result->id;
- }
+ }
+
-
//generate_token($_SESSION['login']);
generate_token();
- # On charge les données dans l'instance de Session.
- $this->load_session_data();
- return true;
+ # On charge les données dans l'instance de Session.
+ $this->load_session_data();
+ return true;
}
public function record_failed_login($_login) {
- global $mysqli;
-
- include_once(dirname(__FILE__).'/HTMLPurifier.standalone.php');
- $config = HTMLPurifier_Config::createDefault();
- $config->set('Core.Encoding', 'utf-8'); // replace with your encoding
- $config->set('HTML.Doctype', 'XHTML 1.0 Strict'); // replace with your doctype
- $purifier = new HTMLPurifier($config);
-
+ global $mysqli;
+
+ include_once(dirname(__FILE__) . '/HTMLPurifier.standalone.php');
+ $config = HTMLPurifier_Config::createDefault();
+ $config->set('Core.Encoding', 'utf-8'); // replace with your encoding
+ $config->set('HTML.Doctype', 'XHTML 1.0 Strict'); // replace with your doctype
+ $purifier = new HTMLPurifier($config);
+
# Une tentative de login avec un mot de passe erronnée a été détectée.
- $sql_login = "SELECT login FROM utilisateurs WHERE (login = '".$_login."')";
-
- $resultat = mysqli_query($mysqli, $sql_login);
- $test_login = $resultat->num_rows;
+ $sql_login = "SELECT login FROM utilisateurs WHERE (login = '" . $_login . "')";
+
+ $resultat = mysqli_query($mysqli, $sql_login);
+ $test_login = $resultat->num_rows;
if ($test_login != "0") {
- tentative_intrusion(1, "Tentative de connexion avec un mot de passe incorrect. Ce peut être simplement une faute de frappe. Cette alerte n'est significative qu'en cas de répétition. (login : ".$_login.")");
+ tentative_intrusion(1, "Tentative de connexion avec un mot de passe incorrect. Ce peut être simplement une faute de frappe. Cette alerte n'est significative qu'en cas de répétition. (login : " . $_login . ")");
# On a un vrai login.
# On enregistre un log d'erreur de connexion.
- $sql = "insert into log (LOGIN, START, SESSION_ID, REMOTE_ADDR, USER_AGENT, REFERER, AUTOCLOSE, END) values (
+ $sql = "insert into log (LOGIN, START, SESSION_ID, REMOTE_ADDR, USER_AGENT, REFERER, AUTOCLOSE, END) values (
'" . $_login . "',
now(),
'',
@@ -1255,34 +1255,34 @@ public function record_failed_login($_login) {
'" . $purifier->purify($_SERVER['HTTP_REFERER']) . "',
'4',
now());";
- $res = mysqli_query($mysqli, $sql);
-
- // On compte de nombre de tentatives infructueuse issues de la même adresse IP
- $sql = "select LOGIN from log where
+ $res = mysqli_query($mysqli, $sql);
+
+ // On compte de nombre de tentatives infructueuse issues de la même adresse IP
+ $sql = "select LOGIN from log where
LOGIN = '" . $_login . "' and
START > now() - interval " . getSettingValue("temps_compte_verrouille") . " minute and
- REMOTE_ADDR = '".$_SERVER['REMOTE_ADDR']."'
+ REMOTE_ADDR = '" . $_SERVER['REMOTE_ADDR'] . "'
";
- $res_test = mysqli_query($mysqli, $sql);
- if ($res_test->num_rows > getSettingValue("nombre_tentatives_connexion")) {
- $this->lock_account($_login);
- $resultat->close();
- return true;
- } else {
- $resultat->close();
- return false;
- }
- } else {
- tentative_intrusion(1, "Tentative de connexion avec un login incorrect (n'existe pas dans la base Gepi). Ce peut être simplement une faute de frappe. Cette alerte n'est significative qu'en cas de répétition. (login utilisé : ".$_login.")");
- // Le login n'existe pas. On fait donc un test sur l'IP.
- $sql = "select LOGIN from log where
+ $res_test = mysqli_query($mysqli, $sql);
+ if ($res_test->num_rows > getSettingValue("nombre_tentatives_connexion")) {
+ $this->lock_account($_login);
+ $resultat->close();
+ return true;
+ } else {
+ $resultat->close();
+ return false;
+ }
+ } else {
+ tentative_intrusion(1, "Tentative de connexion avec un login incorrect (n'existe pas dans la base Gepi). Ce peut être simplement une faute de frappe. Cette alerte n'est significative qu'en cas de répétition. (login utilisé : " . $_login . ")");
+ // Le login n'existe pas. On fait donc un test sur l'IP.
+ $sql = "select LOGIN from log where
START > now() - interval " . getSettingValue("temps_compte_verrouille") . " minute and
- REMOTE_ADDR = '".$purifier->purify($_SERVER['REMOTE_ADDR'])."'";
- $res_test = mysqli_query($mysqli, $sql);
- if ($res_test->num_rows <= 10) {
- // On a moins de 10 enregistrements. On enregistre et on ne renvoie pas de code
- // de verrouillage.
- $sql = "insert into log (LOGIN, START, SESSION_ID, REMOTE_ADDR, USER_AGENT, REFERER, AUTOCLOSE, END) values (
+ REMOTE_ADDR = '" . $purifier->purify($_SERVER['REMOTE_ADDR']) . "'";
+ $res_test = mysqli_query($mysqli, $sql);
+ if ($res_test->num_rows <= 10) {
+ // On a moins de 10 enregistrements. On enregistre et on ne renvoie pas de code
+ // de verrouillage.
+ $sql = "insert into log (LOGIN, START, SESSION_ID, REMOTE_ADDR, USER_AGENT, REFERER, AUTOCLOSE, END) values (
'" . $_login . "',
now(),
'',
@@ -1293,46 +1293,46 @@ public function record_failed_login($_login) {
now()
)
;";
- $res = mysqli_query($mysqli, $sql);
- $resultat->close();
- return false;
- } else {
- // On a 10 entrées, on renvoie un code d'erreur de verouillage.
- $resultat->close();
- return true;
- }
- }
-
- $resultat->close();
+ $res = mysqli_query($mysqli, $sql);
+ $resultat->close();
+ return false;
+ } else {
+ // On a 10 entrées, on renvoie un code d'erreur de verouillage.
+ $resultat->close();
+ return true;
+ }
+ }
+
+ $resultat->close();
}
-
+
# Verrouillage d'un compte en raison d'un trop grand nombre d'échec de connexion.
private function lock_account($_login) {
- global $mysqli;
- if ((!isset($GLOBALS['bloque_compte_admin'])) or ($GLOBALS['bloque_compte_admin'] != "n")) {
- // On verrouille le compte même si c'est un admin
- $reg_data = mysqli_query($mysqli,"UPDATE utilisateurs SET date_verrouillage=now() WHERE login='".$_login."'" );
-
- } else {
- // on ne bloque pas le compte d'un administrateur
- $reg_data = mysqli_query($mysqli,"UPDATE utilisateurs SET date_verrouillage=now() WHERE login='".$_login."' and statut!='administrateur'");
-
- }
- # On enregistre une alerte de sécurité.
- tentative_intrusion(2, "Verrouillage du compte ".$_login." en raison d'un trop grand nombre de tentatives de connexion infructueuses. Ce peut être une tentative d'attaque brute-force.", $_login);
- return true;
+ global $mysqli;
+ if ((!isset($GLOBALS['bloque_compte_admin'])) or ($GLOBALS['bloque_compte_admin'] != "n")) {
+ // On verrouille le compte même si c'est un admin
+ $reg_data = mysqli_query($mysqli, "UPDATE utilisateurs SET date_verrouillage=now() WHERE login='" . $_login . "'");
+
+ } else {
+ // on ne bloque pas le compte d'un administrateur
+ $reg_data = mysqli_query($mysqli, "UPDATE utilisateurs SET date_verrouillage=now() WHERE login='" . $_login . "' and statut!='administrateur'");
+
+ }
+ # On enregistre une alerte de sécurité.
+ tentative_intrusion(2, "Verrouillage du compte " . $_login . " en raison d'un trop grand nombre de tentatives de connexion infructueuses. Ce peut être une tentative d'attaque brute-force.", $_login);
+ return true;
}
# Renvoie true ou false selon que le compte est bloqué ou non.
private function account_is_locked() {
- global $mysqli;
- $sql_verrouillage = "select login, statut from utilisateurs where
+ global $mysqli;
+ $sql_verrouillage = "select login, statut from utilisateurs where
login = '" . $this->login . "' and
date_verrouillage > now() - interval " . getSettingValue("temps_compte_verrouille") . " minute ";
- $test_verrouillage = sql_query1($sql_verrouillage);
-
+ $test_verrouillage = sql_query1($sql_verrouillage);
+
if ($test_verrouillage != "-1") {
// Le compte est verrouillé.
if ($this->statut == "administrateur" and $GLOBALS['bloque_compte_admin'] != "n") {
@@ -1347,7 +1347,7 @@ private function account_is_locked() {
}
private function import_user_profile() {
- global $mysqli;
+ global $mysqli;
# On ne peut arriver ici quand dans le cas où on a une authentification réussie.
# L'import d'un utilisateur ne peut se faire qu'à partir d'un LDAP
if (!LDAPServer::is_setup()) {
@@ -1357,35 +1357,35 @@ private function import_user_profile() {
# Le serveur LDAP est configuré, on y va.
# Encore un dernier petit test quand même : est-ce que l'utilisateur
# est bien absent de la base.
- $sql = "SELECT login FROM utilisateurs WHERE (login = '".$this->login."')";
-
- $resultat = mysqli_query($mysqli, $sql);
- if ($resultat->num_rows != "0") {
- $resultat->close();
- return false;
- die();
- }
- $resultat->close();
+ $sql = "SELECT login FROM utilisateurs WHERE (login = '" . $this->login . "')";
+
+ $resultat = mysqli_query($mysqli, $sql);
+ if ($resultat->num_rows != "0") {
+ $resultat->close();
+ return false;
+ die();
+ }
+ $resultat->close();
$ldap_server = new LDAPServer;
$user = $ldap_server->get_user_profile($this->login);
if ($user) {
# On ne refait pas de tests ou de formattage. La méthode get_user_profile
# s'occupe de tout.
- $sql = "INSERT INTO utilisateurs SET
- login = '".$this->login."',
- prenom = '".$user["prenom"]."',
- nom = '".$user["nom"]."',
- email = '".$user["email"]."',
- civilite = '".$user["civilite"]."',
- statut = '".$user["statut"]."',
+ $sql = "INSERT INTO utilisateurs SET
+ login = '" . $this->login . "',
+ prenom = '" . $user["prenom"] . "',
+ nom = '" . $user["nom"] . "',
+ email = '" . $user["email"] . "',
+ civilite = '" . $user["civilite"] . "',
+ statut = '" . $user["statut"] . "',
password = '',
etat = 'actif',
- auth_mode = '".$this->current_auth_mode."',
+ auth_mode = '" . $this->current_auth_mode . "',
change_mdp = 'n'";
-
- $res = mysqli_query($mysqli, $sql);
-
+
+ $res = mysqli_query($mysqli, $sql);
+
if (!$res) {
return false;
} else {
@@ -1399,304 +1399,304 @@ private function import_user_profile() {
private function import_user_profile_from_scribe() {
- global $mysqli;
+ global $mysqli;
# On ne peut arriver ici quand dans le cas où on a une authentification réussie.
# L'import d'un utilisateur ne peut se faire qu'à partir d'un LDAP de Scribe, ici.
if (!LDAPServer::is_setup()) {
return false;
die();
} else {
-
- // config_cas.inc.php est le fichier d'informations de connexions au serveur cas
- $path = dirname(__FILE__)."/LDAPServerScribe.class.php";
- include($path);
-
+
+ // config_cas.inc.php est le fichier d'informations de connexions au serveur cas
+ $path = dirname(__FILE__) . "/LDAPServerScribe.class.php";
+ include($path);
+
# Le serveur LDAP est configuré, on y va.
# Encore un dernier petit test quand même : est-ce que l'utilisateur
# est bien absent de la base.
- $sql = "SELECT login FROM utilisateurs WHERE (login = '".$this->login."')";
- $resultat = mysqli_query($mysqli, $sql);
- if ($resultat->num_rows != "0") {
- $resultat->close();
- return false;
- die();
- }
- $resultat->close();
+ $sql = "SELECT login FROM utilisateurs WHERE (login = '" . $this->login . "')";
+ $resultat = mysqli_query($mysqli, $sql);
+ if ($resultat->num_rows != "0") {
+ $resultat->close();
+ return false;
+ die();
+ }
+ $resultat->close();
$ldap_server = new LDAPServerScribe;
-
+
$user = $ldap_server->get_user_profile($this->login);
if ($user) {
# On ne refait pas de tests ou de formattage. La méthode get_user_profile
# s'occupe de tout.
-
- $errors = false;
-
- // On s'occupe de tous les traitements spécifiques à chaque statut
-
- // Eleve
- if ($user['statut'] == 'eleve') {
- // On a un élève : on vérifie s'il existe dans la table 'eleves',
- // sur la base de son INE, ou nom et prénom.
- $sql_test = "SELECT * FROM eleves
- WHERE (no_gep = '".$user['raw']['ine'][0]."'
- OR (nom = '".$user['nom']."' AND prenom = '".$user['prenom']."'))";
-
- $resultat = mysqli_query($mysqli, $sql);
- $test = $resultat->num_rows;
- $resultat->close();
-
- if ($test == 0) {
- // L'élève n'existe pas du tout. On va donc le créer.
- $nouvel_eleve = new Eleve();
- $nouvel_eleve->setLogin($this->login);
- $nouvel_eleve->setNom($user['nom']);
- $nouvel_eleve->setPrenom($user['prenom']);
- $nouvel_eleve->setSexe($user['raw']['entpersonsexe'][0]);
-
- $naissance = $user['raw']['entpersondatenaissance'][0];
- if ($naissance != '') {
- $annee = mb_substr($naissance, 0, 4);
- $mois = mb_substr($naissance, 4, 2);
- $jour = mb_substr($naissance, 6, 2);
- } else {
- $annee = '0000';
- $mois = '00';
- $jour = '00';
- }
-
- $nouvel_eleve->setNaissance("$annee-$mois-$jour");
- $nouvel_eleve->setLieuNaissance('');
- $nouvel_eleve->setElenoet($user['raw']['employeenumber'][0] || '');
- $nouvel_eleve->setEreno('');
- $nouvel_eleve->setEleid($user['raw']['intid'][0] || '');
- $nouvel_eleve->setNoGep($user['raw']['ine'][0] || '');
- $nouvel_eleve->setEmail($user['email']);
-
- if (!$nouvel_eleve->save()) $errors = true;
-
- /*
- * Récupération des CLASSES de l'eleve :
- * Pour chaque eleve, on parcours ses classes, et on ne prend que celles
- * qui correspondent à la branche de l'établissement courant, et on les stocke
- */
- $nb_classes = $user['raw']['enteleveclasses']['count'];
-
- // Pour chaque classe trouvée..
- $eleve_added_to_classe = false;
- for ($cpt=0; $cpt<$nb_classes; $cpt++) {
- if ($eleve_added_to_classe) break;
- $classe_from_ldap = explode("$", $user['raw']['enteleveclasses'][$cpt]);
- // $classe_from_ldap[0] contient le DN de l'établissement
- // $classe_from_ldap[1] contient l'id de la classe
- $code_classe = $classe_from_ldap[1];
-
- // Si le SIREN de la classe trouvée correspond bien au SIREN de l'établissement courant,
- // on crée une entrée correspondante dans le tableau des classes disponibles
- // Sinon c'est une classe d'un autre établissement, on ne doit donc pas en tenir compte
- if (strcmp($classe_from_ldap[0], $ldap_server->get_base_branch()) == 0) {
-
- /*
- * On test si la classe que l'on souhaite ajouter existe déjà
- * en la cherchant dans la base (
- */
- $classe_courante = ClasseQuery::create()
- ->filterByClasse($code_classe)
- ->findOne();
-
- if ($classe_courante) {
-
- foreach($classe_courante->getPeriodeNotes() as $periode) {
- // On associe l'élève à la classe
- $sql_classe = "INSERT INTO j_eleves_classes SET
- login = '".$this->login."',
- id_classe = '".$classe_courante->getId()."',
- periode = '".$periode->getNumPeriode()."'";
-
- $res = mysqli_query($mysqli, $sql);
- $res->close();
-
- } // Fin boucle périodes
- $eleve_added_to_classe = true;
- } // Fin test classe
- } //Fin du if classe appartient a l'etablissement courant
- } //Fin du parcours des classes de l'eleve
-
-
- // On a maintenant un élève en base, qui appartient à sa classe
- // pour toutes les périodes à partir de la période courante
-
- // On ne l'associe pas aux enseignements, car c'est un peu trop
- // risqué et bancal pour être réalisé dynamiquement ici, dans
- // la mesure où l'on n'a pas une information précise sur la
- // composition des groupes.
-
-
- } else {
- // L'élève existe déjà dans la base. On ne créé que l'utilisateur correspondant.
- // Pour ça, on va devoir s'assurer que l'identifiant est identique !
- $sql_login = "SELECT login FROM eleves
- WHERE (no_gep = '".$user['raw']['ine'][0]."'
- OR (nom = '".$user['nom']."' AND prenom = '".$user['prenom']."'))";
-
- $resultat = mysqli_query($mysqli, $sql);
- $res = $resultatè->fetch_object();
- $test_login = $res->login;
- $resultat->close();
-
-
- if ($test_login != $this->login) {
- // Le login est différent, on ne peut rien faire... Il faudrait renommer
- // le login partout dans l'application, mais il n'existe pas de mécanisme
- // pour le faire de manière fiable.
- $errors = true;
- }
- }
-
- } elseif ($user['statut'] == 'responsable') {
- // Si on a un responsable, il faut l'associer à un élève
-
- $resp = new ResponsableEleve();
- $resp->setLogin($this->login);
- $resp->setNom($user['nom']);
- $resp->setPrenom($user['prenom']);
- $resp->setCivilite($user['raw']['personaltitle'][0]);
- $resp->setTelPers($user['raw']['homephone'][0]);
- $resp->setTelProf($user['raw']['telephonenumber'][0]);
- $resp->setTelPort($user['raw']['mobile'][0]);
- $resp->setMel($user['email']);
- $resp->setAdresseId($user['raw']['intid'][0]);
-
- // On créé l'adresse associée
-
- $adr = new Adresse();
- $adr->setAdresseId($user['raw']['intid'][0]);
- $adr->setAdr1($user['raw']['entpersonadresse'][0]);
- $adr->setAdr2('');
- $adr->setAdr3('');
- $adr->setAdr4('');
- $adr->setCommune($user['raw']['entpersonville'][0]);
- $adr->setCp($user['raw']['entpersoncodepostal'][0]);
- $adr->setPays($user['raw']['entpersonpays'][0]);
-
- $resp->setAdresse($adr);
-
- $resp->save();
-
- $nb_eleves_a_charge = $user['raw']['entauxpersreleleveeleve']['count'];
-
- //pour chaque dn d'eleve
- for ($i=0;$i<$nb_eleves_a_charge;$i++) {
- $eleve_uid = explode(",",$user['raw']['entauxpersreleleveeleve'][$i]);
- $eleve_associe_login = mb_substr($eleve_uid[0], 4);
- $eleve_sql = "SELECT ele_id FROM eleves WHERE login = '$eleve_associe_login'";
-
- $eleve_query = mysqli_query($mysqli, $sql);
- if ($eleve_query->num_rows == 1) {
- $eleve_associe_obj = $eleve_query->fetch_object();
- $eleve_associe_ele_id = $eleve_associe_obj->ele_id;
- // Gepi donne un ordre aux responsables, il faut donc verifier combien de responsables sont deja enregistres pour l'eleve
- // On initialise le numero de responsable
- $numero_responsable = 1;
- $req_nb_resp_deja_presents = "SELECT count(*) FROM responsables2 WHERE ele_id = '$eleve_associe_ele_id'";
- $res_nb_resp = mysqli_query($mysqli, $req_nb_resp_deja_presents);
- $nb_resp = $res_nb_resp->fetch_array($res_nb_resp);
- if ($nb_resp[0] > 0) {
- // Si deja 1 ou plusieurs responsables legaux pour cet eleve,on ajoute le nouveau responsable en incrementant son numero
- $numero_responsable += $nb_resp[0];
-
- //--
- // TODO: tester si on a des adresses identiques, et n'utiliser qu'un seul objet adresse dans ce cas.
- //--
- }
-
- // Ajout de la relation entre Responsable et Eleve dans la table "responsables2" pour chaque eleve
- $req_ajout_lien_eleve_resp = "INSERT INTO responsables2 VALUES('$eleve_associe_ele_id','".$resp->getResponsableEleveId()."','$numero_responsable','')";
- $insert_lien = mysqli_query($mysqli, $req_ajout_lien_eleve_resp);
- }
- }
-
- } elseif ($user['statut'] == 'professeur') {
- // Rien de spécial à ce stade.
-
- } else {
- // Ici : que fait-on si l'on n'a pas un statut directement reconnu
- // et compatible Gepi ?
- // On applique le statut par défaut, configuré par l'admin.
- $user['statut'] = getSettingValue("statut_utilisateur_defaut");
- }
-
- // On créé l'utilisateur, s'il n'y a pas eu d'erreurs.
- if (!$errors) {
- $new_compte_utilisateur = new UtilisateurProfessionnel();
- $new_compte_utilisateur->setAuthMode('sso');
- $new_compte_utilisateur->setCivilite($user['civilite']);
- $new_compte_utilisateur->setEmail($user['email']);
- $new_compte_utilisateur->setEtat('actif');
- $new_compte_utilisateur->setLogin($this->login);
- $new_compte_utilisateur->setNom($user['nom']);
- $new_compte_utilisateur->setPrenom($user['prenom']);
- $new_compte_utilisateur->setShowEmail('no');
- $new_compte_utilisateur->setStatut($user['statut']);
- //$new_compte_utilisateur->save();
- if ($new_compte_utilisateur->save()) {
- return true;
- } else {
- return false;
- }
- }
-
+
+ $errors = false;
+
+ // On s'occupe de tous les traitements spécifiques à chaque statut
+
+ // Eleve
+ if ($user['statut'] == 'eleve') {
+ // On a un élève : on vérifie s'il existe dans la table 'eleves',
+ // sur la base de son INE, ou nom et prénom.
+ $sql_test = "SELECT * FROM eleves
+ WHERE (no_gep = '" . $user['raw']['ine'][0] . "'
+ OR (nom = '" . $user['nom'] . "' AND prenom = '" . $user['prenom'] . "'))";
+
+ $resultat = mysqli_query($mysqli, $sql);
+ $test = $resultat->num_rows;
+ $resultat->close();
+
+ if ($test == 0) {
+ // L'élève n'existe pas du tout. On va donc le créer.
+ $nouvel_eleve = new Eleve();
+ $nouvel_eleve->setLogin($this->login);
+ $nouvel_eleve->setNom($user['nom']);
+ $nouvel_eleve->setPrenom($user['prenom']);
+ $nouvel_eleve->setSexe($user['raw']['entpersonsexe'][0]);
+
+ $naissance = $user['raw']['entpersondatenaissance'][0];
+ if ($naissance != '') {
+ $annee = mb_substr($naissance, 0, 4);
+ $mois = mb_substr($naissance, 4, 2);
+ $jour = mb_substr($naissance, 6, 2);
+ } else {
+ $annee = '0000';
+ $mois = '00';
+ $jour = '00';
+ }
+
+ $nouvel_eleve->setNaissance("$annee-$mois-$jour");
+ $nouvel_eleve->setLieuNaissance('');
+ $nouvel_eleve->setElenoet($user['raw']['employeenumber'][0] || '');
+ $nouvel_eleve->setEreno('');
+ $nouvel_eleve->setEleid($user['raw']['intid'][0] || '');
+ $nouvel_eleve->setNoGep($user['raw']['ine'][0] || '');
+ $nouvel_eleve->setEmail($user['email']);
+
+ if (!$nouvel_eleve->save()) $errors = true;
+
+ /*
+ * Récupération des CLASSES de l'eleve :
+ * Pour chaque eleve, on parcours ses classes, et on ne prend que celles
+ * qui correspondent à la branche de l'établissement courant, et on les stocke
+ */
+ $nb_classes = $user['raw']['enteleveclasses']['count'];
+
+ // Pour chaque classe trouvée..
+ $eleve_added_to_classe = false;
+ for ($cpt = 0; $cpt < $nb_classes; $cpt++) {
+ if ($eleve_added_to_classe) break;
+ $classe_from_ldap = explode("$", $user['raw']['enteleveclasses'][$cpt]);
+ // $classe_from_ldap[0] contient le DN de l'établissement
+ // $classe_from_ldap[1] contient l'id de la classe
+ $code_classe = $classe_from_ldap[1];
+
+ // Si le SIREN de la classe trouvée correspond bien au SIREN de l'établissement courant,
+ // on crée une entrée correspondante dans le tableau des classes disponibles
+ // Sinon c'est une classe d'un autre établissement, on ne doit donc pas en tenir compte
+ if (strcmp($classe_from_ldap[0], $ldap_server->get_base_branch()) == 0) {
+
+ /*
+ * On test si la classe que l'on souhaite ajouter existe déjà
+ * en la cherchant dans la base (
+ */
+ $classe_courante = ClasseQuery::create()
+ ->filterByClasse($code_classe)
+ ->findOne();
+
+ if ($classe_courante) {
+
+ foreach ($classe_courante->getPeriodeNotes() as $periode) {
+ // On associe l'élève à la classe
+ $sql_classe = "INSERT INTO j_eleves_classes SET
+ login = '" . $this->login . "',
+ id_classe = '" . $classe_courante->getId() . "',
+ periode = '" . $periode->getNumPeriode() . "'";
+
+ $res = mysqli_query($mysqli, $sql);
+ $res->close();
+
+ } // Fin boucle périodes
+ $eleve_added_to_classe = true;
+ } // Fin test classe
+ } //Fin du if classe appartient a l'etablissement courant
+ } //Fin du parcours des classes de l'eleve
+
+
+ // On a maintenant un élève en base, qui appartient à sa classe
+ // pour toutes les périodes à partir de la période courante
+
+ // On ne l'associe pas aux enseignements, car c'est un peu trop
+ // risqué et bancal pour être réalisé dynamiquement ici, dans
+ // la mesure où l'on n'a pas une information précise sur la
+ // composition des groupes.
+
+
+ } else {
+ // L'élève existe déjà dans la base. On ne créé que l'utilisateur correspondant.
+ // Pour ça, on va devoir s'assurer que l'identifiant est identique !
+ $sql_login = "SELECT login FROM eleves
+ WHERE (no_gep = '" . $user['raw']['ine'][0] . "'
+ OR (nom = '" . $user['nom'] . "' AND prenom = '" . $user['prenom'] . "'))";
+
+ $resultat = mysqli_query($mysqli, $sql);
+ $res = $resultatè->fetch_object();
+ $test_login = $res->login;
+ $resultat->close();
+
+
+ if ($test_login != $this->login) {
+ // Le login est différent, on ne peut rien faire... Il faudrait renommer
+ // le login partout dans l'application, mais il n'existe pas de mécanisme
+ // pour le faire de manière fiable.
+ $errors = true;
+ }
+ }
+
+ } elseif ($user['statut'] == 'responsable') {
+ // Si on a un responsable, il faut l'associer à un élève
+
+ $resp = new ResponsableEleve();
+ $resp->setLogin($this->login);
+ $resp->setNom($user['nom']);
+ $resp->setPrenom($user['prenom']);
+ $resp->setCivilite($user['raw']['personaltitle'][0]);
+ $resp->setTelPers($user['raw']['homephone'][0]);
+ $resp->setTelProf($user['raw']['telephonenumber'][0]);
+ $resp->setTelPort($user['raw']['mobile'][0]);
+ $resp->setMel($user['email']);
+ $resp->setAdresseId($user['raw']['intid'][0]);
+
+ // On créé l'adresse associée
+
+ $adr = new Adresse();
+ $adr->setAdresseId($user['raw']['intid'][0]);
+ $adr->setAdr1($user['raw']['entpersonadresse'][0]);
+ $adr->setAdr2('');
+ $adr->setAdr3('');
+ $adr->setAdr4('');
+ $adr->setCommune($user['raw']['entpersonville'][0]);
+ $adr->setCp($user['raw']['entpersoncodepostal'][0]);
+ $adr->setPays($user['raw']['entpersonpays'][0]);
+
+ $resp->setAdresse($adr);
+
+ $resp->save();
+
+ $nb_eleves_a_charge = $user['raw']['entauxpersreleleveeleve']['count'];
+
+ //pour chaque dn d'eleve
+ for ($i = 0; $i < $nb_eleves_a_charge; $i++) {
+ $eleve_uid = explode(",", $user['raw']['entauxpersreleleveeleve'][$i]);
+ $eleve_associe_login = mb_substr($eleve_uid[0], 4);
+ $eleve_sql = "SELECT ele_id FROM eleves WHERE login = '$eleve_associe_login'";
+
+ $eleve_query = mysqli_query($mysqli, $sql);
+ if ($eleve_query->num_rows == 1) {
+ $eleve_associe_obj = $eleve_query->fetch_object();
+ $eleve_associe_ele_id = $eleve_associe_obj->ele_id;
+ // Gepi donne un ordre aux responsables, il faut donc verifier combien de responsables sont deja enregistres pour l'eleve
+ // On initialise le numero de responsable
+ $numero_responsable = 1;
+ $req_nb_resp_deja_presents = "SELECT count(*) FROM responsables2 WHERE ele_id = '$eleve_associe_ele_id'";
+ $res_nb_resp = mysqli_query($mysqli, $req_nb_resp_deja_presents);
+ $nb_resp = $res_nb_resp->fetch_array($res_nb_resp);
+ if ($nb_resp[0] > 0) {
+ // Si deja 1 ou plusieurs responsables legaux pour cet eleve,on ajoute le nouveau responsable en incrementant son numero
+ $numero_responsable += $nb_resp[0];
+
+ //--
+ // TODO: tester si on a des adresses identiques, et n'utiliser qu'un seul objet adresse dans ce cas.
+ //--
+ }
+
+ // Ajout de la relation entre Responsable et Eleve dans la table "responsables2" pour chaque eleve
+ $req_ajout_lien_eleve_resp = "INSERT INTO responsables2 VALUES('$eleve_associe_ele_id','" . $resp->getResponsableEleveId() . "','$numero_responsable','')";
+ $insert_lien = mysqli_query($mysqli, $req_ajout_lien_eleve_resp);
+ }
+ }
+
+ } elseif ($user['statut'] == 'professeur') {
+ // Rien de spécial à ce stade.
+
+ } else {
+ // Ici : que fait-on si l'on n'a pas un statut directement reconnu
+ // et compatible Gepi ?
+ // On applique le statut par défaut, configuré par l'admin.
+ $user['statut'] = getSettingValue("statut_utilisateur_defaut");
+ }
+
+ // On créé l'utilisateur, s'il n'y a pas eu d'erreurs.
+ if (!$errors) {
+ $new_compte_utilisateur = new UtilisateurProfessionnel();
+ $new_compte_utilisateur->setAuthMode('sso');
+ $new_compte_utilisateur->setCivilite($user['civilite']);
+ $new_compte_utilisateur->setEmail($user['email']);
+ $new_compte_utilisateur->setEtat('actif');
+ $new_compte_utilisateur->setLogin($this->login);
+ $new_compte_utilisateur->setNom($user['nom']);
+ $new_compte_utilisateur->setPrenom($user['prenom']);
+ $new_compte_utilisateur->setShowEmail('no');
+ $new_compte_utilisateur->setStatut($user['statut']);
+ //$new_compte_utilisateur->save();
+ if ($new_compte_utilisateur->save()) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
} else {
return false;
}
}
}
- # Mise à jour de quelques attributs de l'utilisateur à partir des attributs transmis
- # par CAS directement.
- private function update_user_with_cas_attributes(){
- global $mysqli;
- $need_update = false;
- if (isset($GLOBALS['debug_log_file'])){
- error_log("Mise à jour de l'utilisateur à partir des attributs CAS\n", 3, $GLOBALS['debug_log_file']);
- error_log("Attribut email :".$this->cas_extra_attributes['email']."\n", 3, $GLOBALS['debug_log_file']);
- error_log("Attribut prenom :".$this->cas_extra_attributes['prenom']."\n", 3, $GLOBALS['debug_log_file']);
- error_log("Attribut nom :".$this->cas_extra_attributes['nom']."\n", 3, $GLOBALS['debug_log_file']);
- }
- if (!empty($this->cas_extra_attributes)) {
- $query = 'UPDATE utilisateurs SET ';
- $first = true;
- foreach($this->cas_extra_attributes as $attribute => $value) {
+ # Mise à jour de quelques attributs de l'utilisateur à partir des attributs transmis
+ # par CAS directement.
+ private function update_user_with_cas_attributes() {
+ global $mysqli;
+ $need_update = false;
+ if (isset($GLOBALS['debug_log_file'])) {
+ error_log("Mise à jour de l'utilisateur à partir des attributs CAS\n", 3, $GLOBALS['debug_log_file']);
+ error_log("Attribut email :" . $this->cas_extra_attributes['email'] . "\n", 3, $GLOBALS['debug_log_file']);
+ error_log("Attribut prenom :" . $this->cas_extra_attributes['prenom'] . "\n", 3, $GLOBALS['debug_log_file']);
+ error_log("Attribut nom :" . $this->cas_extra_attributes['nom'] . "\n", 3, $GLOBALS['debug_log_file']);
+ }
+ if (!empty($this->cas_extra_attributes)) {
+ $query = 'UPDATE utilisateurs SET ';
+ $first = true;
+ foreach ($this->cas_extra_attributes as $attribute => $value) {
// On compare la valeur envoyée avec la valeur présente dans Gepi
- if ($_SESSION[$attribute] != $value){
- $_SESSION[$attribute] = $value;
- $need_update = true;
- if (!$first) {
- $query .= ", ";
- }
-
- $query .= "$attribute = '$value'";
- $first = false;
- }
- }
- $query .= " WHERE login = '$this->login'";
- error_log("Détail requête : ".$query."\n", 3, $GLOBALS['debug_log_file']);
-
- if ($need_update) $res = mysqli_query($mysqli, $query);
- if ($need_update && $this->statut == 'eleve') {
- # On a eu une mise à jour qui concerne un élève, il faut synchroniser l'info dans la table eleves
- $sql = "UPDATE eleves, utilisateurs
+ if ($_SESSION[$attribute] != $value) {
+ $_SESSION[$attribute] = $value;
+ $need_update = true;
+ if (!$first) {
+ $query .= ", ";
+ }
+
+ $query .= "$attribute = '$value'";
+ $first = false;
+ }
+ }
+ $query .= " WHERE login = '$this->login'";
+ error_log("Détail requête : " . $query . "\n", 3, $GLOBALS['debug_log_file']);
+
+ if ($need_update) $res = mysqli_query($mysqli, $query);
+ if ($need_update && $this->statut == 'eleve') {
+ # On a eu une mise à jour qui concerne un élève, il faut synchroniser l'info dans la table eleves
+ $sql = "UPDATE eleves, utilisateurs
SET eleves.nom = utilisateurs.nom,
eleves.prenom = utilisateurs.prenom,
eleves.email = utilisateurs.email
WHERE eleves.login = utilisateurs.login
- AND utilisateurs.login = '".$this->login."'";
-
- mysqli_query($mysqli, $sql);
- }
- return $res;
- }
- }
+ AND utilisateurs.login = '" . $this->login . "'";
+
+ mysqli_query($mysqli, $sql);
+ }
+ return $res;
+ }
+ }
@@ -1706,50 +1706,50 @@ private function update_user_with_cas_attributes(){
# en assignant $timezone.
private function update_timezone($_timezone) {
- # Mise à jour du fuseau horaire pour PHP
- $update_timezone = date_default_timezone_set($_timezone);
-
- # Mise à jour pour MySQL
- if ($update_timezone) {
-
- # Il faut qu'on formatte le fuseau
- $timezone = new DateTimeZone(date_default_timezone_get());
- $time = new DateTime("now", $timezone);
- $offset = $timezone->getOffset($time);
- $offset_sign = $offset < 0 == "-" ? "-" : "+";
- $offset = abs($offset);
- $offset_hours = $offset / 3600 % 24;
- $offset_hours = mb_strlen($offset_hours) == '1' ? "0".$offset_hours : $offset_hours;
- $offset_minutes = $offset / 60 % 60;
- $offset_minutes = mb_strlen($offset_minutes) == '1' ? "0".$offset_minutes : $offset_minutes;
- $mysql_offset = $offset_sign . $offset_hours . ":" . $offset_minutes;
- $test = mysqli_query($GLOBALS["mysqli"], "SET time_zone = '".$mysql_offset."'");
- }
- return $update_timezone;
- }
-
- # Renvoie 'true' si l'accès à Gepi se fait en https
- static function https_request() {
- if (!isset($_SERVER['HTTPS'])
- OR (isset($_SERVER['HTTPS']) AND strtolower($_SERVER['HTTPS']) != "on")
- OR (isset($_SERVER['X-Forwaded-Proto']) AND $_SERVER['X-Forwaded-Proto'] != "https")) {
- return false;
- } else {
- return true;
- }
- }
-
- # écrit dans un fichier un message de debug
- static private function debug_login_mdp($debug_test_mdp,$debug_test_mdp_file,$debug_test_mdp_message) {
- global $debug_login_nouveaux_comptes, $loguer_nouveau_login;
-
- if(($debug_test_mdp=="y")||
- (($debug_login_nouveaux_comptes=="y")&&($loguer_nouveau_login=="y"))) {
- $f_tmp=fopen($debug_test_mdp_file,"a+");
- fwrite($f_tmp,$debug_test_mdp_message);
- fclose($f_tmp);
- }
- }
+ # Mise à jour du fuseau horaire pour PHP
+ $update_timezone = date_default_timezone_set($_timezone);
+
+ # Mise à jour pour MySQL
+ if ($update_timezone) {
+
+ # Il faut qu'on formatte le fuseau
+ $timezone = new DateTimeZone(date_default_timezone_get());
+ $time = new DateTime("now", $timezone);
+ $offset = $timezone->getOffset($time);
+ $offset_sign = $offset < 0 == "-" ? "-" : "+";
+ $offset = abs($offset);
+ $offset_hours = $offset / 3600 % 24;
+ $offset_hours = mb_strlen($offset_hours) == '1' ? "0" . $offset_hours : $offset_hours;
+ $offset_minutes = $offset / 60 % 60;
+ $offset_minutes = mb_strlen($offset_minutes) == '1' ? "0" . $offset_minutes : $offset_minutes;
+ $mysql_offset = $offset_sign . $offset_hours . ":" . $offset_minutes;
+ $test = mysqli_query($GLOBALS["mysqli"], "SET time_zone = '" . $mysql_offset . "'");
+ }
+ return $update_timezone;
+ }
+
+ # Renvoie 'true' si l'accès à Gepi se fait en https
+ static function https_request() {
+ if (!isset($_SERVER['HTTPS'])
+ or (isset($_SERVER['HTTPS']) and strtolower($_SERVER['HTTPS']) != "on")
+ or (isset($_SERVER['X-Forwaded-Proto']) and $_SERVER['X-Forwaded-Proto'] != "https")) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+ # écrit dans un fichier un message de debug
+ static private function debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, $debug_test_mdp_message) {
+ global $debug_login_nouveaux_comptes, $loguer_nouveau_login;
+
+ if (($debug_test_mdp == "y") ||
+ (($debug_login_nouveaux_comptes == "y") && ($loguer_nouveau_login == "y"))) {
+ $f_tmp = fopen($debug_test_mdp_file, "a+");
+ fwrite($f_tmp, $debug_test_mdp_message);
+ fclose($f_tmp);
+ }
+ }
}
?>
From 051d97131c0766b958f7d7d7917aac0d0cb01ecf Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 13:46:11 +0200
Subject: [PATCH 02/63] lib/Session.class.php: optimisation des conditions
---
lib/Session.class.php | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/Session.class.php b/lib/Session.class.php
index 22da443cb8..a9dda8c8b8 100755
--- a/lib/Session.class.php
+++ b/lib/Session.class.php
@@ -97,9 +97,9 @@ public function __construct($login_CAS_en_cours = false) {
# On charge les valeurs déjà présentes en session
$this->load_session_data();
# On charge des éléments de configuration liés à l'authentification
- $this->auth_locale = getSettingValue("auth_locale") == 'yes' ? true : false;
- $this->auth_ldap = getSettingValue("auth_ldap") == 'yes' ? true : false;
- $this->auth_simpleSAML = getSettingValue("auth_simpleSAML") == 'yes' ? true : false;
+ $this->auth_locale = getSettingValue("auth_locale") == 'yes';
+ $this->auth_ldap = getSettingValue("auth_ldap") == 'yes';
+ $this->auth_simpleSAML = getSettingValue("auth_simpleSAML") == 'yes';
$this->auth_sso = in_array(getSettingValue("auth_sso"), array("lemon", "cas", "lcs")) ? getSettingValue("auth_sso") : false;
if (!$this->is_anonymous()) {
From 751f00d43531744166a2736ae64dd422d505afb5 Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 13:47:14 +0200
Subject: [PATCH 03/63] lib/Session.class.php: suppression de code non
atteignable
---
lib/Session.class.php | 1 -
1 file changed, 1 deletion(-)
diff --git a/lib/Session.class.php b/lib/Session.class.php
index a9dda8c8b8..7585ab4bb9 100755
--- a/lib/Session.class.php
+++ b/lib/Session.class.php
@@ -207,7 +207,6 @@ public function authenticate($_login = null, $_password = null) {
if (isset($GLOBALS['liste_noire_ip']) && in_array($_SERVER['REMOTE_ADDR'], $GLOBALS['liste_noire_ip'])) {
tentative_intrusion(1, "Tentative de connexion depuis une IP sur liste noire (login utilisé : " . $_login . ")");
return "3";
- die();
}
if ($_login != null && mb_strtoupper($_login) != mb_strtoupper($this->login)) {
From 407ae4854a31cdfefaff437b2e13c30d80d9b89b Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 13:47:40 +0200
Subject: [PATCH 04/63] =?UTF-8?q?lib/Session.class.php:=20simplification?=
=?UTF-8?q?=20de=20l'expression=20r=C3=A9guli=C3=A8re?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
lib/Session.class.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/Session.class.php b/lib/Session.class.php
index 7585ab4bb9..163e7a6862 100755
--- a/lib/Session.class.php
+++ b/lib/Session.class.php
@@ -220,7 +220,7 @@ public function authenticate($_login = null, $_password = null) {
fclose($f_tmp);
} elseif ($debug_login_nouveaux_comptes == "y") {
$loguer_nouveau_login = "n";
- if (preg_match("/[A-Za-z0-9_\.-]/", $_login)) {
+ if (preg_match("/[A-Za-z0-9_-]/", $_login)) {
$sql = "SELECT 1=1 FROM utilisateurs WHERE login='$_login' AND change_mdp='y';";
$resultat = mysqli_query($mysqli, $sql);
From 7021bef5b8cd383d5b99e7e4daa9ab9624d0955f Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 13:49:11 +0200
Subject: [PATCH 05/63] lib/LDAPServer.class.php: suppression de la branche du
switch redondante
---
lib/LDAPServer.class.php | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/lib/LDAPServer.class.php b/lib/LDAPServer.class.php
index 2a5f4036ef..68b541f263 100755
--- a/lib/LDAPServer.class.php
+++ b/lib/LDAPServer.class.php
@@ -137,10 +137,7 @@ public function get_user_profile($_login) {
$user[0][$this->champ_civilite][0] = $this->code_cilivite_madame;
}
switch ($user[0][$this->champ_civilite][0]) {
- case $this->code_civilite_madame:
- $infos["civilite"] = "Mme";
- break;
- case $this->code_civilite_mademoiselle:
+ case $this->code_civilite_mademoiselle:
$infos["civilite"] = "Mlle";
break;
case $this->code_civilite_monsieur:
From b9429e21127531a64ddc6c5228afd005a9172142 Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 13:49:49 +0200
Subject: [PATCH 06/63] lib/LDAPServer.class.php: suppression de la variable
inutile
---
lib/LDAPServer.class.php | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/lib/LDAPServer.class.php b/lib/LDAPServer.class.php
index 68b541f263..87f38a9628 100755
--- a/lib/LDAPServer.class.php
+++ b/lib/LDAPServer.class.php
@@ -208,10 +208,8 @@ public function get_all_users($type, $param){
// On utilise le rne de l'établissement pour récupérer les utilisateurs
$filter = '('.$this->champ_rne.'='.$param.')';
$sr = ldap_search($this->ds, $this->get_dn(), $filter) ;
- $infos = array();
- $infos = ldap_get_entries($this->ds, $sr);
- return $infos;
+ return ldap_get_entries($this->ds, $sr);
}else{
return false;
}
From fe26188c5ae60890ec350161781b59f5a0e90618 Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 13:50:09 +0200
Subject: [PATCH 07/63] lib/LDAPServer.class.php: uniformisation
---
lib/LDAPServer.class.php | 284 ++++++++++++++++++++-------------------
1 file changed, 143 insertions(+), 141 deletions(-)
diff --git a/lib/LDAPServer.class.php b/lib/LDAPServer.class.php
index 87f38a9628..f6b28f1824 100755
--- a/lib/LDAPServer.class.php
+++ b/lib/LDAPServer.class.php
@@ -1,4 +1,5 @@
get_user_profile($_login);
- $test_bind = @ldap_bind($this->ds,$user["dn"],$_password);
+ $test_bind = @ldap_bind($this->ds, $user["dn"], $_password);
// On refait le bind pour reprendre les droits
- ldap_bind($this->ds,$this->login,$this->password);
+ ldap_bind($this->ds, $this->login, $this->password);
if ($user && $_password != '' && $test_bind) {
return true;
@@ -104,113 +105,113 @@ public function authenticate_user($_login, $_password) {
# dans un tableau
public function get_user_profile($_login) {
$_login = my_ereg_replace("[^-@._[:space:][:alnum:]]", "", $_login); // securite
- $search_dn = $this->get_dn();
- $search_filter = "(".$this->champ_login."=".$_login.")";
- $sr = ldap_search($this->ds,$search_dn,$search_filter);
- $user = array();
- $user = ldap_get_entries($this->ds,$sr);
- if (array_key_exists(0, $user)) {
- $infos = array();
- $infos["dn"] = $user[0]["dn"];
-
- if ($this->champ_prenom == '' || !array_key_exists($this->champ_prenom, $user[0])) {
- $user[0][$this->champ_prenom][0] = '';
- }
- if ($this->champ_nom == '' || !array_key_exists($this->champ_nom, $user[0])) {
- $user[0][$this->champ_nom][0] = '';
- }
- if ($this->champ_nom_complet == '' || !array_key_exists($this->champ_nom_complet, $user[0])) {
- $user[0][$this->champ_nom_complet][0] = '';
- }
-
- $nom = $this->format_name($user[0][$this->champ_prenom][0], $user[0][$this->champ_nom][0], $user[0][$this->champ_nom_complet][0]);
-
- $infos["prenom"] = $nom['prenom'];
- $infos["nom"] = $nom['nom'];
-
- if (!array_key_exists($this->champ_email, $user[0])) {
- $user[0][$this->champ_email][0] = null;
- }
- $infos["email"] = $user[0][$this->champ_email][0];
-
- if (!array_key_exists($this->champ_civilite, $user[0])) {
- $user[0][$this->champ_civilite][0] = $this->code_cilivite_madame;
- }
- switch ($user[0][$this->champ_civilite][0]) {
+ $search_dn = $this->get_dn();
+ $search_filter = "(" . $this->champ_login . "=" . $_login . ")";
+ $sr = ldap_search($this->ds, $search_dn, $search_filter);
+ $user = array();
+ $user = ldap_get_entries($this->ds, $sr);
+ if (array_key_exists(0, $user)) {
+ $infos = array();
+ $infos["dn"] = $user[0]["dn"];
+
+ if ($this->champ_prenom == '' || !array_key_exists($this->champ_prenom, $user[0])) {
+ $user[0][$this->champ_prenom][0] = '';
+ }
+ if ($this->champ_nom == '' || !array_key_exists($this->champ_nom, $user[0])) {
+ $user[0][$this->champ_nom][0] = '';
+ }
+ if ($this->champ_nom_complet == '' || !array_key_exists($this->champ_nom_complet, $user[0])) {
+ $user[0][$this->champ_nom_complet][0] = '';
+ }
+
+ $nom = $this->format_name($user[0][$this->champ_prenom][0], $user[0][$this->champ_nom][0], $user[0][$this->champ_nom_complet][0]);
+
+ $infos["prenom"] = $nom['prenom'];
+ $infos["nom"] = $nom['nom'];
+
+ if (!array_key_exists($this->champ_email, $user[0])) {
+ $user[0][$this->champ_email][0] = null;
+ }
+ $infos["email"] = $user[0][$this->champ_email][0];
+
+ if (!array_key_exists($this->champ_civilite, $user[0])) {
+ $user[0][$this->champ_civilite][0] = $this->code_cilivite_madame;
+ }
+ switch ($user[0][$this->champ_civilite][0]) {
case $this->code_civilite_mademoiselle:
- $infos["civilite"] = "Mlle";
- break;
- case $this->code_civilite_monsieur:
- $infos["civilite"] = "M.";
- break;
- default:
- $infos["civilite"] = "Mme";
- break;
- }
-
- if ($this->champ_rne == '' || !array_key_exists($this->champ_rne, $user[0])) {
- $user[0][$this->champ_rne][0] = "";
- $user[0][$this->champ_rne]['count'] = 0;
- }
- $nbre_rne = $user[0][$this->champ_rne]['count'];
-
- // S'il y a plusieurs RNE dans le ldap, on les renvoie tous
- $infos["rne"] = array();
- for($a = 0 ; $a < $nbre_rne ; $a++){
+ $infos["civilite"] = "Mlle";
+ break;
+ case $this->code_civilite_monsieur:
+ $infos["civilite"] = "M.";
+ break;
+ default:
+ $infos["civilite"] = "Mme";
+ break;
+ }
+
+ if ($this->champ_rne == '' || !array_key_exists($this->champ_rne, $user[0])) {
+ $user[0][$this->champ_rne][0] = "";
+ $user[0][$this->champ_rne]['count'] = 0;
+ }
+ $nbre_rne = $user[0][$this->champ_rne]['count'];
+
+ // S'il y a plusieurs RNE dans le ldap, on les renvoie tous
+ $infos["rne"] = array();
+ for ($a = 0; $a < $nbre_rne; $a++) {
$infos["rne"][$a] = $user[0][$this->champ_rne][$a];
}
- # La détermination du statut est la manipulation la plus délicate.
- # On dispose de deux moyens : un champ du LDAP (le plus simple...)
- # ou bien une chaîne à tester sur le DN.
- if ($this->champ_statut != null) {
- // Le champ statut est défini, alors on teste
- if (array_key_exists($this->champ_statut, $user[0])) {
- if (in_array($user[0][$this->champ_statut][0], array("administrateur","professeur","eleve","responsable","scolarite","cpe"))) {
- $infos["statut"] = $user[0][$this->champ_statut][0];
- }
- }
- } else {
- // Si on est là, ce qu'on va essayer de tester avec des chaînes de caractères sur le DN
- // En raison du risque d'erreur en cas de mauvaise configuration, on ne teste pas
- // le statut administrateur.
- if ($this->chaine_dn_statut_professeur != '' && strstr($infos["dn"],$this->chaine_dn_statut_professeur)) {
- $infos["statut"] = "professeur";
- } else if ($this->chaine_dn_statut_eleve != '' && strstr($infos["dn"],$this->chaine_dn_statut_eleve)) {
- $infos["statut"] = "eleve";
- } else if ($this->chaine_dn_statut_responsable != '' && strstr($infos["dn"],$this->chaine_dn_statut_responsable)) {
- $infos["statut"] = "responsable";
- } else if ($this->chaine_dn_statut_scolarite != '' && strstr($infos["dn"],$this->chaine_dn_statut_scolarite)) {
- $infos["statut"] = "scolarite";
- } else if ($this->chaine_dn_statut_cpe != '' && strstr($infos["dn"],$this->chaine_dn_statut_cpe)) {
- $infos["statut"] = "cpe";
- }
- }
- if (!isset($info["statut"]) || !in_array($infos["statut"], array("administrateur","professeur","eleve","responsable","scolarite","cpe"))) {
+ # La détermination du statut est la manipulation la plus délicate.
+ # On dispose de deux moyens : un champ du LDAP (le plus simple...)
+ # ou bien une chaîne à tester sur le DN.
+ if ($this->champ_statut != null) {
+ // Le champ statut est défini, alors on teste
+ if (array_key_exists($this->champ_statut, $user[0])) {
+ if (in_array($user[0][$this->champ_statut][0], array("administrateur", "professeur", "eleve", "responsable", "scolarite", "cpe"))) {
+ $infos["statut"] = $user[0][$this->champ_statut][0];
+ }
+ }
+ } else {
+ // Si on est là, ce qu'on va essayer de tester avec des chaînes de caractères sur le DN
+ // En raison du risque d'erreur en cas de mauvaise configuration, on ne teste pas
+ // le statut administrateur.
+ if ($this->chaine_dn_statut_professeur != '' && strstr($infos["dn"], $this->chaine_dn_statut_professeur)) {
+ $infos["statut"] = "professeur";
+ } else if ($this->chaine_dn_statut_eleve != '' && strstr($infos["dn"], $this->chaine_dn_statut_eleve)) {
+ $infos["statut"] = "eleve";
+ } else if ($this->chaine_dn_statut_responsable != '' && strstr($infos["dn"], $this->chaine_dn_statut_responsable)) {
+ $infos["statut"] = "responsable";
+ } else if ($this->chaine_dn_statut_scolarite != '' && strstr($infos["dn"], $this->chaine_dn_statut_scolarite)) {
+ $infos["statut"] = "scolarite";
+ } else if ($this->chaine_dn_statut_cpe != '' && strstr($infos["dn"], $this->chaine_dn_statut_cpe)) {
+ $infos["statut"] = "cpe";
+ }
+ }
+ if (!isset($info["statut"]) || !in_array($infos["statut"], array("administrateur", "professeur", "eleve", "responsable", "scolarite", "cpe"))) {
$infos["statut"] = getSettingValue("statut_utilisateur_defaut");
}
- return $infos;
- } else {
- return false;
- }
+ return $infos;
+ } else {
+ return false;
+ }
}
/* Permet de récupérer tou sles utilisateurs du LDAP en fonction d'un paramètre
* retourne la liste des utilisateurs
*/
- public function get_all_users($type, $param){
+ public function get_all_users($type, $param) {
// On laisse la possibilité d'ajouter des lignes dans le code
if ($type == 'rne') {
// On utilise le rne de l'établissement pour récupérer les utilisateurs
- $filter = '('.$this->champ_rne.'='.$param.')';
- $sr = ldap_search($this->ds, $this->get_dn(), $filter) ;
+ $filter = '(' . $this->champ_rne . '=' . $param . ')';
+ $sr = ldap_search($this->ds, $this->get_dn(), $filter);
return ldap_get_entries($this->ds, $sr);
- }else{
+ } else {
return false;
}
}
@@ -218,8 +219,8 @@ public function get_all_users($type, $param){
/*
* renvoie le dn de recherche dans le ldap
*/
- private function get_dn(){
- return $this->people_ou.",".$this->base_dn;
+ private function get_dn() {
+ return $this->people_ou . "," . $this->base_dn;
}
@@ -234,7 +235,7 @@ public function add_user($_login, $_nom, $_prenom, $_email, $_civilite, $_passwo
exit;
} else {
# L'utilisateur n'existe pas, on formate les données, et on le créé.
- $dn = $this->champ_login."=".$_login.",".$this->people_ou.",".$this->base_dn;
+ $dn = $this->champ_login . "=" . $_login . "," . $this->people_ou . "," . $this->base_dn;
$donnees = $this->format_user_data($_login, $_nom, $_prenom, $_email, $_civilite, $_password, $_statut);
$add = ldap_add($this->ds, $dn, $donnees);
return $add;
@@ -252,7 +253,7 @@ public function update_user($_login, $_nom, $_prenom, $_email, $_civilite, $_pas
exit;
} else {
# L'utilisateur existe, on formate les données, et on modifie l'annuaire.
- $dn = $this->champ_login."=".$_login.",".$this->people_ou.",".$this->base_dn;
+ $dn = $this->champ_login . "=" . $_login . "," . $this->people_ou . "," . $this->base_dn;
$donnees = $this->format_user_data($_login, $_nom, $_prenom, $_email, $_civilite, $_password, $_statut);
$modify = ldap_modify($this->ds, $dn, $donnees);
return $modify;
@@ -268,7 +269,7 @@ public function delete_user($_login) {
exit;
} else {
# L'utilisateur existe, on supprime.
- $dn = $this->champ_login."=".$_login.",".$this->people_ou.",".$this->base_dn;
+ $dn = $this->champ_login . "=" . $_login . "," . $this->people_ou . "," . $this->base_dn;
$delete = ldap_delete($this->ds, $dn);
return $delete;
}
@@ -283,33 +284,33 @@ public function set_manual_password($_login, $_password) {
return $update;
}
- public static function connect_ldap($_adresse,$_port,$_login,$_password) {
+ public static function connect_ldap($_adresse, $_port, $_login, $_password) {
# Pour avoir du débug en log serveur, décommenter la ligne suivante.
#ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
- $ds = ldap_connect($_adresse, $_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 ($_login != '') {
- // On tente un bind
- $b = ldap_bind($ds, $_login, $_password);
- } else {
- // Accès anonyme
- $b = ldap_bind($ds);
- }
- if ($b) {
- return $ds;
- } else {
- return false;
- }
- } else {
- return false;
- }
+ $ds = ldap_connect($_adresse, $_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 ($_login != '') {
+ // On tente un bind
+ $b = ldap_bind($ds, $_login, $_password);
+ } else {
+ // Accès anonyme
+ $b = ldap_bind($ds);
+ }
+ if ($b) {
+ return $ds;
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
}
public static function is_setup() {
- return file_exists(dirname(__FILE__)."/../".self::config_file);
+ return file_exists(dirname(__FILE__) . "/../" . self::config_file);
}
# On récupère les données de configuration présentes dans le fichier
@@ -317,12 +318,12 @@ public static function is_setup() {
private function load_config() {
$ldap_config = array();
if (self::is_setup()) {
- $path = dirname(__FILE__)."/../".self::config_file;
+ $path = dirname(__FILE__) . "/../" . self::config_file;
include($path);
$available_settings = get_object_vars($this);
- foreach($available_settings as $key => $value) {
- $varname = "ldap_".$key;
+ foreach ($available_settings as $key => $value) {
+ $varname = "ldap_" . $key;
if (isset($$varname)) {
$this->$key = $$varname;
}
@@ -333,25 +334,25 @@ private function load_config() {
# Encodage d'un mot de passe utilisateur pour l'enregistrer
# Ce code a été pris de phpLdapPasswd, par Karyl F. Stein
# voir : http://www.karylstein.com/phpLdapPasswd
- private function encode_password ($password = '', $encoding = '') {
+ private function encode_password($password = '', $encoding = '') {
if ($encoding == '') $encoding = $this->password_encryption;
if (strcasecmp($encoding, "clear") == 0) {
$encodedpass = $password;
} elseif (strcasecmp($encoding, "crypt") == 0) {
- $encodedpass = "{CRYPT}".crypt($password);
+ $encodedpass = "{CRYPT}" . crypt($password);
} elseif (strcasecmp($encoding, "md5") == 0) {
- $encodedpass = "{MD5}".base64_encode(pack("H*",md5($password)));
+ $encodedpass = "{MD5}" . base64_encode(pack("H*", md5($password)));
} elseif (strcasecmp($encoding, "ssha") == 0) {
- mt_srand((double)microtime()*1000000);
+ mt_srand((double)microtime() * 1000000);
$salt = mhash_keygen_s2k(MHASH_SHA1, $password, mb_substr(pack('h*', md5(mt_rand())), 0, 8), 4);
- $encodedpass = "{SSHA}".base64_encode(mhash(MHASH_SHA1, $password.$salt).$salt);
+ $encodedpass = "{SSHA}" . base64_encode(mhash(MHASH_SHA1, $password . $salt) . $salt);
} else {
return false;
exit;
}
- return($encodedpass);
+ return ($encodedpass);
}
# Cette méthode prend trois paramètres : nom, prénom, nom complet.
@@ -389,7 +390,7 @@ private function format_name($_prenom, $_nom, $_nom_complet) {
} elseif ($_prenom != '' and $_nom != '' and $_nom_complet == '') {
$result['prenom'] = $_prenom;
$result['nom'] = $_nom;
- $result['nom_complet'] = $_prenom." ".$_nom;
+ $result['nom_complet'] = $_prenom . " " . $_nom;
} elseif ($_prenom != '' and $_nom != '' and $_nom_complet != '') {
$result['prenom'] = $_prenom;
$result['nom'] = $_nom;
@@ -427,20 +428,20 @@ private function format_user_data($_login, $_nom, $_prenom, $_email, $_civilite,
// La civilité
if ($_civilite != '' and $this->champ_civilite != '') {
- switch ($_civilite) {
- case "Mme":
- $data[$this->champ_civilite] = $this->code_civilite_madame;
- break;
- case "Mlle":
- $data[$this->champ_civilite] = $this->code_civilite_mademoiselle;
- break;
- case "M.":
- $data[$this->champ_civilite] = $this->code_civilite_monsieur;
- break;
- default:
- $data[$this->champ_civilite] = $this->code_civilite_madame;
- break;
- }
+ switch ($_civilite) {
+ case "Mme":
+ $data[$this->champ_civilite] = $this->code_civilite_madame;
+ break;
+ case "Mlle":
+ $data[$this->champ_civilite] = $this->code_civilite_mademoiselle;
+ break;
+ case "M.":
+ $data[$this->champ_civilite] = $this->code_civilite_monsieur;
+ break;
+ default:
+ $data[$this->champ_civilite] = $this->code_civilite_madame;
+ break;
+ }
}
// Le mot de passe
@@ -457,4 +458,5 @@ private function format_user_data($_login, $_nom, $_prenom, $_email, $_civilite,
}
}
+
?>
From bd6af2cea1ec4ed23c8b7989ec62ed4e3f7351b2 Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 13:50:51 +0200
Subject: [PATCH 08/63] lib/LDAPServer.class.php: suppression de code non
atteignable
---
lib/LDAPServer.class.php | 4 ----
1 file changed, 4 deletions(-)
diff --git a/lib/LDAPServer.class.php b/lib/LDAPServer.class.php
index f6b28f1824..63abbdbd95 100755
--- a/lib/LDAPServer.class.php
+++ b/lib/LDAPServer.class.php
@@ -232,7 +232,6 @@ public function add_user($_login, $_nom, $_prenom, $_email, $_civilite, $_passwo
# une autre méthode.
if ($this->test_user($_login)) {
return false;
- exit;
} else {
# L'utilisateur n'existe pas, on formate les données, et on le créé.
$dn = $this->champ_login . "=" . $_login . "," . $this->people_ou . "," . $this->base_dn;
@@ -250,7 +249,6 @@ public function update_user($_login, $_nom, $_prenom, $_email, $_civilite, $_pas
# une autre méthode.
if (!$this->test_user($_login)) {
return false;
- exit;
} else {
# L'utilisateur existe, on formate les données, et on modifie l'annuaire.
$dn = $this->champ_login . "=" . $_login . "," . $this->people_ou . "," . $this->base_dn;
@@ -266,7 +264,6 @@ public function delete_user($_login) {
# Si l'utilisateur n'existe pas, on arrête tout de suite.
if (!$this->test_user($_login)) {
return true;
- exit;
} else {
# L'utilisateur existe, on supprime.
$dn = $this->champ_login . "=" . $_login . "," . $this->people_ou . "," . $this->base_dn;
@@ -349,7 +346,6 @@ private function encode_password($password = '', $encoding = '') {
$encodedpass = "{SSHA}" . base64_encode(mhash(MHASH_SHA1, $password . $salt) . $salt);
} else {
return false;
- exit;
}
return ($encodedpass);
From eb9ea724fd2237d34a1c9edf926a7d5157d75e37 Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 13:55:05 +0200
Subject: [PATCH 09/63] lib/Session.class.php: suppression de code non
atteignable
---
lib/Session.class.php | 24 ------------------------
1 file changed, 24 deletions(-)
diff --git a/lib/Session.class.php b/lib/Session.class.php
index 163e7a6862..2a8a0146b4 100755
--- a/lib/Session.class.php
+++ b/lib/Session.class.php
@@ -379,11 +379,9 @@ public function authenticate($_login = null, $_password = null) {
} else {
return "8";
- exit();
}
} else {
return "8";
- exit();
}
}
}
@@ -394,7 +392,6 @@ public function authenticate($_login = null, $_password = null) {
if ($this->account_is_locked()) {
$this->reset(2);
return "2";
- exit();
}
# On charge les données de l'utilisateur
@@ -413,7 +410,6 @@ public function authenticate($_login = null, $_password = null) {
}
if (!$load) {
return "6";
- exit();
} else {
# Si l'import a réussi, on tente à nouveau de charger
# les données de l'utilisateur.
@@ -425,7 +421,6 @@ public function authenticate($_login = null, $_password = null) {
if ($this->etat != "actif") {
$this->reset(2);
return "4";
- exit();
}
# On vérifie que les connexions sont bien activées.
@@ -433,7 +428,6 @@ public function authenticate($_login = null, $_password = null) {
if ($this->statut != "administrateur" && ($disable_login == "yes" || $disable_login == "soft")) {
$this->reset(2);
return "7";
- exit();
}
# On teste la cohérence de mode de connexion
@@ -445,7 +439,6 @@ public function authenticate($_login = null, $_password = null) {
if ($this->current_auth_mode != 'simpleSAML' && $auth_mode != $this->current_auth_mode) {
$this->reset(2);
return "5";
- exit;
}
}
@@ -471,7 +464,6 @@ public function authenticate($_login = null, $_password = null) {
# On envoie un mail, si l'option a été activée
mail_connexion();
return "1";
- exit();
} else {
// L'authentification a échoué.
// On nettoie la session.
@@ -483,7 +475,6 @@ public function authenticate($_login = null, $_password = null) {
// d'attaque brute-force sur les logins.
if ($this->record_failed_login($_login)) {
return "2";
- exit();
}
// On retourne le code d'erreur générique
@@ -515,7 +506,6 @@ public function security_check() {
tentative_intrusion(1, "Accès à une page sans être logué (peut provenir d'un timeout de session).");
}
return "0";
- exit;
}
$sql = "SELECT statut, change_mdp, etat FROM utilisateurs where login = '" . $this->login . "'";
@@ -531,17 +521,14 @@ public function security_check() {
if (!$login_allowed && $this->statut != "administrateur") {
return "0";
- exit;
}
if (!$statut_ok) {
return "0";
- exit;
}
if (!$etat_ok) {
return "0";
- exit;
}
// Si on est là, ce que l'utilisateur a le droit de rester.
@@ -554,7 +541,6 @@ public function security_check() {
# Mieux vaut deux fois qu'une...
if ($statut_ok && $etat_ok && ($login_allowed || $this->statut == "administrateur")) {
return "1";
- exit;
}
}
@@ -564,7 +550,6 @@ public static function user_auth_mode($_login) {
global $mysqli;
if ($_login == null) {
return false;
- die();
}
$sql = "SELECT auth_mode FROM utilisateurs WHERE UPPER(login) = '" . mb_strtoupper($_login) . "'";
@@ -902,7 +887,6 @@ static function change_password_gepi($user_login, $password) {
private function authenticate_ldap($_login, $_password) {
if ($_login == null || $_password == null) {
return false;
- exit();
}
$ldap_server = new LDAPServer;
if ($ldap_server->authenticate_user($_login, $_password)) {
@@ -1126,7 +1110,6 @@ private function authenticate_lcs() {
$this->login = $login;
$this->current_auth_mode = "sso";
return true;
- exit;
} else {
// L'utilisateur n'a pas été identifié'
header("Location:" . LCS_PAGE_AUTHENTIF);
@@ -1141,7 +1124,6 @@ public function load_user_data() {
# Petit test de départ pour être sûr :
if (!$this->login || $this->login == null) {
return false;
- exit();
}
# Gestion du multisite : on a besoin du RNE de l'utilisateur.
@@ -1161,7 +1143,6 @@ public function load_user_data() {
# Est-ce qu'on a bien une entrée ?
if ($query->num_rows != "1") {
return false;
- exit();
}
$sql = "SELECT id_matiere FROM j_professeurs_matieres WHERE (id_professeur = '" . $this->login . "') ORDER BY ordre_matieres LIMIT 1";
$matiere_principale = sql_query1($sql);
@@ -1172,7 +1153,6 @@ public function load_user_data() {
# Est-ce qu'on a bien une entrée ?
if (mysqli_num_rows($query) != "1") {
return false;
- exit();
}
$sql = "SELECT id_matiere FROM j_professeurs_matieres WHERE (id_professeur = '" . $this->login . "') ORDER BY ordre_matieres LIMIT 1";
@@ -1351,7 +1331,6 @@ private function import_user_profile() {
# L'import d'un utilisateur ne peut se faire qu'à partir d'un LDAP
if (!LDAPServer::is_setup()) {
return false;
- die();
} else {
# Le serveur LDAP est configuré, on y va.
# Encore un dernier petit test quand même : est-ce que l'utilisateur
@@ -1362,7 +1341,6 @@ private function import_user_profile() {
if ($resultat->num_rows != "0") {
$resultat->close();
return false;
- die();
}
$resultat->close();
@@ -1403,7 +1381,6 @@ private function import_user_profile_from_scribe() {
# L'import d'un utilisateur ne peut se faire qu'à partir d'un LDAP de Scribe, ici.
if (!LDAPServer::is_setup()) {
return false;
- die();
} else {
// config_cas.inc.php est le fichier d'informations de connexions au serveur cas
@@ -1418,7 +1395,6 @@ private function import_user_profile_from_scribe() {
if ($resultat->num_rows != "0") {
$resultat->close();
return false;
- die();
}
$resultat->close();
From db06b00d6b067fd8d0f14dfd77b371f2d7fcec6b Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 13:55:21 +0200
Subject: [PATCH 10/63] lib/Session.class.php: suppression du tag de fermeture
php inutile
---
lib/Session.class.php | 2 --
1 file changed, 2 deletions(-)
diff --git a/lib/Session.class.php b/lib/Session.class.php
index 2a8a0146b4..44d1e1b991 100755
--- a/lib/Session.class.php
+++ b/lib/Session.class.php
@@ -1726,5 +1726,3 @@ static private function debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, $
}
}
}
-
-?>
From 520aa88ab6dee8fb31b1003e87f03bd54f4030e8 Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 13:56:03 +0200
Subject: [PATCH 11/63] lib/Session.class.php: update_timezone: ajout du tag
throw
---
lib/Session.class.php | 3 +++
1 file changed, 3 insertions(+)
diff --git a/lib/Session.class.php b/lib/Session.class.php
index 44d1e1b991..4d4069e357 100755
--- a/lib/Session.class.php
+++ b/lib/Session.class.php
@@ -1679,6 +1679,9 @@ private function update_user_with_cas_attributes() {
# particulier.
# Le fuseau horaire est simplement paramétré dans connect.inc.php,
# en assignant $timezone.
+ /**
+ * @throws \Exception
+ */
private function update_timezone($_timezone) {
# Mise à jour du fuseau horaire pour PHP
From 160be4c6812b95c9784cf790e339d1d0792964c1 Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 13:56:42 +0200
Subject: [PATCH 12/63] =?UTF-8?q?lib/Session.class.php:=20commentaire=20de?=
=?UTF-8?q?=20code=20non=20utilis=C3=A9=20pour=20le=20moment?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
lib/Session.class.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/Session.class.php b/lib/Session.class.php
index 4d4069e357..4aa8b40a64 100755
--- a/lib/Session.class.php
+++ b/lib/Session.class.php
@@ -1591,7 +1591,7 @@ private function import_user_profile_from_scribe() {
}
}
- } elseif ($user['statut'] == 'professeur') {
+ //} elseif ($user['statut'] == 'professeur') {
// Rien de spécial à ce stade.
} else {
From 6d5dc7d4ca507d4353d701bf21810503cc7abb39 Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 13:57:45 +0200
Subject: [PATCH 13/63] lib/Session.class.php: authenticate_gepi: inversion de
la condition
---
lib/Session.class.php | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/lib/Session.class.php b/lib/Session.class.php
index 4aa8b40a64..27d6479711 100755
--- a/lib/Session.class.php
+++ b/lib/Session.class.php
@@ -809,8 +809,7 @@ function authenticate_gepi($_login, $_password) {
# Un compte existe avec ce login
if ($db_salt == '') {
//on va tester avec le md5
- if ($db_password == md5($_password)) {
- } else {
+ if ($db_password != md5($_password)) {
$this->debug_login_mdp($debug_test_mdp, $debug_test_mdp_file, 'Recu: ' . $_password . "\n");
$tmp_mdp = array_flip(get_html_translation_table(HTML_ENTITIES));
$_password_unhtmlentities = strtr($_password, $tmp_mdp);
From bdc8b6d9cc5c52a19dc4ce01c9519b17341399e1 Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 13:58:41 +0200
Subject: [PATCH 14/63] lib/Session.class.php: security_check: simplification
des conditions
---
lib/Session.class.php | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/lib/Session.class.php b/lib/Session.class.php
index 27d6479711..7ba7e49b83 100755
--- a/lib/Session.class.php
+++ b/lib/Session.class.php
@@ -514,10 +514,10 @@ public function security_check() {
$result = mysqli_query($mysqli, $sql);
$row = $result->fetch_object();
- $change_password = $row->change_mdp != "n" ? true : false;
- $statut_ok = $this->statut == $row->statut ? true : false;
- $etat_ok = $row->etat == "actif" ? true : false;
- $login_allowed = getSettingValue("disable_login") == "yes" ? false : true;
+ $change_password = $row->change_mdp != "n";
+ $statut_ok = $this->statut == $row->statut;
+ $etat_ok = $row->etat == "actif";
+ $login_allowed = !(getSettingValue("disable_login") == "yes");
if (!$login_allowed && $this->statut != "administrateur") {
return "0";
From 1484aec3817d2b89a28ba10a44923a45e577be3d Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 14:00:26 +0200
Subject: [PATCH 15/63] lib/Session.class.php: security_check: typo fix
---
lib/Session.class.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/Session.class.php b/lib/Session.class.php
index 7ba7e49b83..a7f7190fa1 100755
--- a/lib/Session.class.php
+++ b/lib/Session.class.php
@@ -531,7 +531,7 @@ public function security_check() {
return "0";
}
- // Si on est là, ce que l'utilisateur a le droit de rester.
+ // Si on est là, c'est que l'utilisateur a le droit de rester.
if ($change_password &&
($this->current_auth_mode == "gepi" || $this->current_auth_mode == "simpleSAML" || getSettingValue("ldap_write_access") == "yes")) {
From 5b7c08bb2bd1c0b76b131304abab43b01ad94652 Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 14:02:02 +0200
Subject: [PATCH 16/63] =?UTF-8?q?lib/Session.class.php:=20security=5Fcheck?=
=?UTF-8?q?:=20$statut-ok=20et=20$etat=5Fok=20sont=20toujours=20=C3=A9gale?=
=?UTF-8?q?s=20=C3=A0=20true=20=C3=A0=20ce=20point=20l=C3=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
lib/Session.class.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/Session.class.php b/lib/Session.class.php
index a7f7190fa1..984b599943 100755
--- a/lib/Session.class.php
+++ b/lib/Session.class.php
@@ -539,7 +539,7 @@ public function security_check() {
}
# Mieux vaut deux fois qu'une...
- if ($statut_ok && $etat_ok && ($login_allowed || $this->statut == "administrateur")) {
+ if ($login_allowed || $this->statut == "administrateur") {
return "1";
}
}
From 3352c07e4ba871a39a11e18b6ac3c272ecfcadfa Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 14:02:52 +0200
Subject: [PATCH 17/63] =?UTF-8?q?lib/microtime=5Ftemplate.php:=20suppressi?=
=?UTF-8?q?on=20tag=20non=20n=C3=A9cessaire?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
lib/microtime_template.php | 1 -
1 file changed, 1 deletion(-)
diff --git a/lib/microtime_template.php b/lib/microtime_template.php
index 5beb1460b3..6d2787a65b 100755
--- a/lib/microtime_template.php
+++ b/lib/microtime_template.php
@@ -13,4 +13,3 @@
$pageload_time = $pageload_endtime - $pageload_starttime;
$tbs_microtime=$pageload_time;
}
-?>
From 47bba46ec3e6bd5d87e65916c0e908d95dab5d9a Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 14:03:36 +0200
Subject: [PATCH 18/63] lib/Session.class.php: ajout du copyright
---
lib/Session.class.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/Session.class.php b/lib/Session.class.php
index 984b599943..b60328c433 100755
--- a/lib/Session.class.php
+++ b/lib/Session.class.php
@@ -1,7 +1,7 @@
Date: Wed, 2 Jun 2021 14:04:25 +0200
Subject: [PATCH 19/63] lib/mincals_absences.inc.php: uniformisation
---
lib/mincals_absences.inc | 348 ++++++++++++++++++---------------------
1 file changed, 162 insertions(+), 186 deletions(-)
diff --git a/lib/mincals_absences.inc b/lib/mincals_absences.inc
index e29b43b4d9..dda745f6ca 100755
--- a/lib/mincals_absences.inc
+++ b/lib/mincals_absences.inc
@@ -1,192 +1,168 @@
day = $day;
- $this->month = $month;
- $this->year = $year;
- $this->h = $h;
- $this->id_classe = $id_classe;
- $this->type = $type;
- $this->dmy = $dmy;
- }
-
-
- function getCalendarLink($month, $year, $id_classe, $type)
- {
- $day=1;
- if ($this->dmy=='gestion_absences') return $this->dmy.".php?year=$year&month=$month&day=$day&id_classe=$id_classe&type=$type";
- }
-
- function getDateLink($day, $month, $year) {
- global $vocab;
- if ($this->dmy=='gestion_absences') return "id_classe."&type=".$this->type;
-
-
- }
-
-
- function getDaysInMonth($month, $year)
- {
- if ($month < 1 || $month > 12)
- {
- return 0;
- }
-
- $days = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
-
- $d = $days[$month - 1];
-
- if ($month == 2)
- {
- // Check for leap year
- // Forget the 4000 rule, I doubt I'll be around then...
-
- if ($year%4 == 0)
- {
- if ($year%100 == 0)
- {
- if ($year%400 == 0)
- {
- $d = 29;
- }
- }
- else
- {
- $d = 29;
- }
- }
- }
-
- return $d;
- }
-
- function getFirstDays()
- {
- global $weekstarts;
-
- $basetime = mktime(12,0,0,6,11+$weekstarts,2000);
- for ($i = 0, $s = ""; $i < 7; $i++)
- {
- $show = $basetime + ($i * 24 * 60 * 60);
- $fl = strftime('%a',$show);
- $s .= "\n";
- }
- return $s;
- }
-
- function getHTML()
- {
- global $weekstarts;
- global $vocab;
- if (!isset($weekstarts)) $weekstarts = 0;
- $s = "";
-
- $daysInMonth = $this->getDaysInMonth($this->month, $this->year);
- $date = mktime(12, 0, 0, $this->month, 1, $this->year);
-
- $first = (strftime("%w",$date) + 7 - $weekstarts) % 7;
- $monthName = strftime("%B",$date);
-
- $prevMonth = $this->getCalendarLink($this->month - 1 > 0 ? $this->month - 1 : 12, $this->month - 1 > 0 ? $this->year : $this->year - 1, $this->id_classe, $this->type);
- $nextMonth = $this->getCalendarLink($this->month + 1 <= 12 ? $this->month + 1 : 1, $this->month + 1 <= 12 ? $this->year : $this->year + 1, $this->id_classe, $this->type);
-
- $s .= "\n";
- $s .= " | \n";
- $s .= "\n";
- $s .= "\n";
- $s .= "\n";
- $s .= "
\n";
-
- $s .= " | \n";
- $s .= $this->getFirstDays();
- $s .= "
\n";
-
- $d = 1 - $first;
- $temp = 1;
- $numweek=1;
- while ($d <= $daysInMonth)
- {
- $s .= "";
- if ($this->dmy!='gestion_absences') {
- $s .="year&month=$this->month&day=$temp&id_classe=$this->id_classe&type=$this->type\">s".$numweek."";
- $temp=$temp+7;
- $numweek++;
- }
- $s .= " | \n";
- for ($i = 0; $i < 7; $i++)
- {
- $s .= "";
- if ($d > 0 && $d <= $daysInMonth)
- {
- $link = $this->getDateLink($d, $this->month, $this->year);
- if ($link == "")
- $s .= $d;
- elseif (($d == $this->day) and ($this->h))
- $s .= $link.">$d";
- else
- $s .= $link.">$d";
- }
- else
- {
- $s .= " ";
- }
- $s .= " | \n";
- $d++;
- }
- $s .= "
\n";
- }
-
- $s .= "
\n";
-
- return $s;
- }
-}
-
-$thismonth = mktime(0, 0, 0, $month, $day, $year);
-
-
-
-
-$cal = new Calendar(date("d",$thismonth), date("m",$thismonth), date("Y",$thismonth), 1, $id_classe, $type, $dmy);
-echo $cal->getHTML();
+ // PHP Calendar Class
+ //
+ // Copyright David Wilkinson 2000. All Rights reserved.
+ //
+ // This software may be used, modified and distributed freely
+ // providing this copyright notice remains intact at the head
+ // of the file.
+ //
+ // This software is freeware. The author accepts no liability for
+ // any loss or damages whatsoever incurred directly or indirectly
+ // from the use of this script.
+ //
+ // URL: http://www.cascade.org.uk/software/php/calendar/
+ // Email: davidw@cascade.org.uk
+
+ class Calendar {
+ var $month;
+ var $year;
+ var $day;
+ var $h;
+ var $id_classe;
+ var $type;
+ var $dmy;
+
+ function Calendar($day, $month, $year, $h, $id_classe, $type, $dmy) {
+ $this->day = $day;
+ $this->month = $month;
+ $this->year = $year;
+ $this->h = $h;
+ $this->id_classe = $id_classe;
+ $this->type = $type;
+ $this->dmy = $dmy;
+ }
+
+
+ function getCalendarLink($month, $year, $id_classe, $type) {
+ $day = 1;
+ if ($this->dmy == 'gestion_absences') return $this->dmy . ".php?year=$year&month=$month&day=$day&id_classe=$id_classe&type=$type";
+ }
+
+ function getDateLink($day, $month, $year) {
+ global $vocab;
+ if ($this->dmy == 'gestion_absences') return "id_classe . "&type=" . $this->type;
+
+
+ }
+
+
+ function getDaysInMonth($month, $year) {
+ if ($month < 1 || $month > 12) {
+ return 0;
+ }
+
+ $days = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
+
+ $d = $days[$month - 1];
+
+ if ($month == 2) {
+ // Check for leap year
+ // Forget the 4000 rule, I doubt I'll be around then...
+
+ if ($year % 4 == 0) {
+ if ($year % 100 == 0) {
+ if ($year % 400 == 0) {
+ $d = 29;
+ }
+ } else {
+ $d = 29;
+ }
+ }
+ }
+
+ return $d;
+ }
+
+ function getFirstDays() {
+ global $weekstarts;
+
+ $basetime = mktime(12, 0, 0, 6, 11 + $weekstarts, 2000);
+ for ($i = 0, $s = ""; $i < 7; $i++) {
+ $show = $basetime + ($i * 24 * 60 * 60);
+ $fl = strftime('%a', $show);
+ $s .= "\n";
+ }
+ return $s;
+ }
+
+ function getHTML() {
+ global $weekstarts;
+ global $vocab;
+ if (!isset($weekstarts)) $weekstarts = 0;
+ $s = "";
+
+ $daysInMonth = $this->getDaysInMonth($this->month, $this->year);
+ $date = mktime(12, 0, 0, $this->month, 1, $this->year);
+
+ $first = (strftime("%w", $date) + 7 - $weekstarts) % 7;
+ $monthName = strftime("%B", $date);
+
+ $prevMonth = $this->getCalendarLink($this->month - 1 > 0 ? $this->month - 1 : 12, $this->month - 1 > 0 ? $this->year : $this->year - 1, $this->id_classe, $this->type);
+ $nextMonth = $this->getCalendarLink($this->month + 1 <= 12 ? $this->month + 1 : 1, $this->month + 1 <= 12 ? $this->year : $this->year + 1, $this->id_classe, $this->type);
+
+ $s .= "\n";
+ $s .= " | \n";
+ $s .= "\n";
+ $s .= "\n";
+ $s .= "\n";
+ $s .= "
\n";
+
+ $s .= " | \n";
+ $s .= $this->getFirstDays();
+ $s .= "
\n";
+
+ $d = 1 - $first;
+ $temp = 1;
+ $numweek = 1;
+ while ($d <= $daysInMonth) {
+ $s .= "";
+ if ($this->dmy != 'gestion_absences') {
+ $s .= "year&month=$this->month&day=$temp&id_classe=$this->id_classe&type=$this->type\">s" . $numweek . "";
+ $temp = $temp + 7;
+ $numweek++;
+ }
+ $s .= " | \n";
+ for ($i = 0; $i < 7; $i++) {
+ $s .= "";
+ if ($d > 0 && $d <= $daysInMonth) {
+ $link = $this->getDateLink($d, $this->month, $this->year);
+ if ($link == "")
+ $s .= $d;
+ elseif (($d == $this->day) and ($this->h))
+ $s .= $link . ">$d";
+ else
+ $s .= $link . ">$d";
+ } else {
+ $s .= " ";
+ }
+ $s .= " | \n";
+ $d++;
+ }
+ $s .= "
\n";
+ }
+
+ $s .= "
\n";
+
+ return $s;
+ }
+ }
+
+ $thismonth = mktime(0, 0, 0, $month, $day, $year);
+
+
+ $cal = new Calendar(date("d", $thismonth), date("m", $thismonth), date("Y", $thismonth), 1, $id_classe, $type, $dmy);
+ echo $cal->getHTML();
}
-?>
-
From 1d20048f756d2144ecf8eb71a488a6a519f47732 Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 14:06:54 +0200
Subject: [PATCH 20/63] =?UTF-8?q?lib/mincals=5Fabsences.inc.php:=20uniform?=
=?UTF-8?q?isation=20+=20ajotu=20date=20derni=C3=A8res=20modifications?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
lib/mincals_absences.inc | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/lib/mincals_absences.inc b/lib/mincals_absences.inc
index dda745f6ca..1845698ca8 100755
--- a/lib/mincals_absences.inc
+++ b/lib/mincals_absences.inc
@@ -1,5 +1,9 @@
dmy = $dmy;
}
-
function getCalendarLink($month, $year, $id_classe, $type) {
$day = 1;
- if ($this->dmy == 'gestion_absences') return $this->dmy . ".php?year=$year&month=$month&day=$day&id_classe=$id_classe&type=$type";
+ if ($this->dmy == 'gestion_absences')return $this->dmy . ".php?year=$year&month=$month&day=$day&id_classe=$id_classe&type=$type";
}
function getDateLink($day, $month, $year) {
global $vocab;
if ($this->dmy == 'gestion_absences') return "id_classe . "&type=" . $this->type;
-
-
}
-
function getDaysInMonth($month, $year) {
if ($month < 1 || $month > 12) {
return 0;
From f00834b13475d01f574859fd7a5020898c17892d Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 14:07:38 +0200
Subject: [PATCH 21/63] lib/mincals_absences.inc.php: utilisation du "nouveau
style" de constructeur
---
lib/mincals_absences.inc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/mincals_absences.inc b/lib/mincals_absences.inc
index 1845698ca8..7c0b2abc9c 100755
--- a/lib/mincals_absences.inc
+++ b/lib/mincals_absences.inc
@@ -30,7 +30,7 @@ function minicals($year, $month, $day, $id_classe, $type, $dmy) {
var $type;
var $dmy;
- function Calendar($day, $month, $year, $h, $id_classe, $type, $dmy) {
+ function __construct($day, $month, $year, $h, $id_classe, $type, $dmy) {
$this->day = $day;
$this->month = $month;
$this->year = $year;
From 867c512d8b62f88ce45c3bab17806e326eb29f0e Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 14:08:23 +0200
Subject: [PATCH 22/63] lib/periodes.inc.php: uniformisation
---
lib/periodes.inc.php | 30 ++++++++++++++----------------
1 file changed, 14 insertions(+), 16 deletions(-)
diff --git a/lib/periodes.inc.php b/lib/periodes.inc.php
index 2d353f2785..ccc517d8d2 100755
--- a/lib/periodes.inc.php
+++ b/lib/periodes.inc.php
@@ -1,7 +1,7 @@
0) {
- if ((isset($id_classe))&&($id_classe > 0)) {
+ if ((isset($id_classe)) && ($id_classe > 0)) {
$_id_classe = $id_classe;
- } elseif(isset($current_group["classes"]["list"][0])) {
+ } elseif (isset($current_group["classes"]["list"][0])) {
$_id_classe = $current_group["classes"]["list"][0];
}
- if(isset($_id_classe)) {
- if(!is_array($_id_classe)) {
+ if (isset($_id_classe)) {
+ if (!is_array($_id_classe)) {
$periode_query = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM periodes WHERE id_classe = '$_id_classe' ORDER BY num_periode");
+ } else {
+ $periode_query = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM periodes WHERE id_classe = '" . $_id_classe[0] . "' ORDER BY num_periode");
}
- else {
- $periode_query = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM periodes WHERE id_classe = '".$_id_classe[0]."' ORDER BY num_periode");
- }
- $nb_periode = mysqli_num_rows($periode_query) + 1 ;
+ $nb_periode = mysqli_num_rows($periode_query) + 1;
$i = "1";
while ($i < $nb_periode) {
- $nom_periode[$i] = old_mysql_result($periode_query, $i-1, "nom_periode");
- $ver_periode[$i] = old_mysql_result($periode_query, $i-1, "verouiller");
- $date_ver_periode[$i] = old_mysql_result($periode_query, $i-1, "date_verrouillage");
- $date_fin_periode[$i] = old_mysql_result($periode_query, $i-1, "date_fin");
- $date_conseil_periode[$i] = old_mysql_result($periode_query, $i-1, "date_conseil_classe");
+ $nom_periode[$i] = old_mysql_result($periode_query, $i - 1, "nom_periode");
+ $ver_periode[$i] = old_mysql_result($periode_query, $i - 1, "verouiller");
+ $date_ver_periode[$i] = old_mysql_result($periode_query, $i - 1, "date_verrouillage");
+ $date_fin_periode[$i] = old_mysql_result($periode_query, $i - 1, "date_fin");
+ $date_conseil_periode[$i] = old_mysql_result($periode_query, $i - 1, "date_conseil_classe");
$i++;
}
}
}
-?>
From 22de866afad7ab9c06958f7b44cec0287d901e18 Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 16:15:47 +0200
Subject: [PATCH 23/63] =?UTF-8?q?classes/classes=5Fajout.php:=20-=20unifor?=
=?UTF-8?q?misation=20-=20js:=20utilisation=20de=20'let'=20=C3=A0=20la=20p?=
=?UTF-8?q?lace=20de=20'var'?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
classes/classes_ajout.php | 705 +++++++++++++++++++-------------------
1 file changed, 359 insertions(+), 346 deletions(-)
diff --git a/classes/classes_ajout.php b/classes/classes_ajout.php
index 76365c5a62..1f63a1316b 100755
--- a/classes/classes_ajout.php
+++ b/classes/classes_ajout.php
@@ -1,7 +1,7 @@
\n";
die();
}
@@ -72,7 +71,7 @@
check_token();
//$gepiProfSuivi=getSettingValue("gepi_prof_suivi");
- $gepiProfSuivi=ucfirst(retourne_denomination_pp($id_classe));
+ $gepiProfSuivi = ucfirst(retourne_denomination_pp($id_classe));
$call_eleves = mysqli_query($GLOBALS["mysqli"], "SELECT login, id_eleve FROM eleves ORDER BY nom, prenom;");
$nombreligne = mysqli_num_rows($call_eleves);
@@ -87,8 +86,8 @@
$reg_data = 'yes';
- $tab_ele_sans_cpe_defini=array();
- $tab_ele_sans_pp_defini=array();
+ $tab_ele_sans_cpe_defini = array();
+ $tab_ele_sans_pp_defini = array();
$k = '0';
while ($k < $nombreligne) {
@@ -97,77 +96,79 @@
$id_eleve = old_mysql_result($call_eleves, $k, 'id_eleve');
- if(isset($_POST['ajout_eleve_'.$id_eleve])) {
- $i=1;
+ if (isset($_POST['ajout_eleve_' . $id_eleve])) {
+ $i = 1;
while ($i < $nb_periode) {
- $tab_per_ajout_eleve=$_POST['ajout_eleve_'.$id_eleve];
- if(isset($tab_per_ajout_eleve[$i])) {
+ $tab_per_ajout_eleve = $_POST['ajout_eleve_' . $id_eleve];
+ if (isset($tab_per_ajout_eleve[$i])) {
// Contrôler que l'élève n'est pas déjà dans une autre classe
- $sql="SELECT id_classe FROM j_eleves_classes WHERE
+ $sql = "SELECT id_classe FROM j_eleves_classes WHERE
(login = '$login_eleve' and
id_classe!='$id_classe' and
periode = '$i')";
- $test_clas_per=mysqli_query($GLOBALS["mysqli"], $sql);
- if(mysqli_num_rows($test_clas_per)>0) {
- $lig_clas_per=mysqli_fetch_object($test_clas_per);
- $msg_complement.=get_nom_prenom_eleve($login_eleve)." est déjà dans une autre classe : ".get_class_from_id($lig_clas_per->id_classe)." en période $i
\n";
+ $test_clas_per = mysqli_query($GLOBALS["mysqli"], $sql);
+ if (mysqli_num_rows($test_clas_per) > 0) {
+ $lig_clas_per = mysqli_fetch_object($test_clas_per);
+ $msg_complement .= get_nom_prenom_eleve($login_eleve) . " est déjà dans une autre classe : " . get_class_from_id($lig_clas_per->id_classe) . " en période $i
\n";
$reg_ok = 'no';
- }
- else {
- $sql="SELECT login FROM j_eleves_classes WHERE
+ } else {
+ $sql = "SELECT login FROM j_eleves_classes WHERE
(login = '$login_eleve' and
id_classe = '$id_classe' and
periode = '$i')";
- $res_clas_per=mysqli_query($GLOBALS["mysqli"], $sql);
- if (mysqli_num_rows($res_clas_per)==0) {
- $sql="INSERT INTO j_eleves_classes VALUES('$login_eleve', '$id_classe', $i, '0');";
+ $res_clas_per = mysqli_query($GLOBALS["mysqli"], $sql);
+ if (mysqli_num_rows($res_clas_per) == 0) {
+ $sql = "INSERT INTO j_eleves_classes VALUES('$login_eleve', '$id_classe', $i, '0');";
$reg_data = mysqli_query($GLOBALS["mysqli"], $sql);
- if (!($reg_data)) {$reg_ok = 'no';}
- else {
+ if (!($reg_data)) {
+ $reg_ok = 'no';
+ } else {
// Ménage:
- $sql="SELECT id FROM infos_actions WHERE titre LIKE 'Ajout dans une classe % effectuer pour %($login_eleve)';";
- $res_actions=mysqli_query($GLOBALS["mysqli"], $sql);
- if(mysqli_num_rows($res_actions)>0) {
- while($lig_action=mysqli_fetch_object($res_actions)) {
- $menage=del_info_action($lig_action->id);
- if(!$menage) {$msg.="Erreur lors de la suppression de l'action en attente en page d'accueil à propos de $login_eleve
";}
+ $sql = "SELECT id FROM infos_actions WHERE titre LIKE 'Ajout dans une classe % effectuer pour %($login_eleve)';";
+ $res_actions = mysqli_query($GLOBALS["mysqli"], $sql);
+ if (mysqli_num_rows($res_actions) > 0) {
+ while ($lig_action = mysqli_fetch_object($res_actions)) {
+ $menage = del_info_action($lig_action->id);
+ if (!$menage) {
+ $msg .= "Erreur lors de la suppression de l'action en attente en page d'accueil à propos de $login_eleve
";
+ }
}
}
}
}
-
+
// UPDATE: Ajouter l'élève à tous les groupes pour la période:
- $sql="SELECT id_groupe FROM j_groupes_classes WHERE id_classe='$id_classe'";
- $res_liste_grp_classe=mysqli_query($GLOBALS["mysqli"], $sql);
- if(mysqli_num_rows($res_liste_grp_classe)>0){
- while($lig_tmp=mysqli_fetch_object($res_liste_grp_classe)){
- $sql="SELECT 1=1 FROM j_eleves_groupes WHERE login='$login_eleve' AND id_groupe='$lig_tmp->id_groupe' AND periode='$i'";
- $test=mysqli_query($GLOBALS["mysqli"], $sql);
- if(mysqli_num_rows($test)==0){
- $sql="INSERT INTO j_eleves_groupes SET login='$login_eleve',id_groupe='$lig_tmp->id_groupe',periode='$i'";
- $insert_grp=mysqli_query($GLOBALS["mysqli"], $sql);
- if (!$insert_grp) {$reg_ok = 'no';}
- else {
- $sql="SELECT DISTINCT code_modalite_elect FROM j_groupes_eleves_modalites WHERE id_groupe='".$lig_tmp->id_groupe."';";
- $test_grp_mod=mysqli_query($GLOBALS["mysqli"], $sql);
- if(mysqli_num_rows($test_grp_mod)==1) {
- $lig_grp_mod=mysqli_fetch_object($test_grp_mod);
-
- $sql="SELECT 1=1 FROM j_groupes_eleves_modalites WHERE login='".$login_eleve."' AND id_groupe='".$lig_tmp->id_groupe."';";
- $test_deja=mysqli_query($GLOBALS["mysqli"], $sql);
- if(mysqli_num_rows($test_deja)>0) {
+ $sql = "SELECT id_groupe FROM j_groupes_classes WHERE id_classe='$id_classe'";
+ $res_liste_grp_classe = mysqli_query($GLOBALS["mysqli"], $sql);
+ if (mysqli_num_rows($res_liste_grp_classe) > 0) {
+ while ($lig_tmp = mysqli_fetch_object($res_liste_grp_classe)) {
+ $sql = "SELECT 1=1 FROM j_eleves_groupes WHERE login='$login_eleve' AND id_groupe='$lig_tmp->id_groupe' AND periode='$i'";
+ $test = mysqli_query($GLOBALS["mysqli"], $sql);
+ if (mysqli_num_rows($test) == 0) {
+ $sql = "INSERT INTO j_eleves_groupes SET login='$login_eleve',id_groupe='$lig_tmp->id_groupe',periode='$i'";
+ $insert_grp = mysqli_query($GLOBALS["mysqli"], $sql);
+ if (!$insert_grp) {
+ $reg_ok = 'no';
+ } else {
+ $sql = "SELECT DISTINCT code_modalite_elect FROM j_groupes_eleves_modalites WHERE id_groupe='" . $lig_tmp->id_groupe . "';";
+ $test_grp_mod = mysqli_query($GLOBALS["mysqli"], $sql);
+ if (mysqli_num_rows($test_grp_mod) == 1) {
+ $lig_grp_mod = mysqli_fetch_object($test_grp_mod);
+
+ $sql = "SELECT 1=1 FROM j_groupes_eleves_modalites WHERE login='" . $login_eleve . "' AND id_groupe='" . $lig_tmp->id_groupe . "';";
+ $test_deja = mysqli_query($GLOBALS["mysqli"], $sql);
+ if (mysqli_num_rows($test_deja) > 0) {
// Ca ne devrait pas arriver
- $sql="UPDATE j_groupes_eleves_modalites SET code_modalite_elect='".$lig_grp_mod->code_modalite_elect."' WHERE login='".$login_eleve."' AND id_groupe='".$lig_tmp->id_groupe."';";
- $update=mysqli_query($GLOBALS["mysqli"], $sql);
- if(!$update) {
+ $sql = "UPDATE j_groupes_eleves_modalites SET code_modalite_elect='" . $lig_grp_mod->code_modalite_elect . "' WHERE login='" . $login_eleve . "' AND id_groupe='" . $lig_tmp->id_groupe . "';";
+ $update = mysqli_query($GLOBALS["mysqli"], $sql);
+ if (!$update) {
$reg_ok = 'no';
}
- }
- else {
- $sql="INSERT INTO j_groupes_eleves_modalites SET code_modalite_elect='".$lig_grp_mod->code_modalite_elect."', login='".$login_eleve."', id_groupe='".$lig_tmp->id_groupe."';";
- $insert=mysqli_query($GLOBALS["mysqli"], $sql);
- if(!$insert) {
+ } else {
+ $sql = "INSERT INTO j_groupes_eleves_modalites SET code_modalite_elect='" . $lig_grp_mod->code_modalite_elect . "', login='" . $login_eleve . "', id_groupe='" . $lig_tmp->id_groupe . "';";
+ $insert = mysqli_query($GLOBALS["mysqli"], $sql);
+ if (!$insert) {
$reg_ok = 'no';
}
}
@@ -176,61 +177,58 @@
}
}
}
-
- $sql="SELECT DISTINCT cpe_login FROM j_eleves_cpe jecpe, j_eleves_classes jec
+
+ $sql = "SELECT DISTINCT cpe_login FROM j_eleves_cpe jecpe, j_eleves_classes jec
WHERE (
jec.id_classe='$id_classe' AND
jecpe.e_login=jec.login AND
jec.periode='$i'
)";
//echo "$sql
";
- $res_cpe=mysqli_query($GLOBALS["mysqli"], $sql);
- if(mysqli_num_rows($res_cpe)==1) {
- $sql="DELETE FROM j_eleves_cpe WHERE e_login='$login_eleve';";
+ $res_cpe = mysqli_query($GLOBALS["mysqli"], $sql);
+ if (mysqli_num_rows($res_cpe) == 1) {
+ $sql = "DELETE FROM j_eleves_cpe WHERE e_login='$login_eleve';";
//echo "$sql
";
- $nettoyage=mysqli_query($GLOBALS["mysqli"], $sql);
-
- $lig_tmp=mysqli_fetch_object($res_cpe);
- $sql="INSERT INTO j_eleves_cpe SET cpe_login='$lig_tmp->cpe_login', e_login='$login_eleve';";
+ $nettoyage = mysqli_query($GLOBALS["mysqli"], $sql);
+
+ $lig_tmp = mysqli_fetch_object($res_cpe);
+ $sql = "INSERT INTO j_eleves_cpe SET cpe_login='$lig_tmp->cpe_login', e_login='$login_eleve';";
//echo "$sql
";
- $insert_cpe=mysqli_query($GLOBALS["mysqli"], $sql);
- }
- else {
- if(!in_array($login_eleve, $tab_ele_sans_cpe_defini)) {
- $msg_complement.="
L'élève $login_eleve n'a pas été associé à un CPE.";
- $tab_ele_sans_cpe_defini[]=$login_eleve;
+ $insert_cpe = mysqli_query($GLOBALS["mysqli"], $sql);
+ } else {
+ if (!in_array($login_eleve, $tab_ele_sans_cpe_defini)) {
+ $msg_complement .= "
L'élève $login_eleve n'a pas été associé à un CPE.";
+ $tab_ele_sans_cpe_defini[] = $login_eleve;
}
}
-
- $sql="SELECT DISTINCT professeur FROM j_eleves_professeurs jep
+
+ $sql = "SELECT DISTINCT professeur FROM j_eleves_professeurs jep
WHERE (
jep.id_classe='$id_classe'
)";
//echo "$sql
";
- $res_pp=mysqli_query($GLOBALS["mysqli"], $sql);
- if(mysqli_num_rows($res_pp)==1) {
- $sql="DELETE FROM j_eleves_professeurs WHERE login='$login_eleve';";
+ $res_pp = mysqli_query($GLOBALS["mysqli"], $sql);
+ if (mysqli_num_rows($res_pp) == 1) {
+ $sql = "DELETE FROM j_eleves_professeurs WHERE login='$login_eleve';";
//echo "$sql
";
- $nettoyage=mysqli_query($GLOBALS["mysqli"], $sql);
-
- $lig_tmp=mysqli_fetch_object($res_pp);
- $sql="INSERT INTO j_eleves_professeurs SET professeur='$lig_tmp->professeur', login='$login_eleve', id_classe='$id_classe';";
+ $nettoyage = mysqli_query($GLOBALS["mysqli"], $sql);
+
+ $lig_tmp = mysqli_fetch_object($res_pp);
+ $sql = "INSERT INTO j_eleves_professeurs SET professeur='$lig_tmp->professeur', login='$login_eleve', id_classe='$id_classe';";
//echo "$sql
";
- $insert_pp=mysqli_query($GLOBALS["mysqli"], $sql);
- }
- else {
- if(!in_array($login_eleve, $tab_ele_sans_pp_defini)) {
- $msg_complement.="
L'élève $login_eleve n'a pas été associé à un ".$gepiProfSuivi.".";
- $tab_ele_sans_pp_defini[]=$login_eleve;
+ $msg_complement .= "' target='_blank'>associé à un " . $gepiProfSuivi . ".";
+ $tab_ele_sans_pp_defini[] = $login_eleve;
}
}
}
@@ -238,32 +236,32 @@
$i++;
}
}
-
- if(isset($_POST['regime_'.$id_eleve])) {
- $sql="SELECT * FROM j_eleves_regime WHERE login='$login_eleve';";
+
+ if (isset($_POST['regime_' . $id_eleve])) {
+ $sql = "SELECT * FROM j_eleves_regime WHERE login='$login_eleve';";
$call_regime = mysqli_query($GLOBALS["mysqli"], $sql);
$nb_test_regime = mysqli_num_rows($call_regime);
if ($nb_test_regime == 0) {
- $sql="INSERT INTO j_eleves_regime SET login='$login_eleve', regime='".$_POST['regime_'.$id_eleve]."', doublant='-';";
+ $sql = "INSERT INTO j_eleves_regime SET login='$login_eleve', regime='" . $_POST['regime_' . $id_eleve] . "', doublant='-';";
$reg_data = mysqli_query($GLOBALS["mysqli"], $sql);
if (!($reg_data)) $reg_ok = 'no';
} else {
- $sql="UPDATE j_eleves_regime SET regime='".$_POST['regime_'.$id_eleve]."' WHERE login='$login_eleve';";
+ $sql = "UPDATE j_eleves_regime SET regime='" . $_POST['regime_' . $id_eleve] . "' WHERE login='$login_eleve';";
$reg_data = mysqli_query($GLOBALS["mysqli"], $sql);
if (!($reg_data)) $reg_ok = 'no';
}
}
-
- if(isset($_POST['doublant_eleve_'.$id_eleve])) {
- $sql="SELECT * FROM j_eleves_regime WHERE login='$login_eleve';";
+
+ if (isset($_POST['doublant_eleve_' . $id_eleve])) {
+ $sql = "SELECT * FROM j_eleves_regime WHERE login='$login_eleve';";
$call_regime = mysqli_query($GLOBALS["mysqli"], $sql);
$nb_test_regime = mysqli_num_rows($call_regime);
if ($nb_test_regime == 0) {
- $sql="INSERT INTO j_eleves_regime SET login='$login_eleve', doublant='".$_POST['doublant_eleve_'.$id_eleve]."', regime='d/p';";
+ $sql = "INSERT INTO j_eleves_regime SET login='$login_eleve', doublant='" . $_POST['doublant_eleve_' . $id_eleve] . "', regime='d/p';";
$reg_data = mysqli_query($GLOBALS["mysqli"], $sql);
if (!($reg_data)) $reg_ok = 'no';
} else {
- $sql="UPDATE j_eleves_regime SET doublant='".$_POST['doublant_eleve_'.$id_eleve]."' WHERE login='$login_eleve';";
+ $sql = "UPDATE j_eleves_regime SET doublant='" . $_POST['doublant_eleve_' . $id_eleve] . "' WHERE login='$login_eleve';";
$reg_data = mysqli_query($GLOBALS["mysqli"], $sql);
if (!($reg_data)) $reg_ok = 'no';
}
@@ -277,42 +275,40 @@
} else {
$msg = "Il y a eu un problème lors de l'enregistrement !";
}
- $msg.=$msg_complement;
+ $msg .= $msg_complement;
}
// AJOUT: boireaus
-$chaine_options_classes="";
-$sql="SELECT id, classe FROM classes ORDER BY classe";
-$res_class_tmp=mysqli_query($GLOBALS["mysqli"], $sql);
-if(mysqli_num_rows($res_class_tmp)>0){
- $id_class_prec=0;
- $id_class_suiv=0;
- $temoin_tmp=0;
-
- $cpt_classe=0;
- $num_classe=-1;
-
- while($lig_class_tmp=mysqli_fetch_object($res_class_tmp)){
- if($lig_class_tmp->id==$id_classe){
+$chaine_options_classes = "";
+$sql = "SELECT id, classe FROM classes ORDER BY classe";
+$res_class_tmp = mysqli_query($GLOBALS["mysqli"], $sql);
+if (mysqli_num_rows($res_class_tmp) > 0) {
+ $id_class_prec = 0;
+ $id_class_suiv = 0;
+ $temoin_tmp = 0;
+
+ $cpt_classe = 0;
+ $num_classe = -1;
+
+ while ($lig_class_tmp = mysqli_fetch_object($res_class_tmp)) {
+ if ($lig_class_tmp->id == $id_classe) {
// Index de la classe dans les \n";
- $temoin_tmp=1;
- if($lig_class_tmp=mysqli_fetch_object($res_class_tmp)){
- $chaine_options_classes.="\n";
- $id_class_suiv=$lig_class_tmp->id;
- }
- else{
- $id_class_suiv=0;
+ $chaine_options_classes .= "\n";
+ $temoin_tmp = 1;
+ if ($lig_class_tmp = mysqli_fetch_object($res_class_tmp)) {
+ $chaine_options_classes .= "\n";
+ $id_class_suiv = $lig_class_tmp->id;
+ } else {
+ $id_class_suiv = 0;
}
- }
- else {
- $chaine_options_classes.="\n";
+ } else {
+ $chaine_options_classes .= "\n";
}
- if($temoin_tmp==0){
- $id_class_prec=$lig_class_tmp->id;
+ if ($temoin_tmp == 0) {
+ $id_class_prec = $lig_class_tmp->id;
}
$cpt_classe++;
@@ -321,7 +317,7 @@
// =================================
-$themessage = 'Des informations ont été modifiées. Voulez-vous vraiment quitter sans enregistrer ?';
+$themessage = 'Des informations ont été modifiées. Voulez-vous vraiment quitter sans enregistrer ?';
//**************** EN-TETE **************************************
$titre_page = "Gestion des classes | Ajout d'élèves à une classe";
require_once("../lib/header.inc.php");
@@ -331,7 +327,7 @@
echo "\n";
- echo " | \n";
-}
-if($id_class_suiv!=0){echo " | Classe suivante";}
-?>
-
+ echo " | \n";
+ }
+ if ($id_class_suiv != 0) {
+ echo " | Classe suivante";
+ }
+ ?>
+
-
-
+
+
From eae0236467516e086e6af86dd30148b6b0274c51 Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 16:16:46 +0200
Subject: [PATCH 24/63] classes/classes_ajout.php: js: utilisation de 'let' et
comparaison 'stricte'
---
classes/classes_ajout.php | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/classes/classes_ajout.php b/classes/classes_ajout.php
index 1f63a1316b..8c806769d2 100755
--- a/classes/classes_ajout.php
+++ b/classes/classes_ajout.php
@@ -362,19 +362,16 @@ class='back_link'/> Retour à la page de
// Initialisation
change='no';
- function confirm_changement_classe(thechange, themessage)
- {
+ function confirm_changement_classe(thechange, themessage) {
if (!(thechange)) thechange='no';
- if (thechange != 'yes') {
+ if (thechange !== 'yes') {
document.form1.submit();
- }
- else{
- var is_confirmed = confirm(themessage);
+ } else {
+ let is_confirmed = confirm(themessage);
if(is_confirmed){
document.form1.submit();
- }
- else{
- document.getElementById('id_classe').selectedIndex=$num_classe;
+ } else{
+ document.getElementById('id_classe').selectedIndex = $num_classe;
}
}
}
From aaff31e8edaac8761d313b2fece548acb5881265 Mon Sep 17 00:00:00 2001
From: Romain
Date: Wed, 2 Jun 2021 16:19:08 +0200
Subject: [PATCH 25/63] =?UTF-8?q?classes/classes=5Fconst.php:=20-=20unifor?=
=?UTF-8?q?misation=20-=20css:=20supression=20de=20l'unit=C3=A9=20'px'=20i?=
=?UTF-8?q?nutile?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
classes/classes_const.php | 670 ++++++++++++++++++++------------------
1 file changed, 357 insertions(+), 313 deletions(-)
diff --git a/classes/classes_const.php b/classes/classes_const.php
index a68ff0ff93..4bc1c82a17 100755
--- a/classes/classes_const.php
+++ b/classes/classes_const.php
@@ -41,17 +41,17 @@
die();
}
-$id_classe=isset($_POST['id_classe']) ? $_POST['id_classe'] : (isset($_GET['id_classe']) ? $_GET['id_classe'] : NULL);
-if((!isset($id_classe))||(!preg_match("/^[0-9]{1,}$/", $id_classe))) {
+$id_classe = isset($_POST['id_classe']) ? $_POST['id_classe'] : (isset($_GET['id_classe']) ? $_GET['id_classe'] : NULL);
+if ((!isset($id_classe)) || (!preg_match("/^[0-9]{1,}$/", $id_classe))) {
header("Location: ../accueil.php?msg=Classe non choisie.");
die();
}
include "../lib/periodes.inc.php";
-$_SESSION['chemin_retour'] = $gepiPath."/classes/classes_const.php?id_classe=".$id_classe;
+$_SESSION['chemin_retour'] = $gepiPath . "/classes/classes_const.php?id_classe=" . $id_classe;
-$explication_motif_bloquant_suppression_eleve_de_la_classe="La présence de moyennes, appréciations ou avis du conseil de classe est bloquante pour la suppression d'un élève d'une classe.
Vous pouvez demander aux professeurs de vider leurs notes et appréciations pour le ou les élèves en question.
Sinon, un compte de statut 'secours' permet de corriger/vider des moyennes, appréciations et/ou avis du conseil de classe en se rendant dans la rubrique Saisie/Bulletin : saisie des moyennes et des appréciations par matière/Choix d'un élève.";
+$explication_motif_bloquant_suppression_eleve_de_la_classe = "La présence de moyennes, appréciations ou avis du conseil de classe est bloquante pour la suppression d'un élève d'une classe.
Vous pouvez demander aux professeurs de vider leurs notes et appréciations pour le ou les élèves en question.
Sinon, un compte de statut 'secours' permet de corriger/vider des moyennes, appréciations et/ou avis du conseil de classe en se rendant dans la rubrique Saisie/Bulletin : saisie des moyennes et des appréciations par matière/Choix d'un élève.";
if (isset($is_posted)) {
check_token();
@@ -62,11 +62,11 @@
//=========================
// AJOUT: boireaus 20071010
- $log_eleve=isset($_POST['log_eleve']) ? $_POST['log_eleve'] : array();
- $regime_eleve=isset($_POST['regime_eleve']) ? $_POST['regime_eleve'] : NULL;
- $doublant_eleve=isset($_POST['doublant_eleve']) ? $_POST['doublant_eleve'] : NULL;
- $prof_principal=isset($_POST['prof_principal']) ? $_POST['prof_principal'] : NULL;
- $cpe_resp=isset($_POST['cpe_resp']) ? $_POST['cpe_resp'] : NULL;
+ $log_eleve = isset($_POST['log_eleve']) ? $_POST['log_eleve'] : array();
+ $regime_eleve = isset($_POST['regime_eleve']) ? $_POST['regime_eleve'] : NULL;
+ $doublant_eleve = isset($_POST['doublant_eleve']) ? $_POST['doublant_eleve'] : NULL;
+ $prof_principal = isset($_POST['prof_principal']) ? $_POST['prof_principal'] : NULL;
+ $cpe_resp = isset($_POST['cpe_resp']) ? $_POST['cpe_resp'] : NULL;
//=========================
$k = 0;
@@ -77,29 +77,37 @@
//=========================
// AJOUT: boireaus 20071003
// Récupération du numéro de l'élève dans les saisies:
- $num_eleve=-1;
- for($i=0;$i\n";
//=========================
// MODIF: boireaus 20071010
//$regime_login = 'regime_'.$login_eleve;
//$reg_regime = isset($_POST[$regime_login])?$_POST[$regime_login]:NULL;
- $reg_regime="";
- if(isset($regime_eleve[$num_eleve])){$reg_regime=$regime_eleve[$num_eleve];}
+ $reg_regime = "";
+ if (isset($regime_eleve[$num_eleve])) {
+ $reg_regime = $regime_eleve[$num_eleve];
+ }
//$doublant_login = "doublant_".$login_eleve;
//$reg_doublant = isset($_POST[$doublant_login])?$_POST[$doublant_login]:NULL;
- $reg_doublant="";
- if(isset($doublant_eleve[$num_eleve])){$reg_doublant=$doublant_eleve[$num_eleve];}
+ $reg_doublant = "";
+ if (isset($doublant_eleve[$num_eleve])) {
+ $reg_doublant = $doublant_eleve[$num_eleve];
+ }
//========================
- if ($reg_doublant == 'yes') {$reg_doublant = 'R';} else {$reg_doublant = '-';}
+ if ($reg_doublant == 'yes') {
+ $reg_doublant = 'R';
+ } else {
+ $reg_doublant = '-';
+ }
$call_regime = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM j_eleves_regime WHERE login='$login_eleve'");
$nb_test_regime = mysqli_num_rows($call_regime);
@@ -115,62 +123,62 @@
// MODIF: boireaus 20071010
//$prof_login = "prof_".$login_eleve;
//$reg_prof = isset($_POST[$prof_login])?$_POST[$prof_login]:NULL;
- $reg_prof="(vide)";
- if(isset($prof_principal[$num_eleve])){$reg_prof=$prof_principal[$num_eleve];}
+ $reg_prof = "(vide)";
+ if (isset($prof_principal[$num_eleve])) {
+ $reg_prof = $prof_principal[$num_eleve];
+ }
//echo "\$reg_prof=$reg_prof
\n";
//echo "$login_eleve - \$reg_prof=\$prof_principal[$num_eleve]=".$prof_principal[$num_eleve]."
";
//=========================
- $sql="SELECT professeur FROM j_eleves_professeurs WHERE (login = '$login_eleve' AND id_classe='$id_classe')";
+ $sql = "SELECT professeur FROM j_eleves_professeurs WHERE (login = '$login_eleve' AND id_classe='$id_classe')";
//echo "$sql
";
$call_profsuivi_eleve = mysqli_query($GLOBALS["mysqli"], $sql);
- if(mysqli_num_rows($call_profsuivi_eleve)>1) {
+ if (mysqli_num_rows($call_profsuivi_eleve) > 1) {
// ANOMALIE : On fait le ménage
- $sql="DELETE FROM j_eleves_professeurs WHERE (login='$login_eleve' AND id_classe='$id_classe')";
+ $sql = "DELETE FROM j_eleves_professeurs WHERE (login='$login_eleve' AND id_classe='$id_classe')";
//echo "$sql
";
$reg_data = mysqli_query($GLOBALS["mysqli"], $sql);
- if (!($reg_data)){
+ if (!($reg_data)) {
$reg_ok = 'no';
//echo "PB";
$eleve_profsuivi = @old_mysql_result($call_profsuivi_eleve, '0', 'professeur');
+ } else {
+ $eleve_profsuivi = "";
}
- else {
- $eleve_profsuivi="";
- }
- }
- else {
+ } else {
$eleve_profsuivi = @old_mysql_result($call_profsuivi_eleve, '0', 'professeur');
}
//echo "\$eleve_profsuivi=$eleve_profsuivi
\n";
if (($reg_prof == '(vide)') and ($eleve_profsuivi != '')) {
- $sql="DELETE FROM j_eleves_professeurs WHERE (login='$login_eleve' AND id_classe='$id_classe')";
+ $sql = "DELETE FROM j_eleves_professeurs WHERE (login='$login_eleve' AND id_classe='$id_classe')";
//echo "$sql
";
$reg_data = mysqli_query($GLOBALS["mysqli"], $sql);
- if (!($reg_data)){
+ if (!($reg_data)) {
$reg_ok = 'no';
//echo "PB";
}
}
- if (($reg_prof != '(vide)') and ($eleve_profsuivi != '') and ($reg_prof != $eleve_profsuivi)) {
+ if (($reg_prof != '(vide)') and ($eleve_profsuivi != '') and ($reg_prof != $eleve_profsuivi)) {
// Problème de doublon
//$sql="UPDATE j_eleves_professeurs SET professeur ='$reg_prof' WHERE (login='$login_eleve' AND id_classe='$id_classe')";
- $sql="DELETE FROM j_eleves_professeurs WHERE (login='$login_eleve' AND id_classe='$id_classe')";
+ $sql = "DELETE FROM j_eleves_professeurs WHERE (login='$login_eleve' AND id_classe='$id_classe')";
//echo "$sql
";
$reg_data = mysqli_query($GLOBALS["mysqli"], $sql);
- $sql="INSERT INTO j_eleves_professeurs VALUES ('$login_eleve', '$reg_prof', '$id_classe')";
+ $sql = "INSERT INTO j_eleves_professeurs VALUES ('$login_eleve', '$reg_prof', '$id_classe')";
//echo "$sql
";
$reg_data = mysqli_query($GLOBALS["mysqli"], $sql);
- if (!($reg_data)){
+ if (!($reg_data)) {
$reg_ok = 'no';
//echo "PB";
}
}
- if (($reg_prof != '(vide)') and ($eleve_profsuivi == '')) {
- $sql="INSERT INTO j_eleves_professeurs VALUES ('$login_eleve', '$reg_prof', '$id_classe')";
+ if (($reg_prof != '(vide)') and ($eleve_profsuivi == '')) {
+ $sql = "INSERT INTO j_eleves_professeurs VALUES ('$login_eleve', '$reg_prof', '$id_classe')";
//echo "$sql
";
$reg_data = mysqli_query($GLOBALS["mysqli"], $sql);
- if (!($reg_data)){
+ if (!($reg_data)) {
$reg_ok = 'no';
//echo "PB";
}
@@ -181,36 +189,38 @@
//$cpe_login = "cpe_".$login_eleve;
//$reg_cperesp = isset($_POST[$cpe_login])?$_POST[$cpe_login]:NULL;
//$reg_cperesp="(vide)";
- $reg_cperesp="(vide)";
- if(isset($cpe_resp[$num_eleve])){$reg_cperesp=$cpe_resp[$num_eleve];}
+ $reg_cperesp = "(vide)";
+ if (isset($cpe_resp[$num_eleve])) {
+ $reg_cperesp = $cpe_resp[$num_eleve];
+ }
//echo "\$reg_cperesp=$reg_cperesp
\n";
//=========================
$call_cperesp_eleve = mysqli_query($GLOBALS["mysqli"], "SELECT cpe_login FROM j_eleves_cpe WHERE e_login = '$login_eleve'");
$eleve_cperesp = @old_mysql_result($call_cperesp_eleve, '0', 'cpe_login');
if (($reg_cperesp == '(vide)') and ($eleve_cperesp != '')) {
- $sql="DELETE FROM j_eleves_cpe WHERE e_login='$login_eleve'";
+ $sql = "DELETE FROM j_eleves_cpe WHERE e_login='$login_eleve'";
//echo "$sql
";
$reg_data = mysqli_query($GLOBALS["mysqli"], $sql);
- if (!($reg_data)){
+ if (!($reg_data)) {
$reg_ok = 'no';
//echo "PB";
}
}
- if (($reg_cperesp != '(vide)') and ($eleve_cperesp != '') and ($reg_cperesp != $eleve_cperesp)) {
- $sql="UPDATE j_eleves_cpe SET cpe_login ='$reg_cperesp' WHERE e_login='$login_eleve'";
+ if (($reg_cperesp != '(vide)') and ($eleve_cperesp != '') and ($reg_cperesp != $eleve_cperesp)) {
+ $sql = "UPDATE j_eleves_cpe SET cpe_login ='$reg_cperesp' WHERE e_login='$login_eleve'";
//echo "$sql
";
$reg_data = mysqli_query($GLOBALS["mysqli"], $sql);
- if (!($reg_data)){
+ if (!($reg_data)) {
$reg_ok = 'no';
//echo "PB";
}
}
- if (($reg_cperesp != '(vide)') and ($eleve_cperesp == '')) {
- $sql="INSERT INTO j_eleves_cpe VALUES ('$login_eleve', '$reg_cperesp')";
+ if (($reg_cperesp != '(vide)') and ($eleve_cperesp == '')) {
+ $sql = "INSERT INTO j_eleves_cpe VALUES ('$login_eleve', '$reg_cperesp')";
//echo "$sql
";
$reg_data = mysqli_query($GLOBALS["mysqli"], $sql);
- if (!($reg_data)){
+ if (!($reg_data)) {
$reg_ok = 'no';
//echo "PB";
}
@@ -223,77 +233,85 @@
$liste_cible2 = '';
$liste_cible3 = '';
$autorisation_sup = 'yes';
- while ($k < $nombreligne){
+ while ($k < $nombreligne) {
$eleve_login = old_mysql_result($call_eleves, $k, "login");
//echo "\$eleve_login=$eleve_login et ";
//=========================
// AJOUT: boireaus 20071003
// Récupération du numéro de l'élève dans les saisies:
- $num_eleve=-1;
- for($i=0;$i";
- if($num_eleve!=-1){
- $delete=isset($_POST['delete_'.$num_eleve]) ? $_POST['delete_'.$num_eleve] : NULL;
+ if ($num_eleve != -1) {
+ $delete = isset($_POST['delete_' . $num_eleve]) ? $_POST['delete_' . $num_eleve] : NULL;
- $i="1";
+ $i = "1";
while ($i < $nb_periode) {
//=========================
// MODIF: boireaus 20071010
//$temp = 'delete_'.$eleve_login."_".$i;
//$del_eleve[$i] = isset($_POST[$temp])?$_POST[$temp]:NULL;
- $del_eleve[$i]=NULL;
- if(isset($delete[$i])){$del_eleve[$i]=$delete[$i];}
+ $del_eleve[$i] = NULL;
+ if (isset($delete[$i])) {
+ $del_eleve[$i] = $delete[$i];
+ }
//=========================
if ($del_eleve[$i] == 'yes') {
- $sql="SELECT * FROM matieres_notes WHERE (login='$eleve_login' and periode = '$i');";
+ $sql = "SELECT * FROM matieres_notes WHERE (login='$eleve_login' and periode = '$i');";
//echo "$sql
";
$test = mysqli_query($GLOBALS["mysqli"], $sql);
$nb_test = mysqli_num_rows($test);
- $sql="SELECT * FROM matieres_appreciations WHERE (login='$eleve_login' and periode='$i')";
+ $sql = "SELECT * FROM matieres_appreciations WHERE (login='$eleve_login' and periode='$i')";
//echo "$sql
";
$test_app = mysqli_query($GLOBALS["mysqli"], $sql);
$nb_test_app = mysqli_num_rows($test_app);
- $sql="SELECT * FROM avis_conseil_classe WHERE (login='$eleve_login' and periode='$i' and avis!='')";
+ $sql = "SELECT * FROM avis_conseil_classe WHERE (login='$eleve_login' and periode='$i' and avis!='')";
//echo "$sql
";
$test_app_conseil = mysqli_query($GLOBALS["mysqli"], $sql);
$nb_test_app_conseil = mysqli_num_rows($test_app_conseil);
if (($nb_test != 0) or ($nb_test_app != 0) or ($nb_test_app_conseil != 0)) {
- $motif_bloquant="";
+ $motif_bloquant = "";
if ($nb_test != 0) {
- $motif_bloquant.=$nb_test." moyenne(s)";
+ $motif_bloquant .= $nb_test . " moyenne(s)";
}
if ($nb_test_app != 0) {
- if($motif_bloquant!="") {$motif_bloquant.=", ";}
- $motif_bloquant.=$nb_test_app." appréciation(s)";
+ if ($motif_bloquant != "") {
+ $motif_bloquant .= ", ";
+ }
+ $motif_bloquant .= $nb_test_app . " appréciation(s)";
}
if ($nb_test_app_conseil != 0) {
- if($motif_bloquant!="") {$motif_bloquant.=", ";}
- $motif_bloquant.="un avis du conseil de classe";
+ if ($motif_bloquant != "") {
+ $motif_bloquant .= ", ";
+ }
+ $motif_bloquant .= "un avis du conseil de classe";
}
$autorisation_sup = 'no';
- if(!isset($msg)) {$msg="";}
- $msg.="--> Impossible de retirer l'élève $eleve_login de la classe pour la période $i !
Cet(te) élève a $motif_bloquant pour cette période. Commencez par supprimer les données de l'élève pour cette période !
\n";
+ if (!isset($msg)) {
+ $msg = "";
+ }
+ $msg .= "--> Impossible de retirer l'élève $eleve_login de la classe pour la période $i !
Cet(te) élève a $motif_bloquant pour cette période. Commencez par supprimer les données de l'élève pour cette période !
\n";
$reg_ok = "impossible";
} else {
- $liste_cible .= $eleve_login.";";
- $liste_cible2 .= $i.";";
- $liste_cible3 .= $id_classe.";";
+ $liste_cible .= $eleve_login . ";";
+ $liste_cible2 .= $i . ";";
+ $liste_cible3 .= $id_classe . ";";
}
}
$i++;
@@ -304,57 +322,55 @@
//debug_var();
- if($autorisation_sup=='no') {
- $msg.="De façon générale : ".$explication_motif_bloquant_suppression_eleve_de_la_classe."
";
+ if ($autorisation_sup == 'no') {
+ $msg .= "De façon générale : " . $explication_motif_bloquant_suppression_eleve_de_la_classe . "
";
}
if (($liste_cible != '') and ($autorisation_sup != 'no')) {
- header("Location: ../lib/confirm_query.php?liste_cible=$liste_cible&liste_cible2=$liste_cible2&liste_cible3=$liste_cible3&action=retire_eleve".add_token_in_url(false));
+ header("Location: ../lib/confirm_query.php?liste_cible=$liste_cible&liste_cible2=$liste_cible2&liste_cible3=$liste_cible3&action=retire_eleve" . add_token_in_url(false));
}
if ($reg_ok == 'yes') {
- //$message_enregistrement = "Les modifications ont été enregistrées !";
- if(!isset($msg)){$msg="";}
- $msg.="Les modifications ont été enregistrées !";
+ //$message_enregistrement = "Les modifications ont été enregistrées !";
+ if (!isset($msg)) {
+ $msg = "";
+ }
+ $msg .= "Les modifications ont été enregistrées !";
} else if ($reg_ok == "impossible") {
$message_enregistrement = "Opération Impossible (voir message d'avertissement en rouge).";
$affiche_message = 'yes';
} else {
- //$message_enregistrement = "Il y a eu un problème lors de l'enregistrement";
- $message_enregistrement="Il y a eu un problème lors de l'enregistrement";
+ //$message_enregistrement = "Il y a eu un problème lors de l'enregistrement";
+ $message_enregistrement = "Il y a eu un problème lors de l'enregistrement";
$affiche_message = 'yes';
}
//$affiche_message = 'yes';
}
-if(isset($_GET['add_eleve_classe'])) {
+if (isset($_GET['add_eleve_classe'])) {
check_token();
//add_eleve_classe=y&num_periode=$i&id_classe=$id_classe&login_eleve=$login_eleve
- $login_eleve=isset($_GET['login_eleve']) ? $_GET['login_eleve'] : NULL;
- $num_periode=isset($_GET['num_periode']) ? $_GET['num_periode'] : NULL;
+ $login_eleve = isset($_GET['login_eleve']) ? $_GET['login_eleve'] : NULL;
+ $num_periode = isset($_GET['num_periode']) ? $_GET['num_periode'] : NULL;
- if(($num_periode=='')||(preg_match("/[^0-9]/", $num_periode))) {
- $msg="Numéro de période $num_periode invalide pour l'ajout de $login_eleve dans la classe.";
- }
- elseif(($login_eleve=='')||(preg_match("/[^A-Za-z0-9\._-]/", $login_eleve))) {
- $msg="Login élève $login_eleve invalide pour l'ajout dans la classe en période $num_periode.";
- }
- else {
+ if (($num_periode == '') || (preg_match("/[^0-9]/", $num_periode))) {
+ $msg = "Numéro de période $num_periode invalide pour l'ajout de $login_eleve dans la classe.";
+ } elseif (($login_eleve == '') || (preg_match("/[^A-Za-z0-9\._-]/", $login_eleve))) {
+ $msg = "Login élève $login_eleve invalide pour l'ajout dans la classe en période $num_periode.";
+ } else {
//$sql="SELECT id_classe FROM j_eleves_classes WHERE login='$login_eleve' AND id_classe='$id_classe' AND periode='$num_periode';";
- $sql="SELECT id_classe FROM j_eleves_classes WHERE login='$login_eleve' AND periode='$num_periode';";
- $test=mysqli_query($GLOBALS["mysqli"], $sql);
- if(mysqli_num_rows($test)>0) {
- $lig=mysqli_fetch_object($test);
- $msg="$login_eleve est déjà inscrit dans la classe ".get_class_from_id($lig->id_classe)." en période $num_periode.";
- }
- else {
- $sql="INSERT INTO j_eleves_classes SET login='$login_eleve', id_classe='$id_classe', periode='$num_periode';";
- $insert=mysqli_query($GLOBALS["mysqli"], $sql);
- if(!$insert) {
- $msg="Erreur lors de l'ajout de $login_eleve dans la classe en période $num_periode.";
- }
- else {
- $msg="Ajout de $login_eleve dans la classe en période $num_periode effectué.
Pensez à définir les matières suivies.";
+ $sql = "SELECT id_classe FROM j_eleves_classes WHERE login='$login_eleve' AND periode='$num_periode';";
+ $test = mysqli_query($GLOBALS["mysqli"], $sql);
+ if (mysqli_num_rows($test) > 0) {
+ $lig = mysqli_fetch_object($test);
+ $msg = "$login_eleve est déjà inscrit dans la classe " . get_class_from_id($lig->id_classe) . " en période $num_periode.";
+ } else {
+ $sql = "INSERT INTO j_eleves_classes SET login='$login_eleve', id_classe='$id_classe', periode='$num_periode';";
+ $insert = mysqli_query($GLOBALS["mysqli"], $sql);
+ if (!$insert) {
+ $msg = "Erreur lors de l'ajout de $login_eleve dans la classe en période $num_periode.";
+ } else {
+ $msg = "Ajout de $login_eleve dans la classe en période $num_periode effectué.
Pensez à définir les matières suivies.";
}
}
}
@@ -362,38 +378,36 @@
// =================================
// AJOUT: boireaus
-$chaine_options_classes="";
-$sql="SELECT id, classe FROM classes ORDER BY classe";
-$res_class_tmp=mysqli_query($GLOBALS["mysqli"], $sql);
-if(mysqli_num_rows($res_class_tmp)>0){
- $id_class_prec=0;
- $id_class_suiv=0;
- $temoin_tmp=0;
-
- $cpt_classe=0;
- $num_classe=-1;
-
- while($lig_class_tmp=mysqli_fetch_object($res_class_tmp)){
- if($lig_class_tmp->id==$id_classe){
+$chaine_options_classes = "";
+$sql = "SELECT id, classe FROM classes ORDER BY classe";
+$res_class_tmp = mysqli_query($GLOBALS["mysqli"], $sql);
+if (mysqli_num_rows($res_class_tmp) > 0) {
+ $id_class_prec = 0;
+ $id_class_suiv = 0;
+ $temoin_tmp = 0;
+
+ $cpt_classe = 0;
+ $num_classe = -1;
+
+ while ($lig_class_tmp = mysqli_fetch_object($res_class_tmp)) {
+ if ($lig_class_tmp->id == $id_classe) {
// Index de la classe dans les \n";
- $temoin_tmp=1;
- if($lig_class_tmp=mysqli_fetch_object($res_class_tmp)){
- $chaine_options_classes.="\n";
- $id_class_suiv=$lig_class_tmp->id;
- }
- else{
- $id_class_suiv=0;
+ $chaine_options_classes .= "\n";
+ $temoin_tmp = 1;
+ if ($lig_class_tmp = mysqli_fetch_object($res_class_tmp)) {
+ $chaine_options_classes .= "\n";
+ $id_class_suiv = $lig_class_tmp->id;
+ } else {
+ $id_class_suiv = 0;
}
- }
- else {
- $chaine_options_classes.="\n";
+ } else {
+ $chaine_options_classes .= "\n";
}
- if($temoin_tmp==0){
- $id_class_prec=$lig_class_tmp->id;
+ if ($temoin_tmp == 0) {
+ $id_class_prec = $lig_class_tmp->id;
}
$cpt_classe++;
@@ -402,7 +416,7 @@
// =================================
-$themessage = 'Des informations ont été modifiées. Voulez-vous vraiment quitter sans enregistrer ?';
+$themessage = 'Des informations ont été modifiées. Voulez-vous vraiment quitter sans enregistrer ?';
//**************** EN-TETE **************************************
$titre_page = "Gestion des classes | Gestion des élèves";
@@ -414,29 +428,29 @@
//debug_var();
//=============================
-$ouvrir_infobulle_nav=getSettingValue("ouvrir_infobulle_nav");
+$ouvrir_infobulle_nav = getSettingValue("ouvrir_infobulle_nav");
-$gepi_prof_suivi=ucfirst(retourne_denomination_pp($id_classe));
+$gepi_prof_suivi = ucfirst(retourne_denomination_pp($id_classe));
-if(!isset($quitter_la_page)){
- echo "
\n";
echo "