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();
}
if(mb_strtolower(mb_substr(getSettingValue('active_mod_discipline'),0,1))!='y') {
$mess=rawurlencode("Vous tentez d accéder au module Discipline qui est désactivé !");
tentative_intrusion(1, "Tentative d'accès au module Discipline qui est désactivé.");
header("Location: ../accueil.php?msg=$mess");
die();
}
include "../class_php/class_menu_general.php";
//**************** EN-TETE *****************
$titre_page = "Discipline : Index";
include_once("../lib/header_template.inc.php");
//**************** FIN EN-TETE *****************
/****************************************************************
FIN HAUT DE PAGE
****************************************************************/
if (!suivi_ariane($_SERVER['PHP_SELF'],$titre_page))
echo "erreur lors de la création du fil d'ariane";
/****************************************************************
****************************************************************/
$mod_disc_terme_incident=getSettingValue('mod_disc_terme_incident');
if($mod_disc_terme_incident=="") {$mod_disc_terme_incident="incident";}
$mod_disc_terme_sanction=getSettingValue('mod_disc_terme_sanction');
if($mod_disc_terme_sanction=="") {$mod_disc_terme_sanction="sanction";}
$mod_disc_terme_avertissement_fin_periode=getSettingValue('mod_disc_terme_avertissement_fin_periode');
if($mod_disc_terme_avertissement_fin_periode=="") {$mod_disc_terme_avertissement_fin_periode="avertissement de fin de période";}
if(preg_match("/^[AEIOUY]/i", ensure_ascii($mod_disc_terme_avertissement_fin_periode))) {
$prefixe_mod_disc_terme_avertissement_fin_periode_de="d'";
$prefixe_mod_disc_terme_avertissement_fin_periode_le="l'";
}
else {
$prefixe_mod_disc_terme_avertissement_fin_periode_de="de ";
$prefixe_mod_disc_terme_avertissement_fin_periode_le="le ";
}
//debug_var();
/*
echo "
Retour";
echo "
\n";
echo "Ce module est destiné à saisir et suivre les incidents et sanctions.
\n";
*/
//*********************************
// création des tables si besoin
//*********************************
$sql="CREATE TABLE IF NOT EXISTS s_incidents (
id_incident INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
declarant VARCHAR( 50 ) NOT NULL ,
date DATE NOT NULL ,
heure VARCHAR( 20 ) NOT NULL ,
id_lieu INT( 11 ) NOT NULL ,
nature VARCHAR( 255 ) NOT NULL ,
description TEXT NOT NULL,
etat VARCHAR( 20 ) NOT NULL
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
$creation=mysqli_query($GLOBALS["mysqli"], $sql);
// Avec cette table on ne gère pas un historique des modifications de déclaration...
$test1 = mysqli_num_rows(mysqli_query($GLOBALS["mysqli"], "SHOW COLUMNS FROM s_incidents LIKE 'id_lieu'"));
if ($test1 == 0) {
$query = mysqli_query($GLOBALS["mysqli"], "ALTER TABLE s_incidents ADD id_lieu INT( 11 ) NOT NULL AFTER heure;");
}
$sql="SHOW TABLES LIKE 's_qualites';";
$test_table=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test_table)==0) {
$sql="CREATE TABLE IF NOT EXISTS s_qualites (
id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
qualite VARCHAR( 50 ) NOT NULL
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
$creation=mysqli_query($GLOBALS["mysqli"], $sql);
if($creation) {
$tab_qualite=array("Responsable","Victime","Témoin","Autre");
for($loop=0;$loop";
$test=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test)==0) {
$sql="INSERT INTO s_qualites SET qualite='".$tab_qualite[$loop]."';";
$insert=mysqli_query($GLOBALS["mysqli"], $sql);
}
}
}
}
$sql="SHOW TABLES LIKE 's_types_sanctions2';";
$test_table=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test_table)==0) {
echo "Une mise à jour de la base est requise !
\n";
/*
$sql="CREATE TABLE IF NOT EXISTS s_types_sanctions2 (
id_nature INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
nature VARCHAR( 255 ) NOT NULL,
type VARCHAR( 255 ) NOT NULL
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
$creation=mysql_query($sql);
if($creation) {
$tab_type=array("Exclusion", "Retenue", "Travail", "Avertissement travail","Avertissement comportement");
for($loop=0;$loop";
$test=mysql_query($sql);
if(mysql_num_rows($test)==0) {
if($loop<3) {$type=mb_strtolower($tab_type[$loop]);} else {$type="autre";}
$sql="INSERT INTO s_types_sanctions2 SET nature='".$tab_type[$loop]."', type='".$type."';";
$insert=mysql_query($sql);
}
}
}
*/
}
$sql="CREATE TABLE IF NOT EXISTS s_autres_sanctions (
id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
id_sanction INT( 11 ) NOT NULL ,
id_nature INT( 11 ) NOT NULL ,
description TEXT NOT NULL
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
$creation=mysqli_query($GLOBALS["mysqli"], $sql);
$sql="SHOW TABLES LIKE 's_mesures';";
$test_table=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test_table)==0) {
$sql="CREATE TABLE IF NOT EXISTS s_mesures (
id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
type ENUM('prise','demandee') ,
mesure VARCHAR( 50 ) NOT NULL ,
commentaire TEXT NOT NULL
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
$creation=mysqli_query($GLOBALS["mysqli"], $sql);
if($creation) {
// Mesures prises
$tab_mesure=array("Travail supplémentaire","Mot dans le carnet de liaison");
for($loop=0;$loop";
$test=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test)==0) {
$sql="INSERT INTO s_mesures SET mesure='".$tab_mesure[$loop]."', type='prise';";
$insert=mysqli_query($GLOBALS["mysqli"], $sql);
}
}
// Mesures demandées
$tab_mesure=array("Retenue","Exclusion");
for($loop=0;$loop";
$test=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test)==0) {
$sql="INSERT INTO s_mesures SET mesure='".$tab_mesure[$loop]."', type='demandee';";
$insert=mysqli_query($GLOBALS["mysqli"], $sql);
}
}
}
}
$test1 = mysqli_num_rows(mysqli_query($GLOBALS["mysqli"], "SHOW COLUMNS FROM s_mesures LIKE 'commentaire'"));
if ($test1 == 0) {
$query = mysqli_query($GLOBALS["mysqli"], "ALTER TABLE s_mesures ADD commentaire TEXT NOT NULL AFTER mesure;");
}
$sql="CREATE TABLE IF NOT EXISTS s_traitement_incident (
id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
id_incident INT( 11 ) NOT NULL ,
login_ele VARCHAR( 50 ) NOT NULL ,
login_u VARCHAR( 50 ) NOT NULL ,
id_mesure INT( 11 ) NOT NULL
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
$creation=mysqli_query($GLOBALS["mysqli"], $sql);
$sql="SHOW TABLES LIKE 's_lieux_incidents';";
$test_table=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test_table)==0) {
$sql="CREATE TABLE IF NOT EXISTS s_lieux_incidents (
id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
lieu VARCHAR( 255 ) NOT NULL
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
$creation=mysqli_query($GLOBALS["mysqli"], $sql);
if($creation) {
$tab_lieu=array("Classe","Couloir","Cour","Réfectoire","Autre");
for($loop=0;$loop";
$test=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test)==0) {
$sql="INSERT INTO s_lieux_incidents SET lieu='".$tab_lieu[$loop]."';";
$insert=mysqli_query($GLOBALS["mysqli"], $sql);
}
}
}
}
$sql="CREATE TABLE IF NOT EXISTS s_protagonistes (
id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
id_incident INT NOT NULL ,
login VARCHAR( 50 ) NOT NULL ,
statut VARCHAR( 50 ) NOT NULL ,
qualite VARCHAR( 50 ) NOT NULL,
avertie ENUM('N','O') NOT NULL DEFAULT 'N'
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
$creation=mysqli_query($GLOBALS["mysqli"], $sql);
$test1 = mysqli_num_rows(mysqli_query($GLOBALS["mysqli"], "SHOW COLUMNS FROM s_protagonistes LIKE 'avertie'"));
if ($test1 == 0) {
$query = mysqli_query($GLOBALS["mysqli"], "ALTER TABLE s_protagonistes ADD avertie ENUM('N','O') NOT NULL DEFAULT 'N' AFTER qualite;");
}
$sql="CREATE TABLE IF NOT EXISTS s_sanctions (
id_sanction INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
login VARCHAR( 50 ) NOT NULL ,
description TEXT NOT NULL ,
nature VARCHAR( 255 ) NOT NULL ,
id_nature_sanction INT(11),
effectuee ENUM( 'N', 'O' ) NOT NULL ,
id_incident INT( 11 ) NOT NULL
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
$creation=mysqli_query($GLOBALS["mysqli"], $sql);
$sql="CREATE TABLE IF NOT EXISTS s_communication (
id_communication INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
id_incident INT( 11 ) NOT NULL ,
login VARCHAR( 50 ) NOT NULL ,
nature VARCHAR( 255 ) NOT NULL ,
description TEXT NOT NULL
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
$creation=mysqli_query($GLOBALS["mysqli"], $sql);
$sql="CREATE TABLE IF NOT EXISTS s_travail (
id_travail INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
id_sanction INT( 11 ) NOT NULL ,
date_retour DATE NOT NULL ,
heure_retour VARCHAR( 20 ) NOT NULL ,
travail TEXT NOT NULL
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
$creation=mysqli_query($GLOBALS["mysqli"], $sql);
$sql="CREATE TABLE IF NOT EXISTS s_retenues (
id_retenue INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
id_sanction INT( 11 ) NOT NULL ,
date DATE NOT NULL ,
heure_debut VARCHAR( 20 ) NOT NULL ,
duree FLOAT NOT NULL ,
travail TEXT NOT NULL ,
lieu VARCHAR( 255 ) NOT NULL
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
$creation=mysqli_query($GLOBALS["mysqli"], $sql);
$sql="CREATE TABLE IF NOT EXISTS s_exclusions (
id_exclusion INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
id_sanction INT( 11 ) NOT NULL ,
date_debut DATE NOT NULL ,
heure_debut VARCHAR( 20 ) NOT NULL ,
date_fin DATE NOT NULL ,
heure_fin VARCHAR( 20 ) NOT NULL,
travail TEXT NOT NULL ,
lieu VARCHAR( 255 ) NOT NULL
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
$creation=mysqli_query($GLOBALS["mysqli"], $sql);
$sql="CREATE TABLE IF NOT EXISTS s_alerte_mail (id int(11) unsigned NOT NULL auto_increment, id_classe smallint(6) unsigned NOT NULL, destinataire varchar(50) NOT NULL default '', PRIMARY KEY (id), INDEX (id_classe,destinataire)) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
$creation=mysqli_query($GLOBALS["mysqli"], $sql);
$test1 = mysqli_num_rows(mysqli_query($GLOBALS["mysqli"], "SHOW COLUMNS FROM s_incidents LIKE 'message_id';"));
if ($test1 == 0) {
$query = mysqli_query($GLOBALS["mysqli"], "ALTER TABLE s_incidents ADD message_id VARCHAR(50) NOT NULL;");
}
// L'état effectué ou non d'une sanction est dans la table s_sanctions plutôt s_retenues ou s_travail parce qu'il est plus simple de taper sur s_sanctions plutôt que sur les deux tables s_retenues ou s_travail
//***********************************
// Fin création des tables si besoin
//***********************************
$phrase_commentaire="";
$menuPage=array();
$menuTitre=array();
$nouveauItem = new itemGeneral();
//Début de la table configuration
//if($_SESSION['statut']=='administrateur') {
if(($_SESSION['statut']=='administrateur')||
(($_SESSION['statut']=='cpe')&&(
(getSettingAOui('GepiDiscDefinirLieuxCpe'))||
(getSettingAOui('GepiDiscDefinirRolesCpe'))||
(getSettingAOui('GepiDiscDefinirMesuresCpe'))||
(getSettingAOui('GepiDiscDefinirSanctionsCpe'))||
(getSettingAOui('GepiDiscDefinirNaturesCpe'))||
(getSettingAOui('GepiDiscDefinirCategoriesCpe'))||
(getSettingAOui('GepiDiscDefinirDestAlertesCpe'))
)
)||
(($_SESSION['statut']=='scolarite')&&(
(getSettingAOui('GepiDiscDefinirLieuxScol'))||
(getSettingAOui('GepiDiscDefinirRolesScol'))||
(getSettingAOui('GepiDiscDefinirMesuresScol'))||
(getSettingAOui('GepiDiscDefinirSanctionsScol'))||
(getSettingAOui('GepiDiscDefinirNaturesScol'))||
(getSettingAOui('GepiDiscDefinirCategoriesScol'))||
(getSettingAOui('GepiDiscDefinirDestAlertesScol'))
)
)
) {
/* ===== Titre du menu ===== */
$menuTitre[]=new menuGeneral;
end($menuTitre);
$a = key($menuTitre);
$menuTitre[$a]->classe='accueil';
$menuTitre[$a]->icone['chemin']='../images/icons/control-center.png';
$menuTitre[$a]->icone['titre']='';
$menuTitre[$a]->icone['alt']="";
$menuTitre[$a]->texte='Configuration du module';
$menuTitre[$a]->indexMenu=$a;
/* ===== Item du menu ===== */
/*
echo "\n";
*/
$nouveauItem = new itemGeneral();
$nouveauItem->chemin='/mod_discipline/destinataires_alertes.php';
if ($nouveauItem->acces($nouveauItem->chemin,$_SESSION['statut']))
{
$acces_ok="n";
if(($_SESSION['statut']=='administrateur')||
(($_SESSION['statut']=='cpe')&&(getSettingAOui('GepiDiscDefinirDestAlertesCpe')))||
(($_SESSION['statut']=='scolarite')&&(getSettingAOui('GepiDiscDefinirDestAlertesScol')))) {
$acces_ok="y";
$nouveauItem->titre="Définition des destinataires d'alertes" ;
$nouveauItem->expli="Permet de définir la liste des utilisateurs recevant un mail lors de la saisie/modification d'un ".$mod_disc_terme_incident."." ;
$nouveauItem->indexMenu=$a;
$menuPage[]=$nouveauItem;
}
}
unset($nouveauItem);
$nouveauItem = new itemGeneral();
$nouveauItem->chemin='/mod_discipline/delegation.php';
if ($nouveauItem->acces($nouveauItem->chemin,$_SESSION['statut']))
{
$nouveauItem->titre="Gestion des délégations d'exclusions temporaires" ;
$nouveauItem->expli="Permet de gérer la liste des délégataires pour la génération des courriers d'exclusion temporaire" ;
$nouveauItem->indexMenu=$a;
$menuPage[]=$nouveauItem;
}
unset($nouveauItem);
if(($_SESSION['statut']=='administrateur')||
(($_SESSION['statut']=='cpe')&&(getSettingAOui('OOoUploadCpeDiscipline')))||
(($_SESSION['statut']=='scolarite')&&(getSettingAOui('OOoUploadScolDiscipline')))) {
$nouveauItem = new itemGeneral();
// L'ancre pose un pb de test de droit.
$nouveauItem->chemin='/mod_ooo/gerer_modeles_ooo.php#MODULE_DISCIPLINE';
//$nouveauItem->chemin='/mod_ooo/gerer_modeles_ooo.php';
if ($nouveauItem->acces($nouveauItem->chemin,$_SESSION['statut']))
{
$nouveauItem->titre="Gestion des modèles OOo" ;
$nouveauItem->expli="Permet de gérer les modèles OOo associés au module Discipline." ;
$nouveauItem->indexMenu=$a;
$menuPage[]=$nouveauItem;
}
unset($nouveauItem);
}
}
if($_SESSION['statut']=="administrateur") {
$nouveauItem = new itemGeneral();
$nouveauItem->chemin='/mod_discipline/param_pointages.php';
if ($nouveauItem->acces($nouveauItem->chemin,$_SESSION['statut']))
{
$nouveauItem->titre="Paramétrer le pointage de ".$mod_disc_terme_menus_incidents;
$nouveauItem->expli="Paramétrer le dispositif de pointage des ".$mod_disc_terme_menus_incidents.".";
$nouveauItem->indexMenu=$a;
$menuPage[]=$nouveauItem;
}
unset($nouveauItem);
}
//fin de la table configuration
//echo strftime("%Y-%m-%d %H:%M:%S")."
\n";
/*
// Table Signaler / saisir un incident
echo "\n";
// fin de table saisir
echo "\n";
*/
//Table Traiter
if(($_SESSION['statut']=='administrateur') || ($_SESSION['statut']=='cpe') || ($_SESSION['statut']=='scolarite')) {
/*
echo "\n";
*/
$ajout_titre= "";
if ($temoin) $ajout_titre= "(avec protagonistes)";
$nouveauItem->titre="Traiter les suites d'un ".$mod_disc_terme_incident." ".$ajout_titre;
$nouveauItem->expli="Traiter les suites d'un ".$mod_disc_terme_incident." : définir une punition ou une ".$mod_disc_terme_sanction ;
$nouveauItem->indexMenu=$a;
$menuPage[]=$nouveauItem;
}
unset($nouveauItem);
}
//Fin table traiter
/*
//Table afficher
echo "\n";
//Fin table afficher
echo $phrase_commentaire;
echo "
\n";
echo "NOTES
\n";
echo "\n";
echo "Une fois un incident clos, il ne peut plus être modifié et aucune sanction liée ne peut être ajoutée/modifiée/supprimée.
\n";
echo "Le module ne conserve pas un historique des modifications d'un incident.
Si plusieurs personnes modifient un incident, elles doivent le faire en bonne intelligence.
\n";
echo "Un professeur peut saisir un incident, mais ne peut pas saisir les sanctions.
Un professeur ne peut modifier que les incidents (non clos) qu'il a lui-même déclaré.
Il ne peut consulter que les incidents (et leurs suites) qu'il a déclarés, ou dont il est protagoniste, ou encore dont un des élèves, dont il est professeur principal, est protagoniste.
\n";
//echo "A FAIRE: Ajouter des tests 'changement()' dans les pages de saisie pour ne pas quitter une étape sans enregistrer.
\n";
echo "A FAIRE: Permettre de consulter d'autres incidents que les siens propres.
Eventuellement avec limitation aux élèves de ses classes.
\n";
echo "A FAIRE ENCORE: Permettre d'archiver les incidents/sanctions d'une année et vider les tables incidents/sanctions lors de l'initialisation pour éviter des blagues avec les login élèves réattribués à de nouveaux élèves (homonymie,...)
\n";
//echo " \n";
echo "
\n";
echo "
\n";
require("../lib/footer.inc.php");
*/
$tbs_microtime ="";
$tbs_pmv="";
require_once ("../lib/footer_template.inc.php");
/****************************************************************
On s'assure que le nom du gabarit est bien renseigné
****************************************************************/
if ((!isset($_SESSION['rep_gabarits'])) || (empty($_SESSION['rep_gabarits']))) {
$_SESSION['rep_gabarits']="origine";
}
//==================================
// Décommenter la ligne ci-dessous pour afficher les variables $_GET, $_POST, $_SESSION et $_SERVER pour DEBUG:
// $affiche_debug=debug_var2();
$nom_gabarit = '../templates/'.$_SESSION['rep_gabarits'].'/mod_discipline/mod_discipline_template.php';
$tbs_last_connection=""; // On n'affiche pas les dernières connexions
include($nom_gabarit);
// ------ on vide les tableaux -----
unset($menuPage);
unset($menuTitre);
?>