sid/manager/groups.php

287 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) ){
//On explode les mots clés
$keys = explode(' ', $request->keywords);
//Pour chaque mot clé on lance une recherche dans la bdd
foreach ($keys as $keyword){
//On cherche d'abord en fonction du nom...
$answer->results = DataBase::getInstance()->searchForUsers($keyword);
$answer->request = (is_bool($answer->results)) ? 'error' : 'success';
}
}else
$answer->request = 'error';
break;
/***********/
/* DEFAULT */
/***********/
default:
$answer->request = 'unknown_level_1';
break;
}
}
}
?>