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, sexe, 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(); } /* retourne la liste des enseignants de la BDD * * @return enseignants retourne la liste des enseignants * @return FALSE retourne FAUX si aucun résultat * */ public static function getRoleUsers(){ $getListeUtilisateurs = DataBase::getPDO()->query("SELECT DISTINCT identifiant as id, nom, prenom, droits as role FROM utilisateur WHERE droits <> 'student' ORDER BY identifiant ASC"); // si aucun résultat, on retourne false if( !($userlist=$getListeUtilisateurs->fetchAll()) ) return false; $userlist = DataBase::delNumeric( $userlist ); // sinon on met les rôles sous forme de tableau foreach($userlist as $iter=>$user) $userlist[$iter]['role'] = explode(',', $user['role']); return $userlist; } /* 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 = secure_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); } }