2015-11-09 21:05:57 +00:00
< ? php require_once __ROOT__ . '/manager/security.php' ;
/**************************************************************/
/* _ _ ____ _____ ____ ____ _____ ____ ___ */
/* | | | / ___|| ____| _ \ | _ \| ____| _ \ / _ \ */
/* | | | \___ \| _| | |_) | | |_) | _| | |_) | | | | */
/* | |_| |___) | |___| _ < | _ <| |___| __/| |_| | */
/* \___/|____/|_____|_| \_\ |_| \_\_____|_| \___/ */
/* */
/**************************************************************/
2015-11-10 08:17:41 +00:00
class userRepo extends DBAccess {
2015-11-09 21:05:57 +00:00
/* VERIFIE L 'EXISTENCE D' UN UTILISATEUR DANS LA BDD
*
* @ identifiant < String > l 'identifiant de l' utilisateur recherché
2015-11-10 23:04:56 +00:00
*
* @ semestre < int > *** OPTIONNEL *** l 'UID du semestre auquel on veut vérifier que l' étudiant est inscrit
* @ annee < int > *** OPTIONNEL *** l 'année auquelle on veut vérifier si l' enseignant enseigne
*
2015-11-09 21:05:57 +00:00
* @ return UID < String > si l ' utilisateur est dans la BDD , retourne son UID
* @ return FALSE < Boolean > FAUX si l 'utilisateur n' est pas présent dans la BDD
*
*/
2015-11-10 23:04:56 +00:00
public static function UID ( $identifiant , $semestre = null , $annee = null ){
if ( $semestre == null && $annee == null ){ // on cherche un utilisateur avec cet identifiant
/* [ 1 ] Cas où on cherche juste si l ' utilisateur existe
=============================================================*/
$getUtilisateurUID = DataBase :: getPDO () -> prepare ( " SELECT identifiant as id FROM utilisateur WHERE identifiant = :identifiant " );
$getUtilisateurUID -> execute ( array ( ':identifiant' => $identifiant ));
} elseif ( $semestre != null ){
/* [ 2 ] Cas où on cherche si un étudiant est inscrit à un semestre
==============================================================*/
$getUtilisateurUID = DataBase :: getPDO () -> prepare ( " SELECT u.identifiant as id " .
" FROM utilisateur as u, appartenance as app " .
" WHERE u.identifiant = app.id_etudiant " .
" AND u.identifiant = :identifiant " .
" AND app.id_semestre = :semestre " );
$getUtilisateurUID -> execute ( array ( ':identifiant' => $identifiant , ':semestre' => $semestre ));
} else {
/* [ 2 ] Cas où on cherche si un enseignant enseigne l ' année donnée
==============================================================*/
$getUtilisateurUID = DataBase :: getPDO () -> prepare ( " SELECT DISTINCT u.identifiant as id " .
" FROM utilisateur as u, enseignement as ens, semestre as s, mcc_module as mcc_m, mcc_ue " .
" WHERE u.identifiant = ens.id_enseignant " .
" AND ens.id_mcc_module = mcc_m.id_mcc_module " .
" AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue " .
" AND mcc_ue.id_semestre = s.id_semestre " .
" AND s.annee = :annee " .
" AND u.identifiant = :identifiant " );
$getUtilisateurUID -> execute ( array ( ':identifiant' => $identifiant , ':annee' => $annee ));
}
2015-11-09 21:05:57 +00:00
// on retourne le résultat : FAUX si aucun résultat, sinon la valeur de l'UID de l'utilisateur
return $getUtilisateurUID -> fetch ()[ 'id' ];
}
2015-11-10 09:50:43 +00:00
/* 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
2015-11-11 14:50:05 +00:00
$getUtilisateurInfo = DataBase :: getPDO () -> prepare ( " SELECT identifiant as id, prenom, nom, mail, droits FROM utilisateur WHERE identifiant = :utilisateurUID " );
$getUtilisateurInfo -> execute ( array ( ':utilisateurUID' => $utilisateurUID ));
2015-11-10 09:50:43 +00:00
// 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éé
=================================================================================================*/
2015-11-11 00:06:24 +00:00
if ( userRepo :: UID ( $identifiant ) ) // si on a un résultat, c'est qu'un utilisateur a déjà cet identifiant (UID)
2015-11-10 09:50:43 +00:00
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éé
=================================================================================================*/
2015-11-11 00:06:24 +00:00
return userRepo :: UID ( $identifiant );
2015-11-10 09:50:43 +00:00
}
2015-11-10 23:04:56 +00:00
2015-11-09 21:05:57 +00:00
}