294 lines
12 KiB
PHP
Executable File
294 lines
12 KiB
PHP
Executable File
<?php require_once __ROOT__.'/manager/security.php';
|
|
|
|
|
|
/***********************************************************
|
|
* *
|
|
* MANAGER DES UTILISATEURS *
|
|
* *
|
|
************************************************************
|
|
* *
|
|
* [0] Constantes *
|
|
* [1] ROUTAGE de niveau 1 *
|
|
* [2] Création d'un groupe *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
***********************************************************/
|
|
|
|
|
|
|
|
|
|
class groupsManager{
|
|
|
|
/* [1] ROUTAGE DE NIVEAU 1
|
|
============================================================*/
|
|
public static function switch_level_1($request, $answer){
|
|
|
|
switch( $request->level_1 ){
|
|
|
|
/************************/
|
|
/* création d'un groupe */
|
|
/************************/
|
|
case 'create': if( false && permission('admin') ){
|
|
|
|
$areSetParam = isset($request->nom) ; // l'argument existe
|
|
$nomCheck = $areSetParam && checkParam($request->nom, 'groupe.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;
|
|
|
|
/*****************************************/
|
|
/* retourne les utilisateurs d'un groupe */
|
|
/*****************************************/
|
|
case 'userlist': if( permission('student') ){
|
|
|
|
$areSetParam = isset($request->etudiant) && isset($request->semestre); // les arguments existent
|
|
$etudiantCheck = $areSetParam && checkParam($request->etudiant, 'utilisateur.identifiant'); // etudiant (username) bon format
|
|
// $formationCheck = $etudiantCheck && checkParam($request->formation, 'auto_increment_id'); // formation (formation) bon format
|
|
$semestreCheck = $etudiantCheck && checkParam($request->semestre, 'auto_increment_id'); // semestre (rang) bon format
|
|
// $anneeCheck = $semestreCheck && checkParam($request->annee, 'semestre.annee'); // semestre (annee) bon format
|
|
|
|
if( $semestreCheck ){ // si tout les paramètres sont bons
|
|
$userlist = DataBase::getInstance()->listeEtudiantsGroupe($request->etudiant, $request->semestre);
|
|
|
|
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( permission('student') ){
|
|
|
|
$areSetParam = isset($request->etudiant); // les arguments existent
|
|
$etudiantCheck = $areSetParam && checkParam($request->etudiant, 'utilisateur.identifiant'); // 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( permission('student') || permission('master') || permission('admin') ){
|
|
|
|
$areSetParam = isset($request->semestre); // les arguments existent
|
|
// $formationCheck = $areSetParam && checkParam($request->formation, 'auto_increment_id'); // formation (formation) bon format
|
|
$semestreCheck = $areSetParam && checkParam($request->semestre, 'auto_increment_id'); // semestre (rang) bon format
|
|
// $anneeCheck = $semestreCheck && checkParam($request->annee, 'semestre.annee'); // semestre (annee) bon format
|
|
|
|
if( $semestreCheck ){
|
|
|
|
$grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesSemestre($request->semestre);
|
|
|
|
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
|
|
$anneeCheck = $areSetParam && checkParam($request->annee, 'semestre.annee'); // semestre (annee) bon format
|
|
$enseignantCheck = $anneeCheck && checkParam($request->enseignant, 'utilisateur.identifiant'); // 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('master') || permission('teacher') || permission('admin') ){
|
|
|
|
$areSetParam = isset($request->annee); // les arguments existent
|
|
$anneeCheck = $areSetParam && checkParam($request->annee, 'semestre.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('master') || permission('admin') ){
|
|
|
|
$answer->yearList = DataBase::getInstance()->getListeSemestres();
|
|
$answer->request = 'success';
|
|
|
|
}else
|
|
$answer->request = 'permission_error';
|
|
break;
|
|
|
|
|
|
/************************************************************/
|
|
/* déplace une liste d'étudiants de leurs groupe à un autre */
|
|
/************************************************************/
|
|
case 'move_multiple': if( permission('admin') && $_SESSION['annee'] >= DataBase::getInstance()->getSemestreInfoFromTime(time())['annee'] ){
|
|
|
|
$areSetParam = isset($request->etudiants) && isset($request->groupe) && isset($request->semestre); // les arguments existent
|
|
$typeOkParam = $areSetParam && is_array($request->etudiants) && is_numeric($request->groupe); // si c'est des strings
|
|
$nEmptyParam = $typeOkParam && count($request->etudiants) > 0 && is_numeric($request->semestre); // d'au moins 1 caractère
|
|
|
|
|
|
if( $nEmptyParam ){ // si param ok
|
|
$answer->request = DataBase::getInstance()->deplacerEtudiantMultiple($request->etudiants, $request->groupe, $request->semestre);
|
|
}else
|
|
$answer->request = 'param_error';
|
|
|
|
}else
|
|
$answer->request = 'permission_error';
|
|
break;
|
|
|
|
|
|
|
|
/******************************************/
|
|
/* la liste de TOUS les groupes de la BDD */
|
|
/******************************************/
|
|
case 'exhaustiveList': if( permission('master') || permission('admin') ){
|
|
|
|
$answer->grouplist = DataBase::getInstance()->getExhaustiveGroupList();
|
|
$answer->request = 'success';
|
|
|
|
}else
|
|
$answer->request = 'permission_error';
|
|
break;
|
|
|
|
|
|
|
|
|
|
/*******************************************/
|
|
/* intégration des élèves pour un semestre */
|
|
/*******************************************/
|
|
case 'addUserlist': if( permission('admin') ){
|
|
$areSetParam = isset($request->formationList) && isset($request->rang) && isset($request->annee);
|
|
$typeOkParam = $areSetParam && is_numeric($request->rang) && is_numeric($request->annee);
|
|
$verifiParam = $typeOkParam && $request->annee >= DataBase::getInstance()->getSemestreInfoFromTime(time())['annee'];
|
|
|
|
if( $verifiParam ){ // si tout les paramètres sont bons
|
|
DataBase::getInstance()->addUserlist($request->rang, $request->annee, $request->formationList);
|
|
$answer->request = 'success';
|
|
}else
|
|
$answer->request = 'param_error';
|
|
|
|
}else
|
|
$answer->request = 'permission_error';
|
|
break;
|
|
|
|
|
|
|
|
/***********************/
|
|
/* MOTEUR DE RECHERCHE */
|
|
/***********************/
|
|
case 'search':
|
|
//On vérifie qu'on a bien les mots clés
|
|
if (isset($request->keywords) && $request->keywords != '') {
|
|
//On explode les mots clés
|
|
$keys = explode(' ', $request->keywords);
|
|
|
|
//Pour chaque mot clé on lance une recherche dans la bdd
|
|
foreach ($keys as $mot) {
|
|
$retour = null;
|
|
//On cherche d'abord en fonction du nom...
|
|
$retour = DataBase::searchForUsers($mot);
|
|
//Si il y a un résultat de recherche alors on le stock dans résultat
|
|
if ($retour === false) {
|
|
$answer->results = null;
|
|
}
|
|
else {
|
|
$answer->results = $retour;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
$answer->request = 'no_keywords';
|
|
}
|
|
break;
|
|
|
|
|
|
/***********/
|
|
/* DEFAULT */
|
|
/***********/
|
|
default:
|
|
$answer->request = 'unknown_level_1';
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
?>
|