sid/manager/groups.php

154 lines
7.4 KiB
PHP
Raw Normal View History

<?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':
$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';
break;
/***********************************/
/* ajout d'un étudiant à un groupe */
/***********************************/
case 'add':
$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';
break;
/*****************************************/
/* retourne les utilisateurs d'un groupe */
/*****************************************/
case 'userlist':
$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->answer = $userlist;
}else
$answer->request = 'param_error';
break;
/************************************************/
/* retourne les utilisateurs de tous les groupe */
/************************************************/
case 'grouplist':
$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()->listeEtudiantsTousGroupes($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->answer = $grouplist;
}else
return 'param_error';
break;
/**********************************************/
/* retourne le nom du groupe d'un utilisateur */
/**********************************************/
case 'get':
$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->answer = 'error';
break;
/***********/
/* DEFAULT */
/***********/
default:
$answer->request = 'unknown_level_1';
break;
}
}
?>