l'identifiant de l'utilisateur recherché * * @semestre ***OPTIONNEL*** l'UID du semestre auquel on veut vérifier que l'étudiant est inscrit * * @semestre_pair ***OPTIONNEL*** détermine si le semestre est pair ou non * @annee ***OPTIONNEL*** l'année auquelle on veut vérifier si l'enseignant enseigne * * @return UID si l'utilisateur est dans la BDD, retourne son UID * @return FALSE FAUX si l'utilisateur n'est pas présent dans la BDD * */ public static function UID($identifiant, $semestre=null, $semestre_pair=null, $annee=null){ if( $semestre == null && $semestre_pair == 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 )); }elseif( is_bool($semestre_pair) && $annee != null ){ /* [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 u.identifiant = :identifiant ". "AND s.rang % 2 = :semestre_pair ". "AND s.annee = :annee"); $getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee )); }else // si les paramètres sont pas bons return false; // on retourne le résultat : FAUX si aucun résultat, sinon la valeur de l'UID de l'utilisateur return $getUtilisateurUID->fetch()['id']; } /* RENVOIE LES INFORMATIONS D'UN UTILISATEUR D'UID DONNÉ * * @utilisateurUID l'UID de l'utilisateur duquel on veut les infos * * @return utilisateur 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 l'identifiant (unique) de l'utilisateur à créer * @prenom le prénom du nouvel utilisateur * @nom le nom du nouvel utilisateur * @mail le mail du nouvel utilisateur * @mdp le mot de passe du nouvel utilisateur * @droits les droits à donner au nouvel utilisateur * * @return UID l'UID du nouvel utilisateur s'il a bien été créé * @return created 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( userRepo::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 userRepo::UID($identifiant); } }