sid/manager/career.php

336 lines
14 KiB
PHP
Executable File

<?php
require_once __ROOT__.'/manager/security.php';
require_once __ROOT__.'/manager/database.php';
/***********************************************************
* *
* MANAGER DES MODULES *
* *
************************************************************
* *
* [0] Constantes *
* [1] ROUTAGE de niveau 1 *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
***********************************************************/
/* [1] ROUTAGE DE NIVEAU 1
============================================================*/
function career_switch_level_1($request, $answer){
switch( $request->level_1 ){
/***************************/
/* liste des notes par UEs */
/***************************/
case 'getNotesEtudiant': if( permission('student') || permission('master') || permission('admin') ){
$areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee) && isset($request->formation); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->semestre) && is_string($request->annee) && is_numeric($request->formation); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->semestre) && is_numeric($request->annee); // des bon types
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format
$formationCheck = $etudiantCheck && preg_match('/^[1-4]+$/i', $request->formation); // formation (formation) bon format
$semestreCheck = $formationCheck && preg_match('/^[1-4]+$/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
$UEs = DataBase::getInstance()->getNotesEtudiant($request->etudiant, $request->formation, $request->semestre, $request->annee);
if( is_array($UEs) ){ // si on a bien un tableau
$answer->UEs = $UEs; // on renvoie dans answer->note
$answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau
$answer->request = $UEs; // on retourne l'erreur
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/***************************************/
/* liste des contrôles d'un enseignant */
/***************************************/
case 'getControlesEnseignant': if( permission('teacher') ){
$areSetParam = isset($request->enseignant) && isset($request->annee); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->enseignant) && is_string($request->annee); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->enseignant) > 0 && is_numeric($request->annee); // des bon types
$enseignantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // nom bon format
$anneeCheck = $enseignantCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $anneeCheck ){ // si tout les paramètres sont bons
$semestreList = DataBase::getInstance()->getControlesEnseignant($request->enseignant, $_SESSION['semestre_pair'], $request->annee);
if( is_array($semestreList) ){ // si on a bien un tableau
$answer->semestres = $semestreList; // on renvoie dans answer->semestreList
$answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau
$answer->request = $semestreList; // on retourne l'erreur
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/**********************************/
/* liste des contrôles de l'année */
/**********************************/
case 'getControlesForYear': if( permission('master') || permission('admin') ){
$areSetParam = isset($request->annee); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->annee); // si c'est des strings
$nEmptyParam = $typeOkParam && is_numeric($request->annee); // des bon types
$anneeCheck = $nEmptyParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $anneeCheck ){ // si tout les paramètres sont bons
$semestreList = DataBase::getInstance()->getControlesForYear($request->annee);
if( is_array($semestreList) ){ // si on a bien un tableau
$answer->semestres = $semestreList; // on renvoie dans answer->semestreList
$answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau
$answer->request = $semestreList; // on retourne l'erreur
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/****************************************************/
/* liste des notes pour un contrôle d'un enseignant */
/****************************************************/
case 'getNotesEnseignant': if( permission('teacher') ){
$areSetParam = isset($request->enseignant) && isset($request->controle); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->enseignant); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->enseignant) > 0 && is_numeric($request->controle); // des bon types
$enseignantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // nom bon format
// paramètre optionnel
$optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe);
// définition (ou pas) du paramètre optionnel
if( $optionalGroupe ) $groupe = $request->groupe;
else $groupe = null;
if( $enseignantCheck ){ // si tout les paramètres sont bons
$controle = DataBase::getInstance()->getNotesForControleEnseignant($request->enseignant, $_SESSION['annee'], $request->controle, $groupe);
if( is_array($controle) ){ // si on a bien un tableau
$answer->controle = $controle; // on renvoie dans answer->controle
$answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau
$answer->request = $controle; // on retourne l'erreur
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/************************************/
/* liste des notes pour un contrôle */
/************************************/
case 'getNotesForYear': if( permission('master') || permission('admin') ){
$areSetParam = isset($request->controle); // les arguments existent
$nEmptyParam = $areSetParam && is_numeric($request->controle); // des bon types
// paramètre optionnel
$optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe);
// définition (ou pas) du paramètre optionnel
if( $optionalGroupe ) $groupe = $request->groupe;
else $groupe = null;
if( $nEmptyParam ){ // si tout les paramètres sont bons
$controle = DataBase::getInstance()->getNotesForControle($_SESSION['annee'], $request->controle, $groupe);
if( is_array($controle) ){ // si on a bien un tableau
$answer->controle = $controle; // on renvoie dans answer->controle
$answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau
$answer->request = $controle; // on retourne l'erreur
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/**********************************************/
/* informations relatives au dossier étudiant */
/**********************************************/
case 'studentcase': if( permission('master') || permission('admin') ){
$areSetParam = isset($request->etudiant) ; // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings
$etudiantCheck = $typeOkParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format
if( $etudiantCheck ){ // si tout les paramètres sont bons
$parcours = DataBase::getInstance()->getParcoursEtudiant($request->etudiant);
if( is_array($parcours) ){
$answer->parcours = $parcours;
$answer->request = 'success';
}else
$answer->request = $parcours;
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/****************************************************/
/* saisie d'une note pour un étudiant à un contrôle */
/****************************************************/
case 'saisieNote': if( permission('teacher') || permission('admin') ){
$areSetParam = isset($request->etudiant) && isset($request->controle) && isset($request->note); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->controle) && is_numeric($request->note); // des bon types
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format
if( $etudiantCheck ){ // si tout les paramètres sont bons
$answer->request = DataBase::getInstance()->saisieNote($request->etudiant, $request->controle, $request->note);
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/****************************************************/
/* saisie d'une note pour un groupe à un contrôle */
/****************************************************/
case 'saisieNoteMultiple': if( permission('teacher') || permission('admin') ){
$areSetParam = isset($request->notes) && isset($request->controle); // les arguments existent
$typeOkParam = $areSetParam && is_array($request->notes) && is_numeric($request->controle); // si c'est des strings
$nEmptyParam = $typeOkParam && count($request->notes) > 1; // des bon types
if( $nEmptyParam ){ // si tout les paramètres sont bons
$answer->request = DataBase::getInstance()->saisieNoteMultiple($request->controle, $request->notes);
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/**********************/
/* intégration du MCC */
/**********************/
case 'setMCC': if( permission('admin') ){
if( isset($request->mcc) && isset($request->semestre) && is_numeric($request->semestre) ){ // si tout les paramètres sont bons
DataBase::getInstance()->setMCC($request->semestre, $request->mcc);
$answer->request = 'success';
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/**************************/
/* création d'un semestre */
/**************************/
/*
* CRÉATION DU SEMESTRE D'UNE FORMATION DONNÉE
* - si code formation non référencé => on créé la formation
* - si rang+annee+formation du semestre non référencé => on créé le semestre
* + sinon on modifie juste le nom (même si identique)
*
*/
case 'creerSemestre': if( permission('admin') ){
$areSetParam = isset($request->annee) && isset($request->formation) && isset($request->nom_formation) && isset($request->semestre) && isset($request->rang); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->formation) && is_string($request->nom_formation) && is_string($request->semestre); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->formation) > 0 && strlen($request->nom_formation) > 0 && strlen($request->semestre) > 0 && is_numeric($request->annee) && is_numeric($request->rang); // des bon types
$anneeCheck = $nEmptyParam && preg_match('/[0-4]/i', $request->annee); // l'année est au bon format
$formationCheck = $anneeCheck && preg_match('/[\w]{0,10}/i', $request->formation); // le code de la formation est au bon format
$nomFormationCheck = $formationCheck && preg_match('/[\w ]{0,100}/i', $request->nom_formation); // le nom de la formation est au bon format
$semestreCheck = $nomFormationCheck && preg_match('/[\w -]{0,10}/i', $request->semestre); // le nom du semestre est au bon format
$rangCheck = $semestreCheck && preg_match('/\d/i', $request->rang); // l'année est au bon format
if( $rangCheck ){ // si tout les paramètres sont bons
$creationOk = DataBase::getInstance()->creerSemestre($request->formation, $request->nom_formation, $request->semestre, $request->rang, $request->annee);
if( $creationOk )
$answer->request = 'success';
else
$answer->request = 'error';
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/***********/
/* DEFAULT */
/***********/
default:
$answer->request = 'unknown_level_1';
break;
}
}
?>