security_check();
if ($resultat_session == 'c') {
header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes");
die();
} else if ($resultat_session == '0') {
header("Location: ../logout.php?auto=1");
die();
}
// Sécurité
if (!checkAccess()) {
header("Location: ../logout.php?auto=2");
die();
}
//debug_var();
if (getSettingValue("statuts_prives") != "y") {
trigger_error('Impossible d\'accéder à ce module de Gepi.', E_USER_ERROR);
}
//debug_var();
// ========================================= Variables ============================
$action = isset($_POST["action"]) ? $_POST["action"] : NULL;
$nouveau_statut = isset($_POST["news"]) ? $_POST["news"] : NULL;
$login_user = isset($_POST["userid"]) ? $_POST["userid"] : NULL;
$statut_user = isset($_POST["userstat"]) ? $_POST["userstat"] : NULL;
$msg = $msg2 = $msg3 = NULL;
// Ces tableaux définissent les différents fichiers à autoriser en fonction du statut
$values_b = '';
// La liste des fichiers à traiter
require_once('./creer_statut_autorisation.php');
//print_r($autorise);
// Fonction qui permet d'afficher le selected de l'affichage
function verifChecked($id){
// On utilise les variables définies dans /creer_statut_autorisation.php
global $autorise;
global $iter;
for($i = 1 ; $i < $iter ; $i++){
// On récupère les droits de ce statut privé
$sql_ds = "SELECT autorisation FROM droits_speciaux WHERE id_statut = '".$id."' AND nom_fichier = '".$autorise[$i][0]."'";
//echo "\$sql_ds=$sql_ds ";
$query_ds = mysqli_query($GLOBALS["mysqli"], $sql_ds) OR trigger_error('Erreur dans la fonction verifChecked ', E_USER_ERROR);
$count = mysqli_num_rows($query_ds);
//echo "\$count=$count ";
if ($count >= 1) {
$rep = old_mysql_result($query_ds, 0,"autorisation");
}else{
$rep = 'F';
}
// echo $sql_ds.' '.$rep.' '; // debug
if ($rep == 'V') {
$retour[$i] = ' checked="checked"';
}else{
$retour[$i] = '';
}
}
return $retour;
}
if ($action == 'ajouter') {
check_token();
// on fait quelques vérifications sur le nom du statut (si il existe déjà, longueur du nom, enlever les ' et les ",...)
// On ne garde que les 12 premières lettres
$stat_1 = mb_substr(trim($nouveau_statut), 0, 12);
// On enlève les accents, les apostrophes et les guillemets
$stat_2 = str_replace("\\", "", $stat_1);
$stat_2b = str_replace('"', '', $stat_2);
$stat_3 = remplace_accents($stat_2b, "all");
// On refait une ultime vérification
$insert_statut = htmlspecialchars($stat_3, ENT_QUOTES);
// On ajoute le statut privé après avoir vérifié qu'il n'existe pas déjà
$query_v = mysqli_query($GLOBALS["mysqli"], "SELECT id FROM droits_statut WHERE nom_statut = '".$insert_statut."'");
$verif = mysqli_num_rows($query_v);
if ($verif >= 1) {
$msg .= "
Ce statut privé existe déjà !
";
} else{
$sql = "INSERT INTO droits_statut (id, nom_statut) VALUES ('', '".$insert_statut."')";
//echo "$sql ";
$enregistre = mysqli_query($GLOBALS["mysqli"], $sql) OR trigger_error('Impossible d\'enregistrer ce nouveau statut', E_USER_WARNING);
$cherche_id = mysqli_query($GLOBALS["mysqli"], "SELECT id FROM droits_statut WHERE nom_statut = '".$insert_statut."'");
$last_id = old_mysql_result($cherche_id, 0,"id");
if ($enregistre) {
// On enregistre les droits généraux adéquats avec la virgule qui va bien entre chaque value
// Chaque droit correspond à un ensemble d'autorisations sur un ou plusieurs fichiers
// Pour ajouter des droits, il suffit d'ajouter des branches au tableau $autorise du fichier creer_statut_autorisation avec tous les fichiers utiles
for($a = 0 ; $a < $iter ; $a++){ // $iter est définie dans creer_statut_autorisation.php
$nbre = count($autorise[$a]);
// On met V pour les autorisations de base mais F pour les autres
if ($a != 0) {
$vf = 'F';
}else{
$vf = 'V';
}
for($c = 0 ; $c < $nbre ; $c++){
$values_b .= '("", "'.$last_id.'", "'.$autorise[$a][$c].'", "'.$vf.'")';
if ($c <= ($nbre - 2)) {
$values_b .= ', ';
}
}
// On ajoute une virgule entre chaque droit sauf à la fin
if ($a < ($iter - 1)) {
$values_b .= ', ';
}
}
$autorise_b = mysqli_query($GLOBALS["mysqli"], "INSERT INTO droits_speciaux (id, id_statut, nom_fichier, autorisation) VALUES ".$values_b."")
OR trigger_error('Impossible d\'enregistrer : '.$values_b.' : '.mysqli_error($GLOBALS["mysqli"]), E_USER_WARNING);
if ($autorise_b) {
$msg .= '
Ce statut est enregistré !
';
}
}
}
} // if ($action == 'ajouter')
if ($action == 'modifier') {
check_token();
// On initialise toutes les variables envoyées
$sql = "SELECT id, nom_statut FROM droits_statut ORDER BY nom_statut";
//echo "$sql ";
$query = mysqli_query($GLOBALS["mysqli"], $sql) OR trigger_error('Erreur '.$sql, E_USER_ERROR);
$nbre = mysqli_num_rows($query);
$test=array();
for($a = 0; $a < $nbre; $a++){
$b = old_mysql_result($query, $a, "id");
//$current_statut = old_mysql_result($query, $a, "nom_statut");
//echo " Statut n°$b : $current_statut ";
$test[$a][0] = isset($_POST["suppr|".$b]) ? $_POST["suppr|".$b] : NULL;
$test[$a][1] = isset($_POST["ne|".$b]) ? $_POST["ne|".$b] : NULL;
$test[$a][2] = isset($_POST["moy_cn|".$b]) ? $_POST["moy_cn|".$b] : NULL;
$test[$a][3] = isset($_POST["bs|".$b]) ? $_POST["bs|".$b] : NULL;
$test[$a][4] = isset($_POST["va|".$b]) ? $_POST["va|".$b] : NULL;
$test[$a][5] = isset($_POST["sa|".$b]) ? $_POST["sa|".$b] : NULL;
$test[$a][6] = isset($_POST["cdt|".$b]) ? $_POST["cdt|".$b] : NULL;
$test[$a][7] = isset($_POST["cdt_visa|".$b]) ? $_POST["cdt_visa|".$b] : NULL;
$test[$a][8] = isset($_POST["ee|".$b]) ? $_POST["ee|".$b] : NULL;
$test[$a][9] = isset($_POST["te|".$b]) ? $_POST["te|".$b] : NULL;
$test[$a][10] = isset($_POST["pa|".$b]) ? $_POST["pa|".$b] : NULL;
$test[$a][11] = isset($_POST["ve|".$b]) ? $_POST["ve|".$b] : NULL;
$test[$a][12] = isset($_POST["vre|".$b]) ? $_POST["vre|".$b] : NULL;
$test[$a][13] = isset($_POST["vee|".$b]) ? $_POST["vee|".$b] : NULL;
$test[$a][14] = isset($_POST["vne|".$b]) ? $_POST["vne|".$b] : NULL;
$test[$a][15] = isset($_POST["vbe|".$b]) ? $_POST["vbe|".$b] : NULL;
$test[$a][16] = isset($_POST["vae|".$b]) ? $_POST["vae|".$b] : NULL;
$test[$a][17] = isset($_POST["anna|".$b]) ? $_POST["anna|".$b] : NULL;
$test[$a][18] = isset($_POST["tr|".$b]) ? $_POST["tr|".$b] : NULL;
$test[$a][19] = isset($_POST["dsi|".$b]) ? $_POST["dsi|".$b] : NULL;
$test[$a][20] = isset($_POST["abs|".$b]) ? $_POST["abs|".$b] : NULL;
$test[$a][21] = isset($_POST["abs_saisie|".$b]) ? $_POST["abs_saisie|".$b] : NULL;
$test[$a][22] = isset($_POST["abs_bilan|".$b]) ? $_POST["abs_bilan|".$b] : NULL;
$test[$a][23] = isset($_POST["abs_totaux|".$b]) ? $_POST["abs_totaux|".$b] : NULL;
$test[$a][24] = isset($_POST["bul_print|".$b]) ? $_POST["bul_print|".$b] : NULL;
$test[$a][25] = isset($_POST["visu_equipes_peda|".$b]) ? $_POST["visu_equipes_peda|".$b] : NULL;
$test[$a][26] = isset($_POST["visu_listes_ele|".$b]) ? $_POST["visu_listes_ele|".$b] : NULL;
$test[$a][27] = isset($_POST["listes_ele_csv|".$b]) ? $_POST["listes_ele_csv|".$b] : NULL;
// On assure les différents traitements
if ($test[$a][0] == 'on') {
// On supprime le statut demandé
$sql_d = "DELETE FROM droits_statut WHERE id = '".$b."'";
//echo "$sql_d ";
$query_d = mysqli_query($GLOBALS["mysqli"], $sql_d) OR trigger_error('Impossible de supprimer ce statut : '.mysqli_error($GLOBALS["mysqli"]), E_USER_NOTICE);
// Il faut aussi effacer toutes les références à ce statut dans les autres tables
$sql_d = "DELETE FROM droits_utilisateurs WHERE id_statut = '".$b."'";
//echo "$sql_d ";
$query_d = mysqli_query($GLOBALS["mysqli"], $sql_d) OR trigger_error('Impossible de supprimer ce statut du : '.mysqli_error($GLOBALS["mysqli"]), E_USER_NOTICE);
$sql_d = "DELETE FROM droits_speciaux WHERE id_statut = '".$b."'";
//echo "$sql_d ";
$query_d = mysqli_query($GLOBALS["mysqli"], $sql_d) OR trigger_error('Impossible de supprimer ce statut ds : '.mysqli_error($GLOBALS["mysqli"]), E_USER_NOTICE);
}
else {
// On va vérifier les droits un par un
// ne = notes élèves ; bs = bulletins simplifiés ; va = voir absences ; sa = saisir absences
// cdt = cahier de textes ; ee = emploi du temps des élèves ; te = tous les emplois du temps
for($m = 1 ; $m < $iter ; $m++){
$nbre2 = count($autorise[$m]);
// On vérifie si le droit est coché ou non
if ($test[$a][$m] == 'on') {
$vf = 'V';
}else{
$vf = 'F';
}
// On n'oublie pas de mettre à jour tous les fichiers adéquats
for($i = 0 ; $i < $nbre2 ; $i++){
//$sql_maj = "UPDATE droits_speciaux SET autorisation = '".$vf."' WHERE id_statut = '".$b."' AND nom_fichier = '".$autorise[$m][$i]."'";
//$query_maj = mysql_query($sql_maj) OR trigger_error("Mauvaise mise à jour : ".mysql_error(), E_USER_WARNING);
$sql="SELECT id FROM droits_speciaux WHERE id_statut = '".$b."' AND nom_fichier = '".$autorise[$m][$i]."'";
//echo "$sql ";
$query_select = mysqli_query($GLOBALS["mysqli"], $sql);
$result = mysqli_fetch_array($query_select);
if (!empty ($result)){
$sql="UPDATE droits_speciaux SET autorisation = '".$vf."' WHERE id_statut = '".$b."' AND nom_fichier = '".$autorise[$m][$i]."'";
}else{
$sql="INSERT INTO `droits_speciaux` VALUES ('','".$b."','".$autorise[$m][$i]."','".$vf."')";
}
//echo "$sql ";
$query_maj = mysqli_query($GLOBALS["mysqli"], $sql);
if (!$query_maj) {
$msg3 .= 'Erreur';
}
}
} // for($m = 1 ; $m < $iter ; $m++){
}
}
//print_r($test);
// On assure un message de confirmation si les modifications se sont bien passées
if ($msg3 === NULL) {
$msg3 .= '
Les modifications sont bien enregistrées.
';
}
}
// On récupère tous les statuts nouveaux qui existent
$aff_tableau = $aff_select = $aff_users = $selected = '';
$sql = "SELECT id, nom_statut FROM droits_statut ORDER BY nom_statut";
$query = mysqli_query($GLOBALS["mysqli"], $sql);
$nbre_statuts = mysqli_num_rows($query);
if ($query) {
for($b = 0 ; $b <= $iter ; $b++){
if ($b == 0) {
$aff_tableau2[$b] = '
Liste des droits
';
}elseif($b == $iter){
// On ajoute une ligne pour la suppression
$aff_tableau2[$b] = '
'."\n";
}
}
// On traite la partie sur les utilisateurs 'autre' pour leur définir le bon statut
// On traite les demandes de l'admin sur la définition des statuts des utilisateurs 'autre'
if ($action == "defStatut") {
check_token();
// On vérifie si cet utilisateur existe déjà
$query_v2 = mysqli_query($GLOBALS["mysqli"], "SELECT id_statut FROM droits_utilisateurs WHERE login_user = '".$login_user."'")
OR trigger_error('Impossible de vérifier le statut privé de cet utilisateur.', E_USER_WARNING);
$verif_v2 = mysqli_num_rows($query_v2);
if ($verif_v2 >= 1) {
// alors le statut de cet utilisateur existe, on va donc le mettre à jour
$sql_d = "UPDATE droits_utilisateurs SET id_statut = '".$statut_user."' WHERE login_user = '".$login_user."'";
}else{
$sql_d = "INSERT INTO droits_utilisateurs (id, id_statut, login_user) VALUES ('', '".$statut_user."', '".$login_user."')";
}
$query_statut = mysqli_query($GLOBALS["mysqli"], $sql_d) OR trigger_error('Impossible d\'enregistrer dans la base.'.mysqli_error($GLOBALS["mysqli"]), E_USER_WARNING);
if ($query_statut) {
$msg2 .= '
Modification enregistrée.
';
}
}
// On récupère les utilisateurs qui ont un statut 'autre'
$sql_u = "SELECT nom, prenom, login FROM utilisateurs
WHERE statut = 'autre'
AND etat = 'actif'
ORDER BY nom, prenom";
$query_u = mysqli_query($GLOBALS["mysqli"], $sql_u);
// On affiche la liste des utilisateurs avec un select des statuts privés
$i = 1;
while($tab = mysqli_fetch_array($query_u)){
// On récupère son statut s'il existe
$query_s = mysqli_query($GLOBALS["mysqli"], "SELECT id_statut FROM droits_utilisateurs WHERE login_user = '".$tab["login"]."'");
$statut = mysqli_fetch_array($query_s);
$aff_users .= '
Vous pouvez définir des statuts personnalisés, ayant une combinaison particulière de droits.
Pour pouvoir ensuite attribuer (ci-dessous) un statut personnalisé à un utilisateur, il faut d'abord l'enregistrer avec un statut générique "autre"
(CREER un personnel ou MODIFIER un personnel).