284 lines
13 KiB
PHP
Executable File
284 lines
13 KiB
PHP
Executable File
<?php
|
|
require_once __ROOT__.'/manager/security.php';
|
|
require_once __ROOT__.'/manager/database.php';
|
|
|
|
/***********************************************************
|
|
* *
|
|
* MANAGER DES UTILISATEURS *
|
|
* *
|
|
************************************************************
|
|
* *
|
|
* [0] Constantes *
|
|
* [1] ROUTAGE de niveau 1 *
|
|
* [2] Création d'un groupe *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
***********************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* [1] ROUTAGE DE NIVEAU 1
|
|
============================================================*/
|
|
function groups_switch_level_1($request, $answer){
|
|
|
|
switch( $request->level_1 ){
|
|
|
|
/************************/
|
|
/* création d'un groupe */
|
|
/************************/
|
|
case 'create': if( permission('admin') ){
|
|
|
|
$areSetParam = isset($request->nom) ; // l'argument existe
|
|
$typeOkParam = $areSetParam && is_string($request->nom); // si c'est une string
|
|
$nEmptyParam = $typeOkParam && strlen($request->nom) > 0; // d'au moins 1 caractère
|
|
$nomCheck = $nEmptyParam && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->nom); // nom bon format
|
|
|
|
if( $nomCheck ){ // si tout les paramètres sont bons
|
|
$answer->request = DataBase::getInstance()->creerGroupe($request->nom);
|
|
}else
|
|
$answer->request = 'param_error';
|
|
|
|
}else
|
|
$answer->request = 'permission_error';
|
|
break;
|
|
|
|
/***********************************/
|
|
/* ajout d'un étudiant à un groupe */
|
|
/***********************************/
|
|
case 'add': if( permission('admin') ){
|
|
|
|
$areSetParam = isset($request->etudiant) && isset($request->groupe) && isset($request->semestre) && isset($request->annee); // les arguments existent
|
|
$typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->groupe) && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings
|
|
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && strlen($request->groupe) > 0; // d'au moins 1 caractère
|
|
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format
|
|
$groupeCheck = $etudiantCheck && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format
|
|
$semestreCheck = $groupeCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format
|
|
$anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
|
|
|
|
if( $anneeCheck ){ // si tout les paramètres sont bons
|
|
$answer->request = DataBase::getInstance()->ajouterEtudiantGroupe($request->etudiant, $request->groupe, $request->semestre, $request->annee);
|
|
}else
|
|
$answer->request = 'param_error';
|
|
|
|
}else
|
|
$answer->request = 'permission_error';
|
|
break;
|
|
|
|
/*****************************************/
|
|
/* retourne les utilisateurs d'un groupe */
|
|
/*****************************************/
|
|
case 'userlist': if( connected() ){
|
|
|
|
$areSetParam = isset($request->groupe) && isset($request->semestre) && isset($request->annee); // les arguments existent
|
|
$typeOkParam = $areSetParam && is_string($request->groupe) && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings
|
|
$nEmptyParam = $typeOkParam && strlen($request->groupe) > 0; // d'au moins 1 caractère
|
|
$groupeCheck = $nEmptyParam && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format
|
|
$semestreCheck = $groupeCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format
|
|
$anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
|
|
|
|
if( $anneeCheck ){ // si tout les paramètres sont bons
|
|
$userlist = DataBase::getInstance()->listeEtudiantsGroupe($request->groupe, $request->semestre, $request->annee);
|
|
|
|
if( is_array($userlist) ){ // si on a récupéré la liste des utilisateurs
|
|
$answer->userlist = $userlist;
|
|
$answer->request = 'success';
|
|
}else // si on a pas récupéré de liste, alors c'est que $userlist est un message d'erreur
|
|
$answer->request = $userlist;
|
|
|
|
}else
|
|
$answer->request = 'param_error';
|
|
|
|
}else
|
|
$answer->request = 'permission_error';
|
|
break;
|
|
|
|
/**************************************/
|
|
/* retourne le semestre d'un étudiant */
|
|
/**************************************/
|
|
case 'getSemestre': if( connected() ){
|
|
|
|
$areSetParam = isset($request->etudiant); // les arguments existent
|
|
$typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings
|
|
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0; // d'au moins 1 caractère
|
|
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format
|
|
|
|
if( $etudiantCheck ){ // si tout les paramètres sont bons
|
|
|
|
$semestre = DataBase::getInstance()->studentCurrent($request->etudiant, $_SESSION['semestre_pair'], $_SESSION['annee']);
|
|
|
|
if( is_numeric($semestre) ){ // si c'est un nombre, c'est que c'est bon
|
|
$answer->request = 'success';
|
|
$answer->semestre = $semestre;
|
|
}else
|
|
$answer->request = $semestre;
|
|
|
|
}else
|
|
$answer->request = 'param_error';
|
|
|
|
}else
|
|
$answer->request = 'permission_error';
|
|
break;
|
|
|
|
|
|
/*******************************************************************/
|
|
/* retourne les utilisateurs de tous les groupes du semestre donné */
|
|
/*******************************************************************/
|
|
case 'grouplist': if( connected() ){
|
|
|
|
$areSetParam = isset($request->semestre) && isset($request->annee); // les arguments existent
|
|
$typeOkParam = $areSetParam && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings
|
|
$semestreCheck = $typeOkParam && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format
|
|
$anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
|
|
|
|
if( $anneeCheck ){
|
|
|
|
$grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesSemestre($request->semestre, $request->annee);
|
|
|
|
if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs
|
|
$answer->grouplist = $grouplist;
|
|
$answer->request = 'success';
|
|
}else // si on a pas récupéré de liste, alors c'est que $grouplist est un message d'erreur
|
|
$answer->request = $grouplist;
|
|
|
|
}else
|
|
$answer->request = 'param_error';
|
|
|
|
}else
|
|
$answer->request = 'permission_error';
|
|
break;
|
|
|
|
/*****************************************************************************/
|
|
/* retourne les utilisateurs de tous les groupes des modules d'un enseignant */
|
|
/*****************************************************************************/
|
|
case 'grouplistForTeacher': if( permission('teacher') || permission('admin') ){
|
|
|
|
$areSetParam = isset($request->annee) && isset($request->enseignant); // les arguments existent
|
|
$typeOkParam = $areSetParam && is_numeric($request->annee) && is_string($request->enseignant); // si c'est des strings
|
|
$anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
|
|
$enseignantCheck = $anneeCheck && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // enseignant (annee) bon format
|
|
|
|
if( $enseignantCheck ){
|
|
|
|
$grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesEnseignant($request->annee, $_SESSION['semestre_pair'], $request->enseignant);
|
|
|
|
if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs
|
|
$answer->grouplist = $grouplist;
|
|
$answer->request = 'success';
|
|
}else // si on a pas récupéré de liste, alors c'est que $grouplist est un message d'erreur
|
|
$answer->request = $grouplist;
|
|
|
|
}else
|
|
$answer->request = 'param_error';
|
|
|
|
}else
|
|
$answer->request = 'permission_error';
|
|
break;
|
|
|
|
/********************************************************************/
|
|
/* retourne les utilisateurs de tous les groupes d'une année donnée */
|
|
/********************************************************************/
|
|
case 'grouplistForYear': if( permission('teacher') || permission('admin') ){
|
|
|
|
$areSetParam = isset($request->annee); // les arguments existent
|
|
$typeOkParam = $areSetParam && is_numeric($request->annee); // si c'est des strings
|
|
$anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
|
|
|
|
if( $anneeCheck ){
|
|
|
|
// $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, $_SESSION['semestre_pair']);
|
|
$grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, null);
|
|
|
|
if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs
|
|
$answer->grouplist = $grouplist;
|
|
$answer->request = 'success';
|
|
}else // si on a pas récupéré de liste, alors c'est que $grouplist est un message d'erreur
|
|
$answer->request = $grouplist;
|
|
|
|
}else
|
|
$answer->request = 'param_error';
|
|
|
|
}else
|
|
$answer->request = 'permission_error';
|
|
break;
|
|
|
|
/****************************************************************/
|
|
/* retourne la liste des semestres/années présentes dans la BDD */
|
|
/****************************************************************/
|
|
case 'getSemestres': if( permission('admin') ){
|
|
|
|
$answer->yearList = DataBase::getInstance()->getListeSemestres();
|
|
$answer->request = 'success';
|
|
|
|
}else
|
|
$answer->request = 'permission_error';
|
|
break;
|
|
|
|
|
|
/**********************************************/
|
|
/* retourne le nom du groupe d'un utilisateur */
|
|
/**********************************************/
|
|
case 'get': if( connected() ){
|
|
|
|
$areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee); // les arguments existent
|
|
$typeOkParam = $areSetParam && is_string($request->etudiant) && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings
|
|
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0; // d'au moins 1 caractère
|
|
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format
|
|
$semestreCheck = $etudiantCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format
|
|
$anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
|
|
|
|
|
|
$groupe = DataBase::getInstance()->getGroupeEtudiant($request->etudiant, $request->semestre, $request->annee);
|
|
|
|
if( $groupe != 'error' ){ // si on a récupéré quelque chose
|
|
$answer->groupe = $groupe;
|
|
$answer->request = 'success';
|
|
}else // si on a pas "success", alors c'est que $groupe est un message d'erreur
|
|
$answer->request = 'error';
|
|
|
|
}else
|
|
$answer->request = 'permission_error';
|
|
break;
|
|
|
|
/************************************************/
|
|
/* déplace un étudiant de son groupe à un autre */
|
|
/************************************************/
|
|
case 'move': if( permission('admin') ){
|
|
|
|
$areSetParam = isset($request->etudiant) && isset($request->groupe) && isset($request->semestre); // les arguments existent
|
|
$typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->groupe); // si c'est des strings
|
|
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && strlen($request->groupe) > 0 && is_numeric($request->semestre); // d'au moins 1 caractère
|
|
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format
|
|
$groupeCheck = $etudiantCheck && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format
|
|
|
|
if( $groupeCheck ){ // si param ok
|
|
$answer->request = DataBase::getInstance()->deplacerEtudiant($request->etudiant, $request->groupe, $request->semestre);
|
|
}else
|
|
$answer->request = 'param_error';
|
|
|
|
}else
|
|
$answer->request = 'permission_error';
|
|
break;
|
|
|
|
/***********/
|
|
/* DEFAULT */
|
|
/***********/
|
|
default:
|
|
$answer->request = 'unknown_level_1';
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
?>
|