Refactor 3 DB + ajout de la récupération du semestre courant d'un ETU (traitement à FAIRE) + il faut prendre en compte dans affichage des données
This commit is contained in:
parent
e4bde4d031
commit
716afc8565
|
@ -7,7 +7,7 @@ require_once __ROOT__.'/manager/repo/semestre.php';
|
||||||
// require_once __ROOT__.'/manager/repo/module.php';
|
// require_once __ROOT__.'/manager/repo/module.php';
|
||||||
// require_once __ROOT__.'/manager/repo/ue.php';
|
// require_once __ROOT__.'/manager/repo/ue.php';
|
||||||
// require_once __ROOT__.'/manager/repo/note.php';
|
// require_once __ROOT__.'/manager/repo/note.php';
|
||||||
debug();
|
// debug();
|
||||||
|
|
||||||
class DBAccess{};
|
class DBAccess{};
|
||||||
|
|
||||||
|
@ -59,7 +59,22 @@ class DataBase{
|
||||||
/* */
|
/* */
|
||||||
/*************************************************************/
|
/*************************************************************/
|
||||||
|
|
||||||
|
/* SUPPRIME LES VALEURS À CLÉS NUMÉRIQUES DANS UN FETCH D'UNE TABLE DE LA BDD
|
||||||
|
*
|
||||||
|
* @fetchData<Array> le résultat d'une $requeteSQL->fetchAll()
|
||||||
|
*
|
||||||
|
* @return newFetchData<Array> retourne le tableau donné en paramètre mais sans les valeurs à clés numériques
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function delNumeric($fetchData){
|
||||||
|
// on supprime les doublons des entrées (indice numérique)
|
||||||
|
for( $i = 0 ; $i < count($fetchData) ; $i++ ) // pour tout les utilisateurs
|
||||||
|
foreach($fetchData[$i] as $col => $val) // pour toutes les entrées
|
||||||
|
if( is_int($col) ) // si l'indice est un entier
|
||||||
|
unset( $fetchData[$i][$col] ); // on le supprime
|
||||||
|
|
||||||
|
return $fetchData;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -82,30 +97,7 @@ class DataBase{
|
||||||
/*** création d'un utilisateur dans la bdd ***/
|
/*** création d'un utilisateur dans la bdd ***/
|
||||||
/*********************************************/
|
/*********************************************/
|
||||||
public function creerUtilisateur($identifiant, $prenom, $nom, $mail, $mdp, $droits){
|
public function creerUtilisateur($identifiant, $prenom, $nom, $mail, $mdp, $droits){
|
||||||
$getLastCount = DataBase::getPDO()->query('SELECT count(identifiant) as count FROM utilisateur');
|
if( userRepo::creer($identifiant, $prenom, $nom, $mail, $mdp, $droits) ) // si l'utilisateur a bien été créé
|
||||||
$lastCount = (int) $getLastCount->fetch()['count'];
|
|
||||||
|
|
||||||
// on applique une normalisation
|
|
||||||
$prenom = ucwords( strtolower($prenom) ); // majuscule à chaque mot sinon minuscule
|
|
||||||
$nom = strtoupper($nom); // nom en majuscules
|
|
||||||
$mail = strtolower($mail); // email en minuscules
|
|
||||||
$mdp = sha1($mdp); // on hash le password
|
|
||||||
|
|
||||||
$req = DataBase::getPDO()->prepare("INSERT INTO utilisateur(identifiant, prenom, nom, mail, mdp, droits) VALUES(:identifiant, :prenom, :nom, :mail, :mdp, :droits)");
|
|
||||||
|
|
||||||
$req->execute(array(
|
|
||||||
':identifiant' => $identifiant,
|
|
||||||
':prenom' => $prenom,
|
|
||||||
':nom' => $nom,
|
|
||||||
':mail' => $mail,
|
|
||||||
':mdp' => $mdp,
|
|
||||||
':droits' => $droits
|
|
||||||
));
|
|
||||||
|
|
||||||
$getNewCount = DataBase::getPDO()->query('SELECT count(identifiant) as count FROM utilisateur');
|
|
||||||
$newCount = (int) $getNewCount->fetch()['count'];
|
|
||||||
|
|
||||||
if( $newCount > $lastCount ) // si on a bien ajouté un entrée
|
|
||||||
return 'success';
|
return 'success';
|
||||||
else
|
else
|
||||||
return 'error';
|
return 'error';
|
||||||
|
@ -120,24 +112,23 @@ class DataBase{
|
||||||
// si l'utilisateur n'existe pas on retourne 'unknown_user'
|
// si l'utilisateur n'existe pas on retourne 'unknown_user'
|
||||||
if( !($utilisateurUID=userRepo::UID($identifiant)) ) return 'unknown_user';
|
if( !($utilisateurUID=userRepo::UID($identifiant)) ) return 'unknown_user';
|
||||||
|
|
||||||
|
return userRepo::info($utilisateurUID);
|
||||||
$getUtilisateurInfo = DataBase::getPDO()->prepare("SELECT identifiant, prenom, nom, mail, droits FROM utilisateur WHERE identifiant = :identifiant");
|
|
||||||
$getUtilisateurInfo->execute(array( ':identifiant' => $utilisateurUID ));
|
|
||||||
|
|
||||||
return $getUtilisateurInfo->fetch(); // retourne les info, si pas de résultat, retourne [FAUX]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* retourne le semestre courant d'un étudiant
|
/* retourne le semestre en cours d'un étudiant
|
||||||
*
|
*
|
||||||
* @etudiant<String> l'identifiant (UID) de l'étudiant à ajouter au groupe
|
* @etudiant<String> l'identifiant (UID) de l'étudiant à ajouter au groupe
|
||||||
*
|
*
|
||||||
* @return semestreUID<int> l'UID du semestre courant
|
* @return semestreUID<int> l'UID du semestre courant
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function studentCurrent($etudiant){
|
public static function studentSemestre($etudiant, $semestre_pair, $annee){
|
||||||
return '2';
|
if( $semestre = semestreRepo::studentCurrent($etudiant, $semestre_pair, $annee) ) // si on a un résultat
|
||||||
|
return $semestre;
|
||||||
|
else
|
||||||
|
return 'error';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**********************************************************/
|
/**********************************************************/
|
||||||
|
@ -210,16 +201,8 @@ class DataBase{
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
||||||
$userlist = $appartenance->fetchAll();
|
// on fetch tous les utilisateurs & on supprime les doublons des entrées (indice numérique)
|
||||||
|
return DataBase::delNumeric( $appartenance->fetchAll() ); // on retourne le tout
|
||||||
// on supprime les doublons des entrées (indice numérique)
|
|
||||||
for( $i = 0 ; $i < count($userlist) ; $i++ ) // pour tout les utilisateurs
|
|
||||||
foreach($userlist[$i] as $col => $val) // pour toutes les entrées
|
|
||||||
if( is_int($col) ) // si l'indice est un entier
|
|
||||||
unset( $userlist[$i][$col] ); // on le supprime
|
|
||||||
|
|
||||||
|
|
||||||
return $userlist; // on retourne le liste d'utilisateurs
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -604,15 +587,8 @@ class DataBase{
|
||||||
':UEUID' => $UE['id']
|
':UEUID' => $UE['id']
|
||||||
));
|
));
|
||||||
|
|
||||||
$modulelist = $getModuleList->fetchAll(); // on récupère la liste des modules
|
// on ajoute la liste des modules en supprimant les valeurs à indinces numériques
|
||||||
|
$UEList[$iter]['modules'] = DataBase::delNumeric( $getModuleList->fetchAll() );
|
||||||
// on supprime les doublons des entrées (indice numérique)
|
|
||||||
for( $i = 0 ; $i < count($modulelist) ; $i++ ) // pour tout les modules
|
|
||||||
foreach($modulelist[$i] as $col => $val) // pour toutes les entrées
|
|
||||||
if( is_int($col) ) // si l'indice est un entier
|
|
||||||
unset( $modulelist[$i][$col] ); // on le supprime
|
|
||||||
|
|
||||||
$UEList[$iter]['modules'] = $modulelist; // on ajoute la liste des mdules
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $UEList;
|
return $UEList;
|
||||||
|
@ -673,15 +649,8 @@ class DataBase{
|
||||||
':annee' => $annee
|
':annee' => $annee
|
||||||
));
|
));
|
||||||
|
|
||||||
$modulelist = $getModuleList->fetchAll(); // on récupère la liste des modules
|
// on retourne les modules en supprimant les valeurs à indices numériques
|
||||||
|
return DataBase::delNumeric( $getModuleList->fetchAll() );
|
||||||
// on supprime les doublons des entrées (indice numérique)
|
|
||||||
for( $i = 0 ; $i < count($modulelist) ; $i++ ) // pour tout les modules
|
|
||||||
foreach($modulelist[$i] as $col => $val) // pour toutes les entrées
|
|
||||||
if( is_int($col) ) // si l'indice est un entier
|
|
||||||
unset( $modulelist[$i][$col] ); // on le supprime
|
|
||||||
|
|
||||||
return $modulelist;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -739,15 +708,8 @@ class DataBase{
|
||||||
':semestreUID' => $semestreUID
|
':semestreUID' => $semestreUID
|
||||||
));
|
));
|
||||||
|
|
||||||
$UElist = $getUEList->fetchAll(); // on récupère la liste des modules
|
// on retourne la liste d'UEs en supprimant les doublons à clés numériques
|
||||||
|
return DataBase::delNumeric( $getUEList->fetchAll() );
|
||||||
// on supprime les doublons des entrées (indice numérique)
|
|
||||||
for( $i = 0 ; $i < count($UElist) ; $i++ ) // pour tout les modules
|
|
||||||
foreach($UElist[$i] as $col => $val) // pour toutes les entrées
|
|
||||||
if( is_int($col) ) // si l'indice est un entier
|
|
||||||
unset( $UElist[$i][$col] ); // on le supprime
|
|
||||||
|
|
||||||
return $UElist;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -820,15 +782,8 @@ class DataBase{
|
||||||
':annee' => $annee
|
':annee' => $annee
|
||||||
));
|
));
|
||||||
|
|
||||||
$modulelist = $getModuleList->fetchAll(); // on récupère la liste des modules
|
// on ajoute la liste des modules en supprimant les valeurs à indinces numériques
|
||||||
|
$UEList[$iter]['modules'] = DataBase::delNumeric( $getModuleList->fetchAll() );
|
||||||
// on supprime les doublons des entrées (indice numérique)
|
|
||||||
for( $i = 0 ; $i < count($modulelist) ; $i++ ) // pour tout les modules
|
|
||||||
foreach($modulelist[$i] as $col => $val) // pour toutes les entrées
|
|
||||||
if( is_int($col) ) // si l'indice est un entier
|
|
||||||
unset( $modulelist[$i][$col] ); // on le supprime
|
|
||||||
|
|
||||||
$UEList[$iter]['modules'] = $modulelist; // on ajoute la liste des mdules
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $UEList;
|
return $UEList;
|
||||||
|
@ -889,15 +844,8 @@ class DataBase{
|
||||||
':annee' => $annee
|
':annee' => $annee
|
||||||
));
|
));
|
||||||
|
|
||||||
$UElist = $getUEList->fetchAll(); // on récupère la liste des modules
|
// on retourne la liste d'UEs en supprimant les doublons à clés numériques
|
||||||
|
return DataBase::delNumeric( $getUEList->fetchAll() );
|
||||||
// on supprime les doublons des entrées (indice numérique)
|
|
||||||
for( $i = 0 ; $i < count($UElist) ; $i++ ) // pour tout les modules
|
|
||||||
foreach($UElist[$i] as $col => $val) // pour toutes les entrées
|
|
||||||
if( is_int($col) ) // si l'indice est un entier
|
|
||||||
unset( $UElist[$i][$col] ); // on le supprime
|
|
||||||
|
|
||||||
return $UElist;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1075,7 +1023,7 @@ class DataBase{
|
||||||
|
|
||||||
|
|
||||||
// si on a l'UID utilisateur & l'UID groupe => on récupère les modules
|
// si on a l'UID utilisateur & l'UID groupe => on récupère les modules
|
||||||
$getModuleList = DataBase::getPDO()->prepare("SELECT m.nom as module, m.libelle as modulelib, ctrl.intitule, note.valeur, ctrl.base, ctrl.coefficient ".
|
$getNoteList = DataBase::getPDO()->prepare("SELECT m.nom as module, m.libelle as modulelib, ctrl.intitule, note.valeur, ctrl.base, ctrl.coefficient ".
|
||||||
"FROM note, appartenance as app, semestre as s, module as m, mcc_ue, mcc_module as mcc_m, controle as ctrl ".
|
"FROM note, appartenance as app, semestre as s, module as m, mcc_ue, mcc_module as mcc_m, controle as ctrl ".
|
||||||
"WHERE note.id_appartenance = app.id_appartenance ".
|
"WHERE note.id_appartenance = app.id_appartenance ".
|
||||||
"AND ctrl.id_controle = note.id_controle ".
|
"AND ctrl.id_controle = note.id_controle ".
|
||||||
|
@ -1092,21 +1040,14 @@ class DataBase{
|
||||||
"AND app.id_etudiant = :etudiantUID ".
|
"AND app.id_etudiant = :etudiantUID ".
|
||||||
"AND s.id_semestre = :semestreUID ".
|
"AND s.id_semestre = :semestreUID ".
|
||||||
"ORDER BY ctrl.date_publication ASC");
|
"ORDER BY ctrl.date_publication ASC");
|
||||||
$getModuleList->execute(array(
|
$getNoteList->execute(array(
|
||||||
':moduleUID' => $moduleUID,
|
':moduleUID' => $moduleUID,
|
||||||
':etudiantUID' => $etudiantUID,
|
':etudiantUID' => $etudiantUID,
|
||||||
':semestreUID' => $semestreUID
|
':semestreUID' => $semestreUID
|
||||||
));
|
));
|
||||||
|
|
||||||
$notes = $getModuleList->fetchAll(); // on récupère la liste des notes
|
// on retourne la liste des notes et supprime les doublons à indices numériques
|
||||||
|
return DataBase::delNumeric( $getNoteList->fetchAll() );
|
||||||
// on supprime les doublons des entrées (indice numérique)
|
|
||||||
for( $i = 0 ; $i < count($notes) ; $i++ ) // pour toutes les notes
|
|
||||||
foreach($notes[$i] as $col => $val) // pour toutes les entrées
|
|
||||||
if( is_int($col) ) // si l'indice est un entier
|
|
||||||
unset( $notes[$i][$col] ); // on le supprime
|
|
||||||
|
|
||||||
return $notes;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1164,7 +1105,7 @@ class DataBase{
|
||||||
return 'unknown_UE';
|
return 'unknown_UE';
|
||||||
|
|
||||||
// si on a l'UID utilisateur & l'UID UE => on récupère les notes
|
// si on a l'UID utilisateur & l'UID UE => on récupère les notes
|
||||||
$getUEList = DataBase::getPDO()->prepare("SELECT m.nom as module, m.libelle as modulelib, ctrl.intitule, note.valeur, ctrl.base, ctrl.coefficient ".
|
$getNoteList = DataBase::getPDO()->prepare("SELECT m.nom as module, m.libelle as modulelib, ctrl.intitule, note.valeur, ctrl.base, ctrl.coefficient ".
|
||||||
"FROM note, appartenance as app, semestre as s, module as m, ue, mcc_ue, mcc_module as mcc_m, controle as ctrl ".
|
"FROM note, appartenance as app, semestre as s, module as m, ue, mcc_ue, mcc_module as mcc_m, controle as ctrl ".
|
||||||
"WHERE note.id_appartenance = app.id_appartenance ".
|
"WHERE note.id_appartenance = app.id_appartenance ".
|
||||||
"AND ctrl.id_mcc_module = mcc_m.id_mcc_module ".
|
"AND ctrl.id_mcc_module = mcc_m.id_mcc_module ".
|
||||||
|
@ -1182,21 +1123,14 @@ class DataBase{
|
||||||
"AND app.id_etudiant = :etudiantUID ".
|
"AND app.id_etudiant = :etudiantUID ".
|
||||||
"AND s.id_semestre = :semestreUID ".
|
"AND s.id_semestre = :semestreUID ".
|
||||||
"ORDER BY m.nom, ctrl.date_publication ASC");
|
"ORDER BY m.nom, ctrl.date_publication ASC");
|
||||||
$getUEList->execute(array(
|
$getNoteList->execute(array(
|
||||||
':UEUID' => $UEUID,
|
':UEUID' => $UEUID,
|
||||||
':etudiantUID' => $etudiantUID,
|
':etudiantUID' => $etudiantUID,
|
||||||
':semestreUID' => $semestreUID
|
':semestreUID' => $semestreUID
|
||||||
));
|
));
|
||||||
|
|
||||||
$notes = $getUEList->fetchAll(); // on récupère la liste des notes
|
// on retourne la liste de notes et supprime les doublons à indices numériques
|
||||||
|
return DataBase::delNumeric( $getNoteList->fetchAll() );
|
||||||
// on supprime les doublons des entrées (indice numérique)
|
|
||||||
for( $i = 0 ; $i < count($notes) ; $i++ ) // pour toutes les notes
|
|
||||||
foreach($notes[$i] as $col => $val) // pour toutes les entrées
|
|
||||||
if( is_int($col) ) // si l'indice est un entier
|
|
||||||
unset( $notes[$i][$col] ); // on le supprime
|
|
||||||
|
|
||||||
return $notes;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -103,6 +103,33 @@ require_once __ROOT__.'/manager/database.php';
|
||||||
$answer->request = 'permission_error';
|
$answer->request = 'permission_error';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/**************************************/
|
||||||
|
/* 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;
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************/
|
/*******************************************************************/
|
||||||
/* retourne les utilisateurs de tous les groupes du semestre donné */
|
/* retourne les utilisateurs de tous les groupes du semestre donné */
|
||||||
|
|
|
@ -19,10 +19,8 @@ class groupRepo extends DBAccess{
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function UID($nom){
|
public static function UID($nom){
|
||||||
$db = DataBase::getPDO();
|
|
||||||
|
|
||||||
/*** on cherche un groupe avec ce nom ***/
|
/*** on cherche un groupe avec ce nom ***/
|
||||||
$getGroupeUID = $db->prepare("SELECT id_groupe as id FROM groupe WHERE nom = :nom");
|
$getGroupeUID = DataBase::getPDO()->prepare("SELECT id_groupe as id FROM groupe WHERE nom = :nom");
|
||||||
$getGroupeUID->execute(array(
|
$getGroupeUID->execute(array(
|
||||||
':nom' => $nom
|
':nom' => $nom
|
||||||
));
|
));
|
||||||
|
@ -43,10 +41,8 @@ class groupRepo extends DBAccess{
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function appartenanceUID($etudiant, $groupe, $semestre){
|
public static function appartenanceUID($etudiant, $groupe, $semestre){
|
||||||
$db = DataBase::getPDO();
|
|
||||||
|
|
||||||
/*** on cherche un groupe avec ce nom ***/
|
/*** on cherche un groupe avec ce nom ***/
|
||||||
$getAppartenanceUID = $db->prepare("SELECT id_appartenance as id ".
|
$getAppartenanceUID = DataBase::getPDO()->prepare("SELECT id_appartenance as id ".
|
||||||
"FROM appartenance ".
|
"FROM appartenance ".
|
||||||
"WHERE id_etudiant = :etudiant ".
|
"WHERE id_etudiant = :etudiant ".
|
||||||
"AND id_groupe = :groupe ".
|
"AND id_groupe = :groupe ".
|
||||||
|
@ -75,8 +71,6 @@ class groupRepo extends DBAccess{
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function creer($nom){
|
public static function creer($nom){
|
||||||
$db = DataBase::getPDO();
|
|
||||||
|
|
||||||
/* [1] On vérifie l'existence d'un groupe avec ce nom
|
/* [1] On vérifie l'existence d'un groupe avec ce nom
|
||||||
======================================================*/
|
======================================================*/
|
||||||
if( $this->UID($nom) ) // si le groupe existe déjà
|
if( $this->UID($nom) ) // si le groupe existe déjà
|
||||||
|
@ -87,7 +81,7 @@ class groupRepo extends DBAccess{
|
||||||
$nom = strtoupper($nom); // on met le nom en majuscules
|
$nom = strtoupper($nom); // on met le nom en majuscules
|
||||||
|
|
||||||
// on créé et envoie la requête de création du groupe
|
// on créé et envoie la requête de création du groupe
|
||||||
$creerGroupe = $db->prepare("INSERT INTO groupe(id_groupe, nom) VALUES(default, :nom)");
|
$creerGroupe = DataBase::getPDO()->prepare("INSERT INTO groupe(id_groupe, nom) VALUES(default, :nom)");
|
||||||
$creerGroupe->execute(array(
|
$creerGroupe->execute(array(
|
||||||
':nom' => $nom
|
':nom' => $nom
|
||||||
));
|
));
|
||||||
|
@ -109,11 +103,9 @@ class groupRepo extends DBAccess{
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function ajouterMembre($etudiant, $groupe, $semestre){
|
public static function ajouterMembre($etudiant, $groupe, $semestre){
|
||||||
$db = DataBase::getPDO();
|
|
||||||
|
|
||||||
/* [1] On vérifie si l'utilisateur appartient à un groupe pour ce semestre
|
/* [1] On vérifie si l'utilisateur appartient à un groupe pour ce semestre
|
||||||
===========================================================================*/
|
===========================================================================*/
|
||||||
$dejaMembre = $db->prepare("SELECT id_appartenance as id ".
|
$dejaMembre = DataBase::getPDO()->prepare("SELECT id_appartenance as id ".
|
||||||
"FROM appartenance ".
|
"FROM appartenance ".
|
||||||
"WHERE id_etudiant = :etudiant ".
|
"WHERE id_etudiant = :etudiant ".
|
||||||
"AND id_semestre = :semestre ");
|
"AND id_semestre = :semestre ");
|
||||||
|
@ -127,7 +119,7 @@ class groupRepo extends DBAccess{
|
||||||
/* [2] On modifie l'appartenance
|
/* [2] On modifie l'appartenance
|
||||||
==============================*/
|
==============================*/
|
||||||
// création et exécution de la requête de modification de l'appartenance
|
// création et exécution de la requête de modification de l'appartenance
|
||||||
$ajouterMembres = $db->prepare("UPDATE appartenance ".
|
$ajouterMembres = DataBase::getPDO()->prepare("UPDATE appartenance ".
|
||||||
"SET id_groupe = :groupe ".
|
"SET id_groupe = :groupe ".
|
||||||
"WHERE id_appartenance = :appartenanceUID");
|
"WHERE id_appartenance = :appartenanceUID");
|
||||||
$ajouterMembre->execute(array(
|
$ajouterMembre->execute(array(
|
||||||
|
@ -140,7 +132,7 @@ class groupRepo extends DBAccess{
|
||||||
/* [2] On créé l'appartenance
|
/* [2] On créé l'appartenance
|
||||||
==============================*/
|
==============================*/
|
||||||
// création et exécution de la requête de création d'appartenance
|
// création et exécution de la requête de création d'appartenance
|
||||||
$ajouterMembres = $db->prepare("INSERT INTO appartenance(id_etudiant, id_groupe, id_semestre) ".
|
$ajouterMembres = DataBase::getPDO()->prepare("INSERT INTO appartenance(id_etudiant, id_groupe, id_semestre) ".
|
||||||
"VALUES( ".
|
"VALUES( ".
|
||||||
"(SELECT identifiant FROM utilisateur WHERE identifiant = :etudiant), ".
|
"(SELECT identifiant FROM utilisateur WHERE identifiant = :etudiant), ".
|
||||||
"(SELECT id_groupe FROM groupe WHERE id_groupe = :groupe), ".
|
"(SELECT id_groupe FROM groupe WHERE id_groupe = :groupe), ".
|
||||||
|
|
|
@ -26,10 +26,8 @@ class semestreRepo extends DBAccess{
|
||||||
return false; // aucun résultat possible
|
return false; // aucun résultat possible
|
||||||
|
|
||||||
|
|
||||||
$db = DataBase::getPDO();
|
|
||||||
|
|
||||||
/*** on cherche un semestre avec ce rang et cette année (qui est forcément unique) ***/
|
/*** on cherche un semestre avec ce rang et cette année (qui est forcément unique) ***/
|
||||||
$getSemestreUID = $db->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee");
|
$getSemestreUID = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee");
|
||||||
$getSemestreUID->execute(array(
|
$getSemestreUID->execute(array(
|
||||||
':rang' => $rang,
|
':rang' => $rang,
|
||||||
':annee' => $annee
|
':annee' => $annee
|
||||||
|
@ -40,15 +38,62 @@ class semestreRepo extends DBAccess{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* RENVOIE LES INFORMATIONS D'UN SEMESTRE D'UID DONNÉ
|
||||||
|
*
|
||||||
|
* @semestreUID<int> l'UID du semestre duquel on veut les infos
|
||||||
|
*
|
||||||
|
* @return semestre<Array> tableau associatif contenant tout les champs de la BDD pour ce semestre
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function info($semestreUID){
|
||||||
|
// on considère que le semestre existe
|
||||||
|
$getSemestreInfo = DataBase::getPDO()->prepare("SELECT * FROM semestre WHERE id_semestre = :semestreUID");
|
||||||
|
$getSemestreInfo->execute(array(
|
||||||
|
':semestreUID' => $semestreUID
|
||||||
|
));
|
||||||
|
|
||||||
|
// on retourne le résultat en supprimant les doublons à indices numériques
|
||||||
|
return DataBase::delNumeric( $getSemestreInfo->fetch() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* retourne le semestre courant d'un étudiant
|
/* retourne le semestre courant d'un étudiant
|
||||||
*
|
*
|
||||||
* @etudiant<String> l'identifiant (UID) de l'étudiant à ajouter au groupe
|
* @etudiant<String> l'identifiant (UID) de l'étudiant à ajouter au groupe
|
||||||
*
|
*
|
||||||
|
* @return etudie<Boolean> FALSE si l'étudiant n'est dans aucun semestre en cours
|
||||||
* @return semestreUID<int> l'UID du semestre courant
|
* @return semestreUID<int> l'UID du semestre courant
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function studentCurrent($etudiant){
|
public static function studentCurrent($etudiant, $semestre_pair, $annee){
|
||||||
|
// on formate les variables
|
||||||
|
$semestre_pair = ($semestre_pair) ? '1' : '0';
|
||||||
|
|
||||||
|
$getSemestreUID = DataBase::getPDO()->prepare("SELECT s.id_semestre as id ".
|
||||||
|
"FROM semestre as s, appartenance as app ".
|
||||||
|
"WHERE app.id_semestre = s.id_semestre ".
|
||||||
|
|
||||||
|
"AND app.id_etudiant = :etudiant ".
|
||||||
|
"AND s.annee = :annee ".
|
||||||
|
"AND s.rang % 2 = :semestre_pair ".
|
||||||
|
"ORDER BY s.rang DESC");
|
||||||
|
$getSemestreUID->execute(array(
|
||||||
|
':etudiant' => $etudiant,
|
||||||
|
':annee' => $annee,
|
||||||
|
':semestre_pair' => $semestre_pair
|
||||||
|
));
|
||||||
|
|
||||||
|
// on retourne l'UID du semestre courant
|
||||||
|
return $getSemestreUID->fetch()['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -19,10 +19,8 @@ class userRepo extends DBAccess{
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function UID($identifiant){
|
public static function UID($identifiant){
|
||||||
$db = DataBase::getPDO();
|
|
||||||
|
|
||||||
/*** on cherche un utilisateur avec cet identifiant ***/
|
/*** on cherche un utilisateur avec cet identifiant ***/
|
||||||
$getUtilisateurUID = $db->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :identifiant");
|
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :identifiant");
|
||||||
$getUtilisateurUID->execute(array(
|
$getUtilisateurUID->execute(array(
|
||||||
':identifiant' => $identifiant
|
':identifiant' => $identifiant
|
||||||
));
|
));
|
||||||
|
@ -33,4 +31,88 @@ class userRepo extends DBAccess{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* RENVOIE LES INFORMATIONS D'UN UTILISATEUR D'UID DONNÉ
|
||||||
|
*
|
||||||
|
* @utilisateurUID<int> l'UID de l'utilisateur duquel on veut les infos
|
||||||
|
*
|
||||||
|
* @return utilisateur<Array> tableau associatif contenant tout les champs de la BDD pour cet utilisateur
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function info($utilisateurUID){
|
||||||
|
// on considère que le semestre existe
|
||||||
|
$getUtilisateurInfo = DataBase::getPDO()->prepare("SELECT identifiant, prenom, nom, mail, droits FROM utilisateur WHERE identifiant = :utilisateurUID");
|
||||||
|
$getUtilisateurInfo->execute(array(
|
||||||
|
':utilisateurUID' => $utilisateurUID
|
||||||
|
));
|
||||||
|
|
||||||
|
// on retourne le résultat en supprimant les doublons à indices numériques
|
||||||
|
return $getUtilisateurInfo->fetch();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* CREE UN NOUVEL UTILISATEUR DANS LA BASE DE DONNES
|
||||||
|
*
|
||||||
|
* @identifiant<String> l'identifiant (unique) de l'utilisateur à créer
|
||||||
|
* @prenom<String> le prénom du nouvel utilisateur
|
||||||
|
* @nom<String> le nom du nouvel utilisateur
|
||||||
|
* @mail<String> le mail du nouvel utilisateur
|
||||||
|
* @mdp<String> le mot de passe du nouvel utilisateur
|
||||||
|
* @droits<Array> les droits à donner au nouvel utilisateur
|
||||||
|
*
|
||||||
|
* @return UID<String> l'UID du nouvel utilisateur s'il a bien été créé
|
||||||
|
* @return created<Boolean> VRAI si l'utilisateur n'existait pas déjà* et qu'il a bien été créé
|
||||||
|
* (*) Si aucun autre n'avait le même @identifiant
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function creer($identifiant, $prenom, $nom, $mail, $mdp, $droits){
|
||||||
|
/* [1] On normalise les données
|
||||||
|
=================================================================================================*/
|
||||||
|
foreach($droits as $droit)
|
||||||
|
if( !is_int( array_search($droit, getPermissions()) ) ) // si le droit n'est pas dans la liste des droits existants
|
||||||
|
return false; // on retourne une erreur comme quoi le droit est inexistant
|
||||||
|
|
||||||
|
|
||||||
|
$identifiant = strtolower($identifiant); // on met l'identifiant en minuscule
|
||||||
|
$prenom = ucwords( strtolower($prenom) ); // majuscule à chaque mot sinon minuscule
|
||||||
|
$nom = strtoupper($nom); // nom en majuscules
|
||||||
|
$mail = strtolower($mail); // email en minuscules
|
||||||
|
$mdp = sha1($mdp); // on hash le password (SHA1)
|
||||||
|
$droits = implode(',', $droits); // on met le droit sous forme de chaine
|
||||||
|
|
||||||
|
/* [2] On vérifie que l'utilisateur n'est pas déjà créé
|
||||||
|
=================================================================================================*/
|
||||||
|
if( $this->UID($identifiant) ) // si on a un résultat, c'est qu'un utilisateur a déjà cet identifiant (UID)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
/* [3] On créé le nouvel utilisateur
|
||||||
|
=================================================================================================*/
|
||||||
|
$creationUtilisateur = DataBase::getPDO()->prepare("INSERT INTO utilisateur(identifiant, prenom, nom, mail, mdp, droits) ".
|
||||||
|
"VALUES(:identifiant, :prenom, :nom, :mail, :mdp, :droits)");
|
||||||
|
$creationUtilisateur->execute(array(
|
||||||
|
':identifiant' => $identifiant,
|
||||||
|
':prenom' => $prenom,
|
||||||
|
':nom' => $nom,
|
||||||
|
':mail' => $mail,
|
||||||
|
':mdp' => $mdp,
|
||||||
|
':droits' => $droits
|
||||||
|
));
|
||||||
|
|
||||||
|
|
||||||
|
/* [4] On vérifie que l'utilisateur a bien été créé
|
||||||
|
=================================================================================================*/
|
||||||
|
return $this->UID($identifiant);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -153,7 +153,6 @@ require_once __ROOT__.'/manager/database.php';
|
||||||
* @return Boolean true si l'utilisateur est ok
|
* @return Boolean true si l'utilisateur est ok
|
||||||
*/
|
*/
|
||||||
function user_authentification($username, $password){
|
function user_authentification($username, $password){
|
||||||
|
|
||||||
// [1] On récupère la liste d'utilisateurs (/src/userlist.json)
|
// [1] On récupère la liste d'utilisateurs (/src/userlist.json)
|
||||||
$userList = user_getUserList();
|
$userList = user_getUserList();
|
||||||
|
|
||||||
|
@ -165,6 +164,7 @@ require_once __ROOT__.'/manager/database.php';
|
||||||
|
|
||||||
// [4] On récupère les informations dans la base de données
|
// [4] On récupère les informations dans la base de données
|
||||||
if( $utilInfo = Database::getInstance()->utilisateurInfo($username) ){ // si l'utilisateur est dans le BDD
|
if( $utilInfo = Database::getInstance()->utilisateurInfo($username) ){ // si l'utilisateur est dans le BDD
|
||||||
|
|
||||||
$_SESSION['identifiant'] = $utilInfo['identifiant'];
|
$_SESSION['identifiant'] = $utilInfo['identifiant'];
|
||||||
$_SESSION['droits'] = explode(',', $utilInfo['droits']);
|
$_SESSION['droits'] = explode(',', $utilInfo['droits']);
|
||||||
|
|
||||||
|
@ -175,13 +175,20 @@ require_once __ROOT__.'/manager/database.php';
|
||||||
// on défini si le semestre est pair ou non
|
// on défini si le semestre est pair ou non
|
||||||
$_SESSION['semestre_pair'] = semestrePair(time());
|
$_SESSION['semestre_pair'] = semestrePair(time());
|
||||||
|
|
||||||
/* TEMPORAIRE */
|
/* on récupère le semestre courant si c'est un étudiant */
|
||||||
$_SESSION['semestre'] = '2';
|
if( permission('student') ){
|
||||||
|
$semestre = DataBase::studentSemestre( $_SESSION['identifiant'], $_SESSION['semestre_pair'], $_SESSION['annee']);
|
||||||
|
if( is_numeric($semestre) )// si on a bien récupéré le semestre
|
||||||
|
$_SESSION['semestre'] = ''.$semestre.'';
|
||||||
|
else
|
||||||
|
$_SESSION['semestre'] = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'success';
|
||||||
|
|
||||||
}else
|
}else
|
||||||
return 'not_in_db';
|
return 'not_in_db';
|
||||||
|
|
||||||
return 'success';
|
|
||||||
}else
|
}else
|
||||||
return 'wrong_password';
|
return 'wrong_password';
|
||||||
|
|
||||||
|
|
48
test.php
48
test.php
|
@ -1,7 +1,6 @@
|
||||||
<?php define('__ROOT__', dirname(__FILE__) );
|
<?php define('__ROOT__', dirname(__FILE__) );
|
||||||
require_once __ROOT__.'/manager/security.php';
|
require_once __ROOT__.'/manager/security.php';
|
||||||
|
|
||||||
phpinfo();
|
|
||||||
|
|
||||||
/***************/
|
/***************/
|
||||||
/*** A FAIRE ***/
|
/*** A FAIRE ***/
|
||||||
|
@ -48,6 +47,52 @@ require_once __ROOT__.'/manager/security.php';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*** RETOURNE LE SEMESTRE COURANT D'UN ETUDIANT ***/
|
||||||
|
require_once __ROOT__.'/manager/groups.php';
|
||||||
|
|
||||||
|
$request = new stdClass();
|
||||||
|
$answer = new stdClass();
|
||||||
|
|
||||||
|
|
||||||
|
$request->level_1 = 'getSemestre';
|
||||||
|
$request->etudiant = 'mrd1609a';
|
||||||
|
|
||||||
|
groups_switch_level_1($request, $answer);
|
||||||
|
|
||||||
|
echo var_dump( $answer );
|
||||||
|
|
||||||
|
echo "<br><br><br><br><br><br><br>It works !";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -81,6 +126,7 @@ require_once __ROOT__.'/manager/security.php';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*** AJOUT D'UN UTILISATEUR À UN GROUPE ***/
|
/*** AJOUT D'UN UTILISATEUR À UN GROUPE ***/
|
||||||
|
|
||||||
// require __ROOT__.'/manager/groups.php';
|
// require __ROOT__.'/manager/groups.php';
|
||||||
|
|
Loading…
Reference in New Issue