2015-10-24 17:01:22 +00:00
< ? php
require_once __ROOT__ . '/manager/security.php' ;
require_once __ROOT__ . '/manager/database.php' ;
2015-10-22 16:55:26 +00:00
/***********************************************************
* *
* 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 */
/************************/
2015-11-08 21:30:23 +00:00
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' ;
2015-10-22 16:55:26 +00:00
} else
2015-11-08 21:30:23 +00:00
$answer -> request = 'permission_error' ;
2015-10-22 16:55:26 +00:00
break ;
2015-10-25 16:55:18 +00:00
/***********************************/
/* ajout d'un étudiant à un groupe */
/***********************************/
2015-11-08 21:30:23 +00:00
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' ;
2015-10-22 19:19:52 +00:00
} else
2015-11-08 21:30:23 +00:00
$answer -> request = 'permission_error' ;
2015-10-22 19:19:52 +00:00
break ;
/*****************************************/
/* retourne les utilisateurs d'un groupe */
/*****************************************/
2015-11-08 21:30:23 +00:00
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
2015-11-11 17:23:37 +00:00
$answer -> request = $userlist ;
2015-11-08 21:30:23 +00:00
} else
$answer -> request = 'param_error' ;
2015-10-22 19:19:52 +00:00
} else
2015-11-08 21:30:23 +00:00
$answer -> request = 'permission_error' ;
2015-10-22 19:19:52 +00:00
break ;
2015-11-10 09:50:43 +00:00
/**************************************/
/* 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 ;
2015-10-22 19:19:52 +00:00
2015-11-04 08:15:35 +00:00
/*******************************************************************/
/* retourne les utilisateurs de tous les groupes du semestre donné */
/*******************************************************************/
2015-11-08 21:30:23 +00:00
case 'grouplist' : if ( connected () ){
2015-10-23 08:04:26 +00:00
2015-11-08 21:30:23 +00:00
$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
2015-10-28 17:08:12 +00:00
2015-11-08 21:30:23 +00:00
if ( $anneeCheck ){
2015-11-04 08:15:35 +00:00
2015-11-08 21:30:23 +00:00
$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
2015-11-11 17:23:37 +00:00
$answer -> request = $grouplist ;
2015-11-08 21:30:23 +00:00
} else
2015-11-11 17:23:37 +00:00
$answer -> request = 'param_error' ;
2015-11-04 08:15:35 +00:00
} else
2015-11-08 21:30:23 +00:00
$answer -> request = 'permission_error' ;
2015-11-04 08:15:35 +00:00
break ;
/*****************************************************************************/
/* retourne les utilisateurs de tous les groupes des modules d'un enseignant */
/*****************************************************************************/
2015-11-08 21:30:23 +00:00
case 'grouplistForTeacher' : if ( permission ( 'teacher' ) || permission ( 'admin' ) ){
2015-11-04 08:15:35 +00:00
2015-11-08 21:30:23 +00:00
$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
2015-11-06 13:05:14 +00:00
2015-11-08 21:30:23 +00:00
// paramètres optionnels
2015-11-12 08:18:10 +00:00
$optionalSemestre = isset ( $request -> semestre ) && is_string ( $request -> semestre ) && preg_match ( '/^S[0-9]{1}$/i' , $request -> semestre );
2015-11-08 21:30:23 +00:00
$optionalGroupe = isset ( $request -> groupe ) && is_string ( $request -> groupe ) && strlen ( $request -> groupe ) > 1 && preg_match ( '/^[a-z0-9 -]{1,10}$/i' , $request -> groupe );
2015-11-06 13:05:14 +00:00
2015-11-08 21:30:23 +00:00
// définition (ou pas) des paramètres optionnels
if ( $optionalSemestre ) $semestre = $request -> semestre ;
else $semestre = null ;
2015-11-06 13:05:14 +00:00
2015-11-08 21:30:23 +00:00
if ( $optionalGroupe ) $groupe = $request -> groupe ;
else $groupe = null ;
2015-11-04 08:15:35 +00:00
2015-11-08 21:30:23 +00:00
if ( $enseignantCheck ){
2015-11-04 08:15:35 +00:00
2015-11-10 21:33:51 +00:00
$grouplist = DataBase :: getInstance () -> listeEtudiantsTousGroupesEnseignant ( $request -> annee , $_SESSION [ 'semestre_pair' ], $request -> enseignant , $semestre , $groupe );
2015-11-08 21:30:23 +00:00
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
2015-11-11 17:23:37 +00:00
$answer -> request = $grouplist ;
2015-11-04 08:15:35 +00:00
2015-11-08 21:30:23 +00:00
} else
2015-11-11 17:23:37 +00:00
$answer -> request = 'param_error' ;
2015-11-08 21:30:23 +00:00
2015-11-04 08:15:35 +00:00
} else
2015-11-08 21:30:23 +00:00
$answer -> request = 'permission_error' ;
2015-11-04 08:15:35 +00:00
break ;
2015-11-08 21:30:23 +00:00
/********************************************************************/
/* retourne les utilisateurs de tous les groupes d'une année donnée */
/********************************************************************/
case 'grouplistForYear' : if ( permission ( 'teacher' ) || permission ( 'admin' ) ){
2015-11-04 08:15:35 +00:00
2015-11-08 21:30:23 +00:00
$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
2015-11-06 13:05:14 +00:00
2015-11-08 21:30:23 +00:00
// paramètres optionnels
2015-11-12 08:18:10 +00:00
$optionalSemestre = isset ( $request -> semestre ) && is_string ( $request -> semestre ) && preg_match ( '/^S[0-9]{1}$/i' , $request -> semestre );
2015-11-08 21:30:23 +00:00
$optionalGroupe = isset ( $request -> groupe ) && is_string ( $request -> groupe ) && strlen ( $request -> groupe ) > 1 && preg_match ( '/^[a-z0-9 -]{1,10}$/i' , $request -> groupe );
2015-11-06 13:05:14 +00:00
2015-11-08 21:30:23 +00:00
// définition (ou pas) des paramètres optionnels
if ( $optionalSemestre ) $semestre = $request -> semestre ;
else $semestre = null ;
2015-11-06 13:05:14 +00:00
2015-11-08 21:30:23 +00:00
if ( $optionalGroupe ) $groupe = $request -> groupe ;
else $groupe = null ;
2015-11-06 13:05:14 +00:00
2015-11-04 08:15:35 +00:00
2015-11-08 21:30:23 +00:00
if ( $anneeCheck ){
2015-10-28 17:08:12 +00:00
2015-11-10 09:56:43 +00:00
$grouplist = DataBase :: getInstance () -> listeEtudiantsTousGroupesAnnee ( $request -> annee , $_SESSION [ 'semestre_pair' ], $semestre , $groupe );
2015-11-08 21:30:23 +00:00
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
2015-11-11 17:23:37 +00:00
$answer -> request = $grouplist ;
2015-10-28 17:08:12 +00:00
2015-11-08 21:30:23 +00:00
} else
2015-11-11 17:23:37 +00:00
$answer -> request = 'param_error' ;
2015-11-08 21:30:23 +00:00
2015-10-28 17:08:12 +00:00
} else
2015-11-08 21:30:23 +00:00
$answer -> request = 'permission_error' ;
2015-10-23 08:04:26 +00:00
break ;
2015-10-25 16:55:18 +00:00
/**********************************************/
/* retourne le nom du groupe d'un utilisateur */
/**********************************************/
2015-11-08 21:30:23 +00:00
case 'get' : if ( connected () ){
2015-10-25 16:55:18 +00:00
2015-11-08 21:30:23 +00:00
$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 );
2015-10-25 16:55:18 +00:00
2015-11-08 21:30:23 +00:00
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
2015-11-11 17:23:37 +00:00
$answer -> request = 'error' ;
2015-11-08 21:30:23 +00:00
} else
$answer -> request = 'permission_error' ;
2015-10-25 16:55:18 +00:00
break ;
2015-10-31 16:25:19 +00:00
/************************************************/
/* déplace un étudiant de son groupe à un autre */
/************************************************/
2015-11-08 21:30:23 +00:00
case 'move' : if ( permission ( 'admin' ) ){
$areSetParam = isset ( $request -> etudiant ) && isset ( $request -> groupe ); // 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 ; // 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 , $_SESSION [ 'annee' ]);
} else
2015-11-11 17:23:37 +00:00
$answer -> request = 'param_error' ;
2015-11-08 21:30:23 +00:00
2015-10-31 16:25:19 +00:00
} else
2015-11-08 21:30:23 +00:00
$answer -> request = 'permission_error' ;
2015-10-31 16:25:19 +00:00
break ;
2015-10-22 16:55:26 +00:00
/***********/
/* DEFAULT */
/***********/
default :
$answer -> request = 'unknown_level_1' ;
break ;
}
}
?>