security_check(); if ($resultat_session == 'c') { header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes"); die(); } else if ($resultat_session == '0') { header("Location: ../logout.php?auto=1"); die(); } if (!checkAccess()) { header("Location: ../logout.php?auto=1"); die(); } $orderby = isset($_GET['orderby']) ? $_GET['orderby'] : (isset($_POST['orderby']) ? $_POST["orderby"] : 'priority,nom_complet'); if ($orderby != "nom_court" AND $orderby != "nom_complet" AND $orderby != "priority, nom_court") { $orderby = "priority,nom_complet"; } $msg = null; if (isset($_POST['action'])) { check_token(); $error = false; if ($_POST['action'] == "add") { // On enregistre une nouvelle catégorie // On filtre un peu if (!is_numeric($_POST['priority'])) $_POST['priority'] = "0"; // Le reste passera sans soucis, mais on coupe quand même si jamais c'est trop long if (mb_strlen($_POST['nom_court']) > 250) $_POST['nom_court'] = mb_substr($_POST['nom_court'], 0, 250); if (mb_strlen($_POST['nom_complet']) > 250) $_POST['nom_complet'] = mb_substr($_POST['nom_complet'], 0, 250); // On enregistre if ($_POST['nom_court'] == '') { $msg .= "Le nom court ne peut pas être vide.
"; $error = true; $res = false; } if (my_strtolower($_POST['nom_court']) == 'aucune') { $msg .= "Le nom court ne peut pas être 'Aucune'.
"; $error = true; $res = false; } if ($_POST['nom_complet'] == '') { $msg .= "L'intitulé ne peut pas être vide.
"; $error = true; $res = false; } if (!$error) { $res = mysqli_query($GLOBALS["mysqli"], "INSERT INTO matieres_categories SET nom_court = '" . ($_POST['nom_court']) . "', nom_complet = '" . ($_POST['nom_complet']) . "', priority = '" . $_POST["priority"] . "'"); } if (!$res) { $msg .= "Erreur lors de l'enregistrement de la nouvelle catégorie.
"; echo mysqli_error($GLOBALS["mysqli"]); } } elseif ($_POST['action'] == "edit") { // On met à jour une catégorie // On filtre un peu if (!is_numeric($_POST['priority'])) $_POST['priority'] = "0"; if (!is_numeric($_POST['categorie_id'])) $_POST['categorie_id'] = "0"; // Le reste passera sans soucis, mais on coupe quand même si jamais c'est trop long if (mb_strlen($_POST['nom_court']) > 250) $_POST['nom_court'] = mb_substr($_POST['nom_court'], 0, 250); if (mb_strlen($_POST['nom_complet']) > 250) $_POST['nom_complet'] = mb_substr($_POST['nom_complet'], 0, 250); if ($_POST['nom_court'] == '') { $msg .= "Le nom court ne peut pas être vide.
"; $error = true; $res = false; } if (my_strtolower($_POST['nom_court']) == 'aucune') { $msg .= "Le nom court ne peut pas être 'Aucune'.
"; $error = true; $res = false; } if ($_POST['nom_complet'] == '') { $msg .= "L'intitulé ne peut pas être vide.
"; $error = true; $res = false; } if (!$error) { // On enregistre $res = mysqli_query($GLOBALS["mysqli"], "UPDATE matieres_categories SET nom_court = '" . ($_POST['nom_court']) . "', nom_complet = '" . ($_POST['nom_complet']) . "', priority = '" . $_POST["priority"] . "' WHERE id = '".$_POST['categorie_id']."'"); } if (!$res) $msg .= "Erreur lors de la mise à jour de la catégorie."; } elseif($_POST['action']=='modif_ordre_categories') { check_token(); $tab_priorites_categories=array(); $tab_priorites_categories2=array(); $temoin_pb_ordre_categories="n"; foreach($_POST as $key => $value) { if(preg_match("/^priority_/", $key)) { if(in_array($value, $tab_priorites_categories)) { $temoin_pb_ordre_categories="y"; $value=max($tab_priorites_categories)+1; } $tab_priorites_categories[]=$value; $cat_id=preg_replace("/^priority_/", "", $key); $sql="UPDATE matieres_categories SET priority = '" . $value . "' WHERE id = '".$cat_id."';"; //echo "$sql
"; $res = mysqli_query($GLOBALS["mysqli"], $sql); if (!$res) $msg .= "Erreur lors de la mise à jour de la catégorie."; $tab_priorites_categories2[$cat_id]=$value; } } if(isset($_POST['forcer_ordre_categories_toutes_classes'])) { $sql="SELECT id FROM classes;"; //echo "$sql
"; $res_clas=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_clas)>0) { while($lig_clas=mysqli_fetch_object($res_clas)) { foreach($tab_priorites_categories2 as $cat_id => $priorite) { $sql="SELECT * FROM j_matieres_categories_classes WHERE classe_id='".$lig_clas->id."' AND categorie_id='".$cat_id."';"; //echo "$sql
"; $res_cat_clas=mysqli_query($GLOBALS["mysqli"], $sql); if (mysqli_num_rows($res_cat_clas)==0) { $sql="INSERT INTO j_matieres_categories_classes SET classe_id='".$lig_clas->id."', categorie_id='".$cat_id."', priority='".$priorite."';"; //echo "$sql
"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); if(!$insert) { $msg.="Erreur lors de la définition de l'ordre de la catégorie n°".$cat_id." pour la classe ".get_nom_classe($lig_clas->id)."
"; } } else { $sql="UPDATE j_matieres_categories_classes SET priority='".$priorite."' WHERE (classe_id='".$lig_clas->id."' and categorie_id='".$cat_id."');"; //echo "$sql
"; $update=mysqli_query($GLOBALS["mysqli"], $sql); if(!$update) { $msg.="Erreur lors de la mise à jour de l'ordre de la catégorie n°".$cat_id." pour la classe ".get_nom_classe($lig_clas->id)."
"; } } } } } } if($temoin_pb_ordre_categories=="y") { $msg.="
Anomalie : Les catégories de matières ne doivent pas avoir le même rang.
Cela risque de provoquer des problèmes sur les bulletins.
Des mesures ont été prises pour imposer des ordres différents, mais il se peut que l'ordre ne vous convienne pas.
\n"; } else { $msg.="Modifications enregistrées.
"; } } elseif ($_POST['action'] == "delete") { // On teste d'abord l'ID if (!is_numeric($_POST['categorie_id'])) { // Inutile d'en dire plus... $msg .= "Erreur."; } else { // On a un ID valide. // Si c'est l'ID 1, on ne supprime pas. C'est la catégorie par défaut if ($_POST['categorie_id'] == 1) { $msg .= "Vous ne pouvez pas supprimer la catégorie par défaut !"; } else { // On teste l'utilisation de cette catégorie $res = mysqli_query($GLOBALS["mysqli"], "SELECT matiere FROM matieres WHERE categorie_id = '" . $_POST['categorie_id'] ."'"); $test = mysqli_num_rows($res); //$res2 = mysql_query("SELECT DISTINCT id_groupe, c.id, c.classe FROM j_groupes_classes jgc, classes c WHERE c.id=jgc.id_classe AND categorie_id='".$_POST['categorie_id']."'"); $res2 = mysqli_query($GLOBALS["mysqli"], "SELECT DISTINCT c.id, c.classe FROM j_groupes_classes jgc, classes c WHERE c.id=jgc.id_classe AND categorie_id='".$_POST['categorie_id']."'"); $test2 = mysqli_num_rows($res2); if ($test>0) { // On a des entrées... la catégorie a déjà été associée à des matières, donc on ne la supprime pas. $liste_matieres_associees=""; while($lig=mysqli_fetch_object($res)) { if($liste_matieres_associees!='') {$liste_matieres_associees.=", ";} $liste_matieres_associees.="".$lig->matiere.""; } $msg .= "La catégorie n'a pas pu être supprimée, car elle a déjà été associée à des matières ($liste_matieres_associees).
"; } elseif ($test2>0) { $liste_classes_associees=""; while($lig=mysqli_fetch_object($res2)) { if($liste_classes_associees!='') {$liste_classes_associees.=", ";} $liste_classes_associees.="".get_class_from_id($lig->id).""; } $msg .= "La catégorie n'a pas pu être supprimée, car elle a déjà été associée à des enseignements pour des classes ($liste_classes_associees).
"; } else { $res = mysqli_query($GLOBALS["mysqli"], "DELETE FROM matieres_categories WHERE id = '" . $_POST['categorie_id']."'"); if (!$res) { $msg .= "Erreur lors de la suppression de la catégorie.
"; } else { $msg .= "La catégorie a bien été supprimée.
"; } } } } } } elseif((isset($_GET['action']))&&($_GET['action'] == "corrige_accents_html")) { check_token(); $tab = array_flip (get_html_translation_table(HTML_ENTITIES)); $sql="SELECT * FROM matieres_categories;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { while($lig=mysqli_fetch_object($res)) { $correction=ensure_utf8(strtr($lig->nom_complet, $tab)); if($lig->nom_complet!=$correction) { $sql="UPDATE matieres_categories SET nom_complet='$correction' WHERE id='$lig->id';"; //echo "$sql
"; $update=mysqli_query($GLOBALS["mysqli"], $sql); if($update) { $msg .= "Correction de l'encodage d'un nom de catégorie de matière en '$correction'
"; } else { $msg .= "Erreur lors de la correction de l'encodage du nom de catégorie de matière '$lig->nom_complet' en '$correction'
"; } } } } unset($_GET['action']); } //**************** EN-TETE ************************************** $titre_page = "Gestion des catégories de matières"; require_once("../lib/header.inc.php"); //**************** FIN EN-TETE ********************************** //debug_var(); if (isset($_GET['action'])) { // On a une action : soit on ajoute soit on édite soit on delete ?>

Retour Retour

"; echo add_token_field(); echo ""; echo "

Nom court (utilisé dans les outils de configuration) :

"; echo "

Intitulé complet (utilisé sur les documents officiels) :

"; echo "

Priorité d'affichage par défaut : "; echo ""; echo "

"; echo ""; echo "

"; echo ""; } elseif ($_GET['action'] == "edit") { // On édite la catégorie existante if (!is_numeric($_GET['categorie_id'])) $_GET['categorie_id'] == 0; $res = mysqli_query($GLOBALS["mysqli"], "SELECT id, nom_court, nom_complet, priority FROM matieres_categories WHERE id = '" . $_GET['categorie_id'] . "'"); $current_cat = mysqli_fetch_array($res, MYSQLI_ASSOC); if ($current_cat) { if($current_cat["nom_court"]=='Aucune') { echo "

ANOMALIE : Il ne devrait pas exister de catégorie intitulée 'Aucune'.
Voir http://www.sylogix.org/wiki/gepi/Enseignement_invisible et http://www.sylogix.org/wiki/gepi/Suppr_Cat_Aucune pour des explications

\n"; } echo "
"; echo add_token_field(); echo ""; echo ""; //echo "

Nom court (utilisé dans les outils de configuration) :

"; //echo "

Intitulé complet (utilisé sur les documents officiels) :

"; echo "

Nom court (utilisé dans les outils de configuration) :

"; echo "

Intitulé complet (utilisé sur les documents officiels) :

"; echo "

Priorité d'affichage par défaut : "; echo ""; echo "

"; echo ""; echo "

"; echo "
"; } } } else { // Pas d'action. On affiche la liste des rubriques ?>

Retour Retour | Ajouter une catégorie

0) { while($lig_cat=mysqli_fetch_object($res_cat)) { $current_priority=$lig_cat->priority; if(in_array($current_priority, $tab_priorites_categories)) { $temoin_pb_ordre_categories="y"; } $tab_priorites_categories[]=$current_priority; } } if($temoin_pb_ordre_categories=="y") { echo "

Anomalie : Les catégories de matières ne doivent pas avoir le même rang.
Cela risque de provoquer des problèmes sur les bulletins.
Vous devriez corriger.

\n"; } echo "
\n"; echo "
\n"; echo add_token_field(); ?> 0) { $max_priority_cat=old_mysql_result($get_max_cat, 0, "priority"); } $temoin_anomalie_categ_Aucune='n'; $alt=1; $res = mysqli_query($GLOBALS["mysqli"], "SELECT id, nom_court, nom_complet, priority FROM matieres_categories ORDER BY $orderby"); while ($current_cat = mysqli_fetch_array($res, MYSQLI_ASSOC)) { $alt=$alt*(-1); echo "\n"; //echo "\n"; //echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; if($current_cat["nom_court"]=='Aucune') {$temoin_anomalie_categ_Aucune='y';} } echo "

Nom court

Intitulé complet

Ordre d'affichage
par défaut

Supprimer

".html_entity_decode($current_cat["nom_court"])."".html_entity_decode($current_cat["nom_complet"])."".$current_cat["nom_court"]."".$current_cat["nom_complet"].""; echo "\n"; //echo $current_cat["priority"]; echo ""; if ($current_cat["id"] != "1") { echo "\n"; echo add_token_field(); echo "\n"; echo "\n"; echo "\n\n"; } else { echo "Catégorie par défaut (suppression impossible)"; } echo "
\n"; echo "

\n"; if($temoin_anomalie_categ_Aucune=='y') { echo "

ANOMALIE : Il ne devrait pas exister de catégorie intitulée 'Aucune'.
Voir http://www.sylogix.org/wiki/gepi/Enseignement_invisible et http://www.sylogix.org/wiki/gepi/Suppr_Cat_Aucune pour des explications

\n"; } $tab = array_flip (get_html_translation_table(HTML_ENTITIES)); $sql="SELECT * FROM matieres_categories;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { $alerte_accents_html="

Attention : Une ou des catégories ont des accents HTML dans leur nom complet (accents enregistrés sous forme HTML dans la base de données).
Cela peut perturber l'affichage des noms de catégories de matières dans les bulletins PDF (et ailleurs peut-être)

\n\n"; echo "

Vous pouvez corriger d'un clic ce problème.

\n"; } } echo "

NOTES :

\n"; } require("../lib/footer.inc.php"); ?>