diff --git a/manager/career.php b/manager/career.php index a91fa1b..2f43c22 100755 --- a/manager/career.php +++ b/manager/career.php @@ -36,47 +36,54 @@ require_once __ROOT__.'/manager/database.php'; /*******************************/ /* liste des notes par modules */ /*******************************/ - case 'getNotesByModules': - $areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee); // les arguments existent - $typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->semestre) && is_string($request->annee); // 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 -]{6,100}$/i', $request->etudiant); // nom bon format - $semestreCheck = $etudiantCheck && preg_match('/^[1-4]{1}$/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 - $notes = DataBase::getInstance()->getNotesByModules($request->etudiant, $request->semestre, $request->annee); + case 'getNotesByModules': if( connected() ){ - if( is_array($notes) ){ // si on a bien un tableau - $answer->notes = $notes; // on renvoie dans answer->note - $answer->request = 'success'; // et on renvoie success - }else // sinon si c'est pas un tableau - $answer->request = $notes; // on retourne l'erreur - }else - $answer->request = 'param_error'; + $areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee); // les arguments existent + $typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->semestre) && is_string($request->annee); // 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 -]{6,100}$/i', $request->etudiant); // nom bon format + $semestreCheck = $etudiantCheck && preg_match('/^[1-4]{1}$/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 + $notes = DataBase::getInstance()->getNotesByModules($request->etudiant, $request->semestre, $request->annee); + + if( is_array($notes) ){ // si on a bien un tableau + $answer->notes = $notes; // on renvoie dans answer->note + $answer->request = 'success'; // et on renvoie success + }else // sinon si c'est pas un tableau + $answer->request = $notes; // on retourne l'erreur + }else + $answer->request = 'param_error'; + + } break; /***************************/ /* liste des notes par UEs */ /***************************/ - case 'getNotesByUEs': - $areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee); // les arguments existent - $typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->semestre) && is_string($request->annee); // 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 -]{6,100}$/i', $request->etudiant); // nom bon format - $semestreCheck = $etudiantCheck && preg_match('/^[1-4]{1}$/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 - $notes = DataBase::getInstance()->getNotesByUEs($request->etudiant, $request->semestre, $request->annee); + case 'getNotesByUEs': if( connected() ){ - if( is_array($notes) ){ // si on a bien un tableau - $answer->notes = $notes; // on renvoie dans answer->note - $answer->request = 'success'; // et on renvoie success - }else // sinon si c'est pas un tableau - $answer->request = $notes; // on retourne l'erreur + $areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee); // les arguments existent + $typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->semestre) && is_string($request->annee); // 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 -]{6,100}$/i', $request->etudiant); // nom bon format + $semestreCheck = $etudiantCheck && preg_match('/^[1-4]{1}$/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 + $notes = DataBase::getInstance()->getNotesByUEs($request->etudiant, $request->semestre, $request->annee); + + if( is_array($notes) ){ // si on a bien un tableau + $answer->notes = $notes; // on renvoie dans answer->note + $answer->request = 'success'; // et on renvoie success + }else // sinon si c'est pas un tableau + $answer->request = $notes; // on retourne l'erreur + }else + $answer->request = 'param_error'; + }else - $answer->request = 'param_error'; + $answer->request = 'permission_error'; break; diff --git a/manager/database.php b/manager/database.php index 3345ad8..1da5b62 100755 --- a/manager/database.php +++ b/manager/database.php @@ -27,6 +27,82 @@ class DataBase{ return new DataBase("localhost", "sid2", "php", "Qt358nUdyeTxLDM8"); } + +/*************************************************************/ +/* _____ ______ _ _ ______ _____ _ */ +/* / ____| ____| \ | | ____| __ \ /\ | | */ +/* | | __| |__ | \| | |__ | |__) | / \ | | */ +/* | | |_ | __| | . ` | __| | _ / / /\ \ | | */ +/* | |__| | |____| |\ | |____| | \ \ / ____ \| |____ */ +/* \_____|______|_| \_|______|_| \_\/_/ \_\______| */ +/* */ +/*************************************************************/ + + /********************************************************/ + /*** Vérifie l'existence d'un utilisateur dans le BDD ***/ + /********************************************************/ + private function utilisateurUID($identifiant){ + /*** on cherche un utilisateur avec cet identifiant ***/ + $getUtilisateurUID = $this->pdo->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :identifiant"); + $getUtilisateurUID->execute(array( + ':identifiant' => $identifiant + )); + + // on retourne le résultat : FAUX si aucun résultat, sinon la valeur de l'UID de l'utilisateur + return $getUtilisateurUID->fetch()['id']; + } + + + + /***************************************************/ + /*** Vérifie l'existence d'un groupe dans le BDD ***/ + /***************************************************/ + private function groupeUID($nom){ + /*** on cherche un groupe avec ce nom ***/ + $getGroupeUID = $this->pdo->prepare("SELECT id_groupe as id FROM groupe WHERE nom = :nom"); + $getGroupeUID->execute(array( + ':nom' => $nom + )); + + // on retourne le résultat : FAUX si aucun résultat, sinon la valeur de l'UID du groupe + return $getGroupeUID->fetch()['id']; + } + + + /*****************************************************/ + /*** Vérifie l'existence d'un semestre dans le BDD ***/ + /*****************************************************/ + private function semestreUID($rang, $annee){ + /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ + $getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee"); + $getSemestreUID->execute(array( + ':rang' => $rang, + ':annee' => $annee + )); + + // on retourne le résultat : FAUX si aucun résultat, sinon la valeur de l'UID du semestre + return $getSemestreUID->fetch()['id']; + } + + + + + + + + + +/*************************************************************************************/ +/* _ _ _______ _____ _ _____ _____ _______ ______ _ _ _____ */ +/* | | | |__ __|_ _| | |_ _|/ ____| /\|__ __| ____| | | | __ \ */ +/* | | | | | | | | | | | | | (___ / \ | | | |__ | | | | |__) | */ +/* | | | | | | | | | | | | \___ \ / /\ \ | | | __| | | | | _ / */ +/* | |__| | | | _| |_| |____ _| |_ ____) / ____ \| | | |____| |__| | | \ \ */ +/* \____/ |_| |_____|______|_____|_____/_/ \_\_| |______|\____/|_| \_\ */ +/* */ +/*************************************************************************************/ + + /*********************************************/ /*** création d'un utilisateur dans la bdd ***/ /*********************************************/ @@ -58,11 +134,36 @@ class DataBase{ return 'success'; else return 'error'; - } + /*********************************************************************************/ + /*** on récupère les informations utiles à l'utilisateur lors de la connection ***/ + /*********************************************************************************/ + public function utilisateurInfo($identifiant){ + // si l'utilisateur n'existe pas on retourne 'unknown_user' + if( !($utilisateurUID=$this->utilisateurUID($identifiant)) ) return 'unknown_user'; + + + $getUtilisateurInfo = $this->pdo->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] + } + + + +/**********************************************************/ +/* _____ _____ ____ _ _ _____ ______ _____ */ +/* / ____| __ \ / __ \| | | | __ \| ____|/ ____| */ +/* | | __| |__) | | | | | | | |__) | |__ | (___ */ +/* | | |_ | _ /| | | | | | | ___/| __| \___ \ */ +/* | |__| | | \ \| |__| | |__| | | | |____ ____) | */ +/* \_____|_| \_\\____/ \____/|_| |______|_____/ */ +/* */ +/**********************************************************/ + /****************************************/ /*** création d'un groupe dans la bdd ***/ @@ -98,45 +199,16 @@ class DataBase{ $getLastCount = $this->pdo->query('SELECT count(id_etudiant) as count FROM appartenance'); $lastCount = (int) $getLastCount->fetch()['count']; + // si on trouve pas, on retourne "unknown_user" + if( !($etudiantUID=$this->utilisateurUID($etudiant)) ) return 'unknown_user'; - /*** on cherche un utilisateur avec cet identifiant ***/ - $getEtudiantUID = $this->pdo->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :etudiant"); - $getEtudiantUID->execute(array( - ':etudiant' => $etudiant - )); + // si on trouve pas, on retourne 'unknown_group' sinon on définit la variable + if( !($groupeUID=$this->groupeUID($groupe)) ) return 'unknown_group'; + else $groupeUID = (int) $groupeUID; - // si on trouve, on le définit, sinon on retourne "unknown_user" - if( $etudiantUID = $getEtudiantUID->fetch()['id'] ) - $etudiantUID = $etudiantUID; - else - return 'unknown_user'; - - - /*** on cherche un groupe avec ce nom ***/ - $getGroupeUID = $this->pdo->prepare("SELECT id_groupe as id FROM groupe WHERE nom = :nom"); - $getGroupeUID->execute(array( - ':nom' => $groupe - )); - - // si on trouve, on le définit, sinon on retourne "unknown_group" - if( $groupeUID = $getGroupeUID->fetch()['id'] ) - $groupeUID = (int) $groupeUID; - else - return 'unknown_group'; - - - /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ - $getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee"); - $getSemestreUID->execute(array( - ':rang' => $semestre, - ':annee' => $annee - )); - - // si on trouve, on le définit, sinon on retourne "unknown_group" - if( $semestreUID = $getSemestreUID->fetch()['id'] ) - $semestreUID = (int) $semestreUID; - else - return 'unknown_semestre'; + // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + if( !($semestreUID=$this->semestreUID($semestre, $annee)) ) return 'unknown_semestre'; + else $semestreUID = (int) $semestreUID; @@ -170,31 +242,13 @@ class DataBase{ /******************************************************/ public function listeEtudiantsGroupe($groupe, $semestre, $annee){ - /*** on cherche un groupe avec ce nom ***/ - $getGroupeUID = $this->pdo->prepare("SELECT id_groupe as id FROM groupe WHERE nom = :nom"); - $getGroupeUID->execute(array( - ':nom' => $groupe - )); + // si on trouve pas, on retourne 'unknown_group' sinon on définit la variable + if( !($groupeUID=$this->groupeUID($groupe)) ) return 'unknown_group'; + else $groupeUID = (int) $groupeUID; - // si on trouve, on le définit, sinon on retourne "unknown_group" - if( $groupeUID = $getGroupeUID->fetch()['id'] ) - $groupeUID = (int) $groupeUID; - else - return 'unknown_group'; - - - /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ - $getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee"); - $getSemestreUID->execute(array( - ':rang' => $semestre, - ':annee' => $annee - )); - - // si on trouve, on le définit, sinon on retourne "unknown_group" - if( $semestreUID = $getSemestreUID->fetch()['id'] ) - $semestreUID = (int) $semestreUID; - else - return 'unknown_semestre'; + // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + if( !($semestreUID=$this->semestreUID($semestre, $annee)) ) return 'unknown_semestre'; + else $semestreUID = (int) $semestreUID; @@ -231,18 +285,10 @@ class DataBase{ /*** retourne la liste des utilisateurs des groupes d'un semestre ***/ /********************************************************************/ public function listeEtudiantsTousGroupesSemestre($semestre, $annee){ - /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ - $getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee"); - $getSemestreUID->execute(array( - ':rang' => $semestre, - ':annee' => $annee - )); + // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + if( !($semestreUID=$this->semestreUID($semestre, $annee)) ) return 'unknown_semestre'; + else $semestreUID = (int) $semestreUID; - // si on trouve, on le définit, sinon on retourne "unknown_group" - if( $semestreUID = $getSemestreUID->fetch()['id'] ) - $semestreUID = (int) $semestreUID; - else - return 'unknown_semestre'; // on cherche tout les groupes du même semestre de la même année $getGroupesUID = $this->pdo->prepare("SELECT DISTINCT g.nom, s.rang, s.nom as semestre ". @@ -352,17 +398,9 @@ class DataBase{ return 'unknown_year'; - /*** on cherche un utilisateur avec cet identifiant ***/ - $getEnseignantUID = $this->pdo->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :enseignant"); - $getEnseignantUID->execute(array( - ':enseignant' => $enseignant - )); + // si on trouve pas, on retourne "unknown_user" + if( !($enseignantUID=$this->utilisateurUID($enseignant)) ) return 'unknown_user'; - // si on trouve, on le définit, sinon on retourne "unknown_user" - if( $enseignantUID = $getEnseignantUID->fetch()['id'] ) - $enseignantUID = $enseignantUID; - else - return 'unknown_user'; // on cherche tout les groupes du même semestre de la même année $getGroupesUID = $this->pdo->prepare("SELECT DISTINCT s.nom as semestre, s.rang, g.nom as nom ". @@ -414,30 +452,14 @@ class DataBase{ /*** retourne le nom du groupe d'un étudiant ***/ /***********************************************/ public function getGroupeEtudiant($etudiant, $semestre, $annee){ - /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ - $getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee"); - $getSemestreUID->execute(array( - ':rang' => $semestre, - ':annee' => $annee - )); + + // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + if( !($semestreUID=$this->semestreUID($semestre, $annee)) ) return 'unknown_semestre'; + else $semestreUID = (int) $semestreUID; - // si on trouve, on le définit, sinon on retourne "unknown_group" - if( $semestreUID = $getSemestreUID->fetch()['id'] ) - $semestreUID = (int) $semestreUID; - else - return 'unknown_semestre'; + // si on trouve pas, on retourne "unknown_user" + if( !($etudiantUID=$this->utilisateurUID($etudiant)) ) return 'unknown_user'; - /*** on cherche un utilisateur avec cet identifiant ***/ - $getEtudiantUID = $this->pdo->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :etudiant"); - $getEtudiantUID->execute(array( - ':etudiant' => $etudiant - )); - - // si on trouve, on le définit, sinon on retourne "unknown_user" - if( $etudiantUID = $getEtudiantUID->fetch()['id'] ) - $etudiantUID = $etudiantUID; - else - return 'unknown_user'; // on cherche le groupe associé $getNomGroupe = $this->pdo->prepare("SELECT g.nom ". @@ -460,36 +482,143 @@ class DataBase{ return 'error'; } - /**************************************************/ - /*** retourne les modules d'un étudiant par UEs ***/ - /**************************************************/ - public function getModulesByUEByEtudiant($etudiant, $semestre, $annee){ - /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ - $getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee"); - $getSemestreUID->execute(array( - ':rang' => $semestre, - ':annee' => $annee - )); - - // si on trouve, on le définit, sinon on retourne "unknown_group" - if( $semestreUID = $getSemestreUID->fetch()['id'] ) - $semestreUID = (int) $semestreUID; - else - return 'unknown_semestre'; - /*** on cherche un utilisateur avec cet identifiant ***/ - $getEtudiantUID = $this->pdo->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :etudiant"); - $getEtudiantUID->execute(array( + + /******************************************************/ + /***** déplace un étudiant d'un groupe à un autre *****/ + /******************************************************/ + public function deplacerEtudiant($etudiant, $groupe, $annee){ + + + /*** on cherche le nouveau groupe pour cet utilisateur ***/ + $getNouveauGroupeUID = $this->pdo->prepare("SELECT DISTINCT s.id_semestre as semestre, g.id_groupe as id, u.identifiant as etuUID ". + "FROM groupe as g, appartenance as app, appartenance as myapp, utilisateur as u, semestre as s ". + "WHERE g.nom = :groupe ". + "AND u.identifiant = :etudiant ". + + "AND myapp.id_etudiant = u.identifiant ". + "AND myapp.id_semestre = s.id_semestre ". + + "AND app.id_groupe = g.id_groupe ". + "AND app.id_semestre = s.id_semestre"); + $getNouveauGroupeUID->execute(array( + ':groupe' => $groupe, ':etudiant' => $etudiant )); // si on trouve, on le définit, sinon on retourne "unknown_user" - if( $etudiantUID = $getEtudiantUID->fetch()['id'] ) - $etudiantUID = $etudiantUID; + if( $data = $getNouveauGroupeUID->fetch() ){ + $nouveauGroupeUID = (int) $data['id']; + $semestreUID = $data['semestre']; + $etudiantUID = $data['etuUID']; + } else - return 'unknown_user'; + return 'unknown_newgroup'; + + + /*** on cherche le groupe de cet utilisateur ***/ + $getGroupeUID = $this->pdo->prepare("SELECT g.id_groupe as id ". + "FROM utilisateur as u, groupe as g, appartenance as app, semestre as s ". + "WHERE app.id_etudiant = u.identifiant ". + "AND app.id_groupe = g.id_groupe ". + "AND app.id_semestre = s.id_semestre ". + + "AND u.identifiant = :etudiantUID ". + "AND app.id_semestre = :semestreUID"); + $getGroupeUID->execute(array( + ':etudiantUID' => $etudiantUID, + ':semestreUID' => $semestreUID, + )); + + // si on trouve, on le définit, sinon on retourne "unknown_user" + if( $groupeUID = $getGroupeUID->fetch()['id'] ){ + $groupeUID = $groupeUID; + + /***************************************************************/ + /*** CAS 1 : l'utilisateur a déjà un groupe pour ce semestre ***/ + /***************************************************************/ + + // il suffit donc maintenant de modifier l' "appartenance" + $updateGroupe = $this->pdo->prepare("UPDATE appartenance SET id_groupe = :nouveauGroupeUID ". + "WHERE id_etudiant = :etudiantUID ". + "AND id_groupe = :groupeUID ". + "AND id_semestre = :semestreUID"); + $updateGroupe->execute(array( + ':nouveauGroupeUID' => $nouveauGroupeUID, + ':etudiantUID' => $etudiantUID, + ':groupeUID' => $groupeUID, + ':semestreUID' => $semestreUID + )); + + } + else{ + /****************************************************/ + /*** CAS 2 : l'utilisateur n'a pas encore de groupe */ + /****************************************************/ + $insertGroupe = $this->pdo->prepare("INSERT INTO appartenance(id_appartenance, id_etudiant, id_groupe, id_semestre) ". + "VALUES(NULL, :etudiantUID, :nouveauGroupeUID, :semestreUID)"); + $insertGroupe->execute(array( + ':etudiantUID' => $etudiantUID, + ':nouveauGroupeUID' => $nouveauGroupeUID, + ':semestreUID' => $semestreUID + )); + } + + /* Vérification de l'entrée dans la table */ + $verif = $this->pdo->prepare("SELECT count(id_appartenance) as count ". + "FROM appartenance ". + "WHERE id_etudiant = :etudiantUID ". + "AND id_groupe = :nouveauGroupeUID ". + "AND id_semestre = :semestreUID"); + $verif->execute(array( + ':etudiantUID' => $etudiantUID, + ':nouveauGroupeUID' => $nouveauGroupeUID, + ':semestreUID' => $semestreUID + )); + + $verifFetch = $verif->fetch(); + + if( $verifFetch && $verifFetch['count'] == '1' ) + return 'success'; + else + return 'error'; + + } + + + + + + +/**********************************************************/ +/* */ +/* __ __ ____ _____ _ _ _ ______ _____ */ +/* | \/ |/ __ \| __ \| | | | | | ____|/ ____| */ +/* | \ / | | | | | | | | | | | | |__ | (___ */ +/* | |\/| | | | | | | | | | | | | __| \___ \ */ +/* | | | | |__| | |__| | |__| | |____| |____ ____) | */ +/* |_| |_|\____/|_____/ \____/|______|______|_____/ */ +/* */ +/**********************************************************/ + + + + /**************************************************/ + /*** retourne les modules d'un étudiant par UEs ***/ + /**************************************************/ + public function getModulesByUEByEtudiant($etudiant, $semestre, $annee){ + + // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + if( !($semestreUID=$this->semestreUID($semestre, $annee)) ) return 'unknown_semestre'; + else $semestreUID = (int) $semestreUID; + + // si on trouve pas, on retourne "unknown_user" + if( !($etudiantUID=$this->utilisateurUID($etudiant)) ) return 'unknown_user'; + + + /*** on cherche le groupe de cet utilisateur ***/ $getGroupeUID = $this->pdo->prepare("SELECT g.id_groupe as id ". @@ -555,31 +684,17 @@ class DataBase{ /*** retourne les modules d'un étudiant ***/ /******************************************/ public function getModulesEtudiant($etudiant, $semestre, $annee){ - /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ - $getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee"); - $getSemestreUID->execute(array( - ':rang' => $semestre, - ':annee' => $annee - )); - - // si on trouve, on le définit, sinon on retourne "unknown_group" - if( $semestreUID = $getSemestreUID->fetch()['id'] ) - $semestreUID = (int) $semestreUID; - else - return 'unknown_semestre'; + + // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + if( !($semestreUID=$this->semestreUID($semestre, $annee)) ) return 'unknown_semestre'; + else $semestreUID = (int) $semestreUID; + + + // si on trouve pas, on retourne "unknown_user" + if( !($etudiantUID=$this->utilisateurUID($etudiant)) ) return 'unknown_user'; - /*** on cherche un utilisateur avec cet identifiant ***/ - $getEtudiantUID = $this->pdo->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :etudiant"); - $getEtudiantUID->execute(array( - ':etudiant' => $etudiant - )); - // si on trouve, on le définit, sinon on retourne "unknown_user" - if( $etudiantUID = $getEtudiantUID->fetch()['id'] ) - $etudiantUID = $etudiantUID; - else - return 'unknown_user'; /*** on cherche le groupe de cet utilisateur ***/ $getGroupeUID = $this->pdo->prepare("SELECT g.id_groupe as id ". @@ -637,32 +752,16 @@ class DataBase{ /*** retourne les UEs d'un étudiant ***/ /**************************************/ public function getUEsEtudiant($etudiant, $semestre, $annee){ - /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ - $getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee"); - $getSemestreUID->execute(array( - ':rang' => $semestre, - ':annee' => $annee - )); + + // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + if( !($semestreUID=$this->semestreUID($semestre, $annee)) ) return 'unknown_semestre'; + else $semestreUID = (int) $semestreUID; - // si on trouve, on le définit, sinon on retourne "unknown_group" - if( $semestreUID = $getSemestreUID->fetch()['id'] ) - $semestreUID = (int) $semestreUID; - else - return 'unknown_semestre'; + // si on trouve pas, on retourne "unknown_user" + if( !($etudiantUID=$this->utilisateurUID($etudiant)) ) return 'unknown_user'; - /*** on cherche un utilisateur avec cet identifiant ***/ - $getEtudiantUID = $this->pdo->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :etudiant"); - $getEtudiantUID->execute(array( - ':etudiant' => $etudiant - )); - - // si on trouve, on le définit, sinon on retourne "unknown_user" - if( $etudiantUID = $getEtudiantUID->fetch()['id'] ) - $etudiantUID = $etudiantUID; - else - return 'unknown_user'; /*** on cherche le groupe de cet utilisateur ***/ $getGroupeUID = $this->pdo->prepare("SELECT g.id_groupe as id ". @@ -877,10 +976,15 @@ class DataBase{ - - - - +/*******************************************/ +/* _ _ ____ _______ ______ _____ */ +/* | \ | |/ __ \__ __| ____|/ ____| */ +/* | \| | | | | | | | |__ | (___ */ +/* | . ` | | | | | | | __| \___ \ */ +/* | |\ | |__| | | | | |____ ____) | */ +/* |_| \_|\____/ |_| |______|_____/ */ +/* */ +/*******************************************/ @@ -888,18 +992,10 @@ class DataBase{ /*** retourne les notes par modules ***/ /**************************************/ public function getNotesByModules($etudiant, $semestre, $annee){ - /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ - $getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee"); - $getSemestreUID->execute(array( - ':rang' => $semestre, - ':annee' => $annee - )); - - // si on trouve, on le définit, sinon on retourne "unknown_group" - if( $semestreUID = $getSemestreUID->fetch()['id'] ) - $semestreUID = (int) $semestreUID; - else - return 'unknown_semestre'; + + // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + if( !($semestreUID=$this->semestreUID($semestre, $annee)) ) return 'unknown_semestre'; + else $semestreUID = (int) $semestreUID; /*** on cherche un utilisateur avec cet identifiant ***/ @@ -944,18 +1040,10 @@ class DataBase{ /*** retourne les notes par UE ***/ /*********************************/ public function getNotesByUEs($etudiant, $semestre, $annee){ - /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ - $getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee"); - $getSemestreUID->execute(array( - ':rang' => $semestre, - ':annee' => $annee - )); - - // si on trouve, on le définit, sinon on retourne "unknown_group" - if( $semestreUID = $getSemestreUID->fetch()['id'] ) - $semestreUID = (int) $semestreUID; - else - return 'unknown_semestre'; + + // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + if( !($semestreUID=$this->semestreUID($semestre, $annee)) ) return 'unknown_semestre'; + else $semestreUID = (int) $semestreUID; /*** on cherche un utilisateur avec cet identifiant ***/ @@ -1002,18 +1090,10 @@ class DataBase{ /*** retourne les notes d'un module ***/ /**************************************/ public function getModuleNotes($etudiant, $module, $semestre, $annee){ - /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ - $getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee"); - $getSemestreUID->execute(array( - ':rang' => $semestre, - ':annee' => $annee - )); - - // si on trouve, on le définit, sinon on retourne "unknown_group" - if( $semestreUID = $getSemestreUID->fetch()['id'] ) - $semestreUID = (int) $semestreUID; - else - return 'unknown_semestre'; + + // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + if( !($semestreUID=$this->semestreUID($semestre, $annee)) ) return 'unknown_semestre'; + else $semestreUID = (int) $semestreUID; /*** on cherche un utilisateur avec cet identifiant ***/ @@ -1102,18 +1182,10 @@ class DataBase{ /*** retourne les notes d'un UE ***/ /**********************************/ public function getUENotes($etudiant, $UE, $semestre, $annee){ - /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ - $getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee"); - $getSemestreUID->execute(array( - ':rang' => $semestre, - ':annee' => $annee - )); - - // si on trouve, on le définit, sinon on retourne "unknown_group" - if( $semestreUID = $getSemestreUID->fetch()['id'] ) - $semestreUID = (int) $semestreUID; - else - return 'unknown_semestre'; + + // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + if( !($semestreUID=$this->semestreUID($semestre, $annee)) ) return 'unknown_semestre'; + else $semestreUID = (int) $semestreUID; /*** on cherche un utilisateur avec cet identifiant ***/ @@ -1200,107 +1272,6 @@ class DataBase{ - /******************************************************/ - /***** déplace un étudiant d'un groupe à un autre *****/ - /******************************************************/ - public function deplacerEtudiant($etudiant, $groupe, $annee){ - - - /*** on cherche le nouveau groupe pour cet utilisateur ***/ - $getNouveauGroupeUID = $this->pdo->prepare("SELECT DISTINCT s.id_semestre as semestre, g.id_groupe as id, u.identifiant as etuUID ". - "FROM groupe as g, appartenance as app, appartenance as myapp, utilisateur as u, semestre as s ". - "WHERE g.nom = :groupe ". - "AND u.identifiant = :etudiant ". - - "AND myapp.id_etudiant = u.identifiant ". - "AND myapp.id_semestre = s.id_semestre ". - - "AND app.id_groupe = g.id_groupe ". - "AND app.id_semestre = s.id_semestre"); - $getNouveauGroupeUID->execute(array( - ':groupe' => $groupe, - ':etudiant' => $etudiant - )); - - // si on trouve, on le définit, sinon on retourne "unknown_user" - if( $data = $getNouveauGroupeUID->fetch() ){ - $nouveauGroupeUID = (int) $data['id']; - $semestreUID = $data['semestre']; - $etudiantUID = $data['etuUID']; - } - else - return 'unknown_newgroup'; - - - /*** on cherche le groupe de cet utilisateur ***/ - $getGroupeUID = $this->pdo->prepare("SELECT g.id_groupe as id ". - "FROM utilisateur as u, groupe as g, appartenance as app, semestre as s ". - "WHERE app.id_etudiant = u.identifiant ". - "AND app.id_groupe = g.id_groupe ". - "AND app.id_semestre = s.id_semestre ". - - "AND u.identifiant = :etudiantUID ". - "AND app.id_semestre = :semestreUID"); - $getGroupeUID->execute(array( - ':etudiantUID' => $etudiantUID, - ':semestreUID' => $semestreUID, - )); - - // si on trouve, on le définit, sinon on retourne "unknown_user" - if( $groupeUID = $getGroupeUID->fetch()['id'] ){ - $groupeUID = $groupeUID; - - /***************************************************************/ - /*** CAS 1 : l'utilisateur a déjà un groupe pour ce semestre ***/ - /***************************************************************/ - - // il suffit donc maintenant de modifier l' "appartenance" - $updateGroupe = $this->pdo->prepare("UPDATE appartenance SET id_groupe = :nouveauGroupeUID ". - "WHERE id_etudiant = :etudiantUID ". - "AND id_groupe = :groupeUID ". - "AND id_semestre = :semestreUID"); - $updateGroupe->execute(array( - ':nouveauGroupeUID' => $nouveauGroupeUID, - ':etudiantUID' => $etudiantUID, - ':groupeUID' => $groupeUID, - ':semestreUID' => $semestreUID - )); - - } - else{ - /****************************************************/ - /*** CAS 2 : l'utilisateur n'a pas encore de groupe */ - /****************************************************/ - $insertGroupe = $this->pdo->prepare("INSERT INTO appartenance(id_appartenance, id_etudiant, id_groupe, id_semestre) ". - "VALUES(NULL, :etudiantUID, :nouveauGroupeUID, :semestreUID)"); - $insertGroupe->execute(array( - ':etudiantUID' => $etudiantUID, - ':nouveauGroupeUID' => $nouveauGroupeUID, - ':semestreUID' => $semestreUID - )); - } - - /* Vérification de l'entrée dans la table */ - $verif = $this->pdo->prepare("SELECT count(id_appartenance) as count ". - "FROM appartenance ". - "WHERE id_etudiant = :etudiantUID ". - "AND id_groupe = :nouveauGroupeUID ". - "AND id_semestre = :semestreUID"); - $verif->execute(array( - ':etudiantUID' => $etudiantUID, - ':nouveauGroupeUID' => $nouveauGroupeUID, - ':semestreUID' => $semestreUID - )); - - $verifFetch = $verif->fetch(); - - if( $verifFetch && $verifFetch['count'] == '1' ) - return 'success'; - else - return 'error'; - - } - } ?> \ No newline at end of file diff --git a/manager/groups.php b/manager/groups.php index 6f86771..c361312 100755 --- a/manager/groups.php +++ b/manager/groups.php @@ -37,189 +37,221 @@ require_once __ROOT__.'/manager/database.php'; /************************/ /* création d'un groupe */ /************************/ - case 'create': - $areSetParam = isset($request->nom) ; // l'argument existe - $typeOkParam = $areSetParam && is_string($request->nom); // si c'est une string - $nEmptyParam = $typeOkParam && strlen($request->nom) > 0; // d'au moins 1 caractère - $nomCheck = $nEmptyParam && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->nom); // nom bon format + case 'create': if( permission('admin') ){ + + $areSetParam = isset($request->nom) ; // l'argument existe + $typeOkParam = $areSetParam && is_string($request->nom); // si c'est une string + $nEmptyParam = $typeOkParam && strlen($request->nom) > 0; // d'au moins 1 caractère + $nomCheck = $nEmptyParam && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->nom); // nom bon format + + if( $nomCheck ){ // si tout les paramètres sont bons + $answer->request = DataBase::getInstance()->creerGroupe($request->nom); + }else + $answer->request = 'param_error'; - if( $nomCheck ){ // si tout les paramètres sont bons - $answer->request = DataBase::getInstance()->creerGroupe($request->nom); }else - $answer->request = 'param_error'; + $answer->request = 'permission_error'; break; /***********************************/ /* ajout d'un étudiant à un groupe */ /***********************************/ - case 'add': - $areSetParam = isset($request->etudiant) && isset($request->groupe) && isset($request->semestre) && isset($request->annee); // les arguments existent - $typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->groupe) && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings - $nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && strlen($request->groupe) > 0; // d'au moins 1 caractère - $etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format - $groupeCheck = $etudiantCheck && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format - $semestreCheck = $groupeCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format - $anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format + case 'add': if( permission('admin') ){ - if( $anneeCheck ){ // si tout les paramètres sont bons - $answer->request = DataBase::getInstance()->ajouterEtudiantGroupe($request->etudiant, $request->groupe, $request->semestre, $request->annee); + $areSetParam = isset($request->etudiant) && isset($request->groupe) && isset($request->semestre) && isset($request->annee); // les arguments existent + $typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->groupe) && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings + $nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && strlen($request->groupe) > 0; // d'au moins 1 caractère + $etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format + $groupeCheck = $etudiantCheck && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format + $semestreCheck = $groupeCheck && preg_match('/^[1-4]{1}$/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 + $answer->request = DataBase::getInstance()->ajouterEtudiantGroupe($request->etudiant, $request->groupe, $request->semestre, $request->annee); + }else + $answer->request = 'param_error'; + }else - $answer->request = 'param_error'; + $answer->request = 'permission_error'; break; /*****************************************/ /* retourne les utilisateurs d'un groupe */ /*****************************************/ - case 'userlist': - $areSetParam = isset($request->groupe) && isset($request->semestre) && isset($request->annee); // les arguments existent - $typeOkParam = $areSetParam && is_string($request->groupe) && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings - $nEmptyParam = $typeOkParam && strlen($request->groupe) > 0; // d'au moins 1 caractère - $groupeCheck = $nEmptyParam && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format - $semestreCheck = $groupeCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format - $anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format + case 'userlist': if( connected() ){ - if( $anneeCheck ){ // si tout les paramètres sont bons - $userlist = DataBase::getInstance()->listeEtudiantsGroupe($request->groupe, $request->semestre, $request->annee); + $areSetParam = isset($request->groupe) && isset($request->semestre) && isset($request->annee); // les arguments existent + $typeOkParam = $areSetParam && is_string($request->groupe) && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings + $nEmptyParam = $typeOkParam && strlen($request->groupe) > 0; // d'au moins 1 caractère + $groupeCheck = $nEmptyParam && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format + $semestreCheck = $groupeCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format + $anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format - if( is_array($userlist) ){ // si on a récupéré la liste des utilisateurs - $answer->userlist = $userlist; - $answer->request = 'success'; - }else // si on a pas récupéré de liste, alors c'est que $userlist est un message d'erreur - $answer->answer = $userlist; + if( $anneeCheck ){ // si tout les paramètres sont bons + $userlist = DataBase::getInstance()->listeEtudiantsGroupe($request->groupe, $request->semestre, $request->annee); + if( is_array($userlist) ){ // si on a récupéré la liste des utilisateurs + $answer->userlist = $userlist; + $answer->request = 'success'; + }else // si on a pas récupéré de liste, alors c'est que $userlist est un message d'erreur + $answer->answer = $userlist; + + }else + $answer->request = 'param_error'; + }else - $answer->request = 'param_error'; + $answer->request = 'permission_error'; break; /*******************************************************************/ /* retourne les utilisateurs de tous les groupes du semestre donné */ /*******************************************************************/ - case 'grouplist': - $areSetParam = isset($request->semestre) && isset($request->annee); // les arguments existent - $typeOkParam = $areSetParam && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings - $semestreCheck = $typeOkParam && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format - $anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format + case 'grouplist': if( connected() ){ - if( $anneeCheck ){ + $areSetParam = isset($request->semestre) && isset($request->annee); // les arguments existent + $typeOkParam = $areSetParam && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings + $semestreCheck = $typeOkParam && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format + $anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format - $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesSemestre($request->semestre, $request->annee); + if( $anneeCheck ){ - if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs - $answer->grouplist = $grouplist; - $answer->request = 'success'; - }else // si on a pas récupéré de liste, alors c'est que $grouplist est un message d'erreur - $answer->answer = $grouplist; + $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesSemestre($request->semestre, $request->annee); + + if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs + $answer->grouplist = $grouplist; + $answer->request = 'success'; + }else // si on a pas récupéré de liste, alors c'est que $grouplist est un message d'erreur + $answer->answer = $grouplist; + + }else + return 'param_error'; }else - return 'param_error'; + $answer->request = 'permission_error'; break; /*****************************************************************************/ /* retourne les utilisateurs de tous les groupes des modules d'un enseignant */ /*****************************************************************************/ - case 'grouplistForTeacher': - $areSetParam = isset($request->annee) && isset($request->enseignant); // les arguments existent - $typeOkParam = $areSetParam && is_numeric($request->annee) && is_string($request->enseignant); // si c'est des strings - $anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format - $enseignantCheck = $anneeCheck && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // enseignant (annee) bon format + case 'grouplistForTeacher': if( permission('teacher') || permission('admin') ){ - // paramètres optionnels - $optionalSemestre = isset($request->semestre) && is_numeric($request->semestre) && preg_match('/^[1-4]{1}$/i', $request->semestre); - $optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); + $areSetParam = isset($request->annee) && isset($request->enseignant); // les arguments existent + $typeOkParam = $areSetParam && is_numeric($request->annee) && is_string($request->enseignant); // si c'est des strings + $anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format + $enseignantCheck = $anneeCheck && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // enseignant (annee) bon format - // définition (ou pas) des paramètres optionnels - if( $optionalSemestre ) $semestre = $request->semestre; - else $semestre = null; + // paramètres optionnels + $optionalSemestre = isset($request->semestre) && is_numeric($request->semestre) && preg_match('/^[1-4]{1}$/i', $request->semestre); + $optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); - if( $optionalGroupe ) $groupe = $request->groupe; - else $groupe = null; + // définition (ou pas) des paramètres optionnels + if( $optionalSemestre ) $semestre = $request->semestre; + else $semestre = null; - if( $enseignantCheck ){ + if( $optionalGroupe ) $groupe = $request->groupe; + else $groupe = null; - $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesEnseignant($request->annee, $request->enseignant, $semestre, $groupe); + if( $enseignantCheck ){ - if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs - $answer->grouplist = $grouplist; - $answer->request = 'success'; - }else // si on a pas récupéré de liste, alors c'est que $grouplist est un message d'erreur - $answer->answer = $grouplist; + $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesEnseignant($request->annee, $request->enseignant, $semestre, $groupe); + if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs + $answer->grouplist = $grouplist; + $answer->request = 'success'; + }else // si on a pas récupéré de liste, alors c'est que $grouplist est un message d'erreur + $answer->answer = $grouplist; + + }else + return 'param_error'; + }else - return 'param_error'; + $answer->request = 'permission_error'; break; - /*******************************************************************/ - /* retourne les utilisateurs de tous les groupes d'une année donnée*/ - /*******************************************************************/ - case 'grouplistForYear': - $areSetParam = isset($request->annee); // les arguments existent - $typeOkParam = $areSetParam && is_numeric($request->annee); // si c'est des strings - $anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format + /********************************************************************/ + /* retourne les utilisateurs de tous les groupes d'une année donnée */ + /********************************************************************/ + case 'grouplistForYear': if( permission('teacher') || permission('admin') ){ + + $areSetParam = isset($request->annee); // les arguments existent + $typeOkParam = $areSetParam && is_numeric($request->annee); // si c'est des strings + $anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format - // paramètres optionnels - $optionalSemestre = isset($request->semestre) && is_numeric($request->semestre) && preg_match('/^[1-4]{1}$/i', $request->semestre); - $optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); + // paramètres optionnels + $optionalSemestre = isset($request->semestre) && is_numeric($request->semestre) && preg_match('/^[1-4]{1}$/i', $request->semestre); + $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) des paramètres optionnels - if( $optionalSemestre ) $semestre = $request->semestre; - else $semestre = null; + // définition (ou pas) des paramètres optionnels + if( $optionalSemestre ) $semestre = $request->semestre; + else $semestre = null; - if( $optionalGroupe ) $groupe = $request->groupe; - else $groupe = null; + if( $optionalGroupe ) $groupe = $request->groupe; + else $groupe = null; - if( $anneeCheck ){ + if( $anneeCheck ){ - $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, $semestre, $groupe); + $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, $semestre, $groupe); - if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs - $answer->grouplist = $grouplist; - $answer->request = 'success'; - }else // si on a pas récupéré de liste, alors c'est que $grouplist est un message d'erreur - $answer->answer = $grouplist; + if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs + $answer->grouplist = $grouplist; + $answer->request = 'success'; + }else // si on a pas récupéré de liste, alors c'est que $grouplist est un message d'erreur + $answer->answer = $grouplist; + }else + return 'param_error'; + }else - return 'param_error'; + $answer->request = 'permission_error'; break; /**********************************************/ /* retourne le nom du groupe d'un utilisateur */ /**********************************************/ - case 'get': - $areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee); // les arguments existent - $typeOkParam = $areSetParam && is_string($request->etudiant) && is_numeric($request->semestre) && is_numeric($request->annee); // 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 - $semestreCheck = $etudiantCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format - $anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format + case 'get': if( connected() ){ + $areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee); // les arguments existent + $typeOkParam = $areSetParam && is_string($request->etudiant) && is_numeric($request->semestre) && is_numeric($request->annee); // 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 + $semestreCheck = $etudiantCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format + $anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format + + + $groupe = DataBase::getInstance()->getGroupeEtudiant($request->etudiant, $request->semestre, $request->annee); + + if( $groupe != 'error' ){ // si on a récupéré quelque chose + $answer->groupe = $groupe; + $answer->request = 'success'; + }else // si on a pas "success", alors c'est que $groupe est un message d'erreur + $answer->answer = 'error'; - $groupe = DataBase::getInstance()->getGroupeEtudiant($request->etudiant, $request->semestre, $request->annee); - - if( $groupe != 'error' ){ // si on a récupéré quelque chose - $answer->groupe = $groupe; - $answer->request = 'success'; - }else // si on a pas "success", alors c'est que $groupe est un message d'erreur - $answer->answer = 'error'; + }else + $answer->request = 'permission_error'; break; /************************************************/ /* déplace un étudiant de son groupe à un autre */ /************************************************/ - case 'move': - $areSetParam = isset($request->etudiant) && isset($request->groupe); // les arguments existent - $typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->groupe); // si c'est des strings - $nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && strlen($request->groupe) > 0; // d'au moins 1 caractère - $etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format - $groupeCheck = $etudiantCheck && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format + case 'move': if( permission('admin') ){ - if( $groupeCheck ){ // si param ok - $answer->request = DataBase::getInstance()->deplacerEtudiant($request->etudiant, $request->groupe, $_SESSION['annee']); + $areSetParam = isset($request->etudiant) && isset($request->groupe); // les arguments existent + $typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->groupe); // si c'est des strings + $nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && strlen($request->groupe) > 0; // d'au moins 1 caractère + $etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format + $groupeCheck = $etudiantCheck && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format + + if( $groupeCheck ){ // si param ok + $answer->request = DataBase::getInstance()->deplacerEtudiant($request->etudiant, $request->groupe, $_SESSION['annee']); + }else + $answer->answer = 'param_error'; + }else - $answer->answer = 'param_error'; + $answer->request = 'permission_error'; break; /***********/ diff --git a/manager/modules.php b/manager/modules.php index a8fbe63..5619bc7 100755 --- a/manager/modules.php +++ b/manager/modules.php @@ -36,52 +36,90 @@ require_once __ROOT__.'/manager/database.php'; /********************************************/ /* liste des modules d'un ETUDIANT (par UE) */ /********************************************/ - case 'getByEtudiant': - $areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee); // les arguments existent - $typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->semestre) && is_string($request->annee); // 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 -]{6,100}$/i', $request->etudiant); // nom bon format - $semestreCheck = $etudiantCheck && preg_match('/^[1-4]{1}$/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 - $UEList = DataBase::getInstance()->getModulesByUEByEtudiant($request->etudiant, $request->semestre, $request->annee); + case 'getByEtudiant': if( connected() ){ - // STRUCTURE - // tableau d'UES contenant un tableau de MODULES + $areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee); // les arguments existent + $typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->semestre) && is_string($request->annee); // 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 -]{6,100}$/i', $request->etudiant); // nom bon format + $semestreCheck = $etudiantCheck && preg_match('/^[1-4]{1}$/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 + $UEList = DataBase::getInstance()->getModulesByUEByEtudiant($request->etudiant, $request->semestre, $request->annee); + + // STRUCTURE + // tableau d'UES contenant un tableau de MODULES + + if( is_array($UEList) ){ // si on a bien un tableau + $answer->UEs = $UEList; // on renvoie dans answer->ues + $answer->request = 'success'; // et on renvoie success + }else // sinon si c'est pas un tableau + $answer->request = $UEList; // on retourne l'erreur + }else + $answer->request = 'param_error'; - if( is_array($UEList) ){ // si on a bien un tableau - $answer->UEs = $UEList; // on renvoie dans answer->ues - $answer->request = 'success'; // et on renvoie success - }else // sinon si c'est pas un tableau - $answer->request = $UEList; // on retourne l'erreur }else - $answer->request = 'param_error'; + $answer->request = 'permission_error'; break; /**********************************************/ /* liste des modules d'un ENSEIGNANT (par UE) */ /**********************************************/ - case 'getByEnseignant': - $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 -]{6,100}$/i', $request->enseignant); // nom bon format - $anneeCheck = $enseignantCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format + case 'getByEnseignant': if( permission('teacher') || permission('admin') ){ - if( $anneeCheck ){ // si tout les paramètres sont bons - $UEList = DataBase::getInstance()->getModulesByUEByEnseignant($request->enseignant, $request->annee); + $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 -]{6,100}$/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 + $UEList = DataBase::getInstance()->getModulesByUEByEnseignant($request->enseignant, $request->annee); - // STRUCTURE - // tableau d'UES contenant un tableau de MODULES + // STRUCTURE + // tableau d'UES contenant un tableau de MODULES - if( is_array($UEList) ){ // si on a bien un tableau - $answer->UEs = $UEList; // on renvoie dans answer->ues - $answer->request = 'success'; // et on renvoie success - }else // sinon si c'est pas un tableau - $answer->request = $UEList; // on retourne l'erreur + if( is_array($UEList) ){ // si on a bien un tableau + $answer->UEs = $UEList; // on renvoie dans answer->ues + $answer->request = 'success'; // et on renvoie success + }else // sinon si c'est pas un tableau + $answer->request = $UEList; // on retourne l'erreur + }else + $answer->request = 'param_error'; + }else - $answer->request = 'param_error'; + $answer->request = 'permission_error'; + break; + + + + /******************************************/ + /* liste des modules d'une ANNEE (par UE) */ + /******************************************/ + case 'getByYear': if( 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 + $UEList = DataBase::getInstance()->getModulesByUEByYear($request->annee); + + // STRUCTURE + // tableau d'UES contenant un tableau de MODULES + + if( is_array($UEList) ){ // si on a bien un tableau + $answer->UEs = $UEList; // on renvoie dans answer->ues + $answer->request = 'success'; // et on renvoie success + }else // sinon si c'est pas un tableau + $answer->request = $UEList; // on retourne l'erreur + }else + $answer->request = 'param_error'; + + }else + $answer->request = 'permission_error'; break; diff --git a/manager/user.php b/manager/user.php index 6922aef..d6e2cb5 100755 --- a/manager/user.php +++ b/manager/user.php @@ -74,21 +74,25 @@ require_once __ROOT__.'/manager/database.php'; /**************************/ /* création d'utilisateur */ /**************************/ - case 'create': - $areSetParam = isset($request->identifiant) && isset($request->prenom) && isset($request->nom) && isset($request->mail) && isset($request->mdp) && isset($request->droits); // les arguments existent - $typeOkParam = $areSetParam && is_string($request->identifiant) && is_string($request->prenom) && is_string($request->nom) && is_string($request->mail) && is_string($request->mdp) && is_string($request->droits); // ils sont tous 2 des string - $nEmptyParam = $typeOkParam && strlen($request->identifiant) > 0 && strlen($request->prenom) > 0 && is_string($request->nom) && is_string($request->mail) && is_string($request->mdp) && is_string($request->droits); // d'au moins 1 caractère - $identifiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->identifiant); // identifiant bon format - $prenomCheck = $identifiantCheck && preg_match('/^[a-z -]{3,50}$/i', $request->prenom); // prenom bon format - $nomCheck = $prenomCheck && preg_match('/^[a-z -]{3,50}$/i', $request->nom); // nom bon format - $mailCheck = $nomCheck && preg_match('/^[\w\.-]+@[\w\.-]+\.[a-z]{2,4}$/i', $request->mail); // mail bon format - $mdpCheck = $mailCheck && preg_match('/^[\w -]{6,100}$/i', $request->mdp); // mdp bon format - $droitsCheck = $mdpCheck && is_int(array_search($request->droits, ['student', 'teacher', 'master', 'admin'])); // droits bon format + case 'create': if( permission('admin') ){ - if( $droitsCheck ){ // si tout les paramètres sont bons - $answer->request = DataBase::getInstance()->creerUtilisateur($request->identifiant, $request->prenom, $request->nom, $request->mail, $request->mdp, $request->droits); + $areSetParam = isset($request->identifiant) && isset($request->prenom) && isset($request->nom) && isset($request->mail) && isset($request->mdp) && isset($request->droits); // les arguments existent + $typeOkParam = $areSetParam && is_string($request->identifiant) && is_string($request->prenom) && is_string($request->nom) && is_string($request->mail) && is_string($request->mdp) && is_string($request->droits); // ils sont tous 2 des string + $nEmptyParam = $typeOkParam && strlen($request->identifiant) > 0 && strlen($request->prenom) > 0 && is_string($request->nom) && is_string($request->mail) && is_string($request->mdp) && is_string($request->droits); // d'au moins 1 caractère + $identifiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->identifiant); // identifiant bon format + $prenomCheck = $identifiantCheck && preg_match('/^[a-z -]{3,50}$/i', $request->prenom); // prenom bon format + $nomCheck = $prenomCheck && preg_match('/^[a-z -]{3,50}$/i', $request->nom); // nom bon format + $mailCheck = $nomCheck && preg_match('/^[\w\.-]+@[\w\.-]+\.[a-z]{2,4}$/i', $request->mail); // mail bon format + $mdpCheck = $mailCheck && preg_match('/^[\w -]{6,100}$/i', $request->mdp); // mdp bon format + $droitsCheck = $mdpCheck && is_int(array_search($request->droits, ['student', 'teacher', 'master', 'admin'])); // droits bon format + + if( $droitsCheck ){ // si tout les paramètres sont bons + $answer->request = DataBase::getInstance()->creerUtilisateur($request->identifiant, $request->prenom, $request->nom, $request->mail, $request->mdp, $request->droits); + }else + $answer->request = 'param_error'; + }else - $answer->request = 'param_error'; + $answer->request = 'permission_error'; break; @@ -158,13 +162,23 @@ require_once __ROOT__.'/manager/database.php'; // [3] On check le mot de passe if( $userList->{$username}->password == $password ){ - // on définit les variables session - $_SESSION['identifiant'] = $username; - $_SESSION['droits'] = $userList->{$username}->permissions; // est un TABLEAU + + // [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 + $_SESSION['identifiant'] = $utilInfo['identifiant']; + $_SESSION['droits'] = explode(',', $utilInfo['droits']); + + // on récupère l'année courante (1er sept à 1er sept) + // SI (mois < 8) ALORS (annee - 1) SINON (annee) + $_SESSION['annee'] = (Date('m', time())<8) ? Date('Y', time()) - 1 : Date('Y', time()); + + }else + return 'not_in_db'; /******************************* TEMPO *********************************/ + /*** ON VA CHERCHER LES INFOS DANS LA BDD ***/ + $_SESSION['semestre'] = '2'; - $_SESSION['annee'] = '2015'; /***********************************************************************/ return 'success'; }else diff --git a/page/modules.php b/page/modules.php index 8d21f2b..0853f2d 100755 --- a/page/modules.php +++ b/page/modules.php @@ -70,7 +70,7 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un /****************************************/ /*** MES MODULES (version enseignant) ***/ /****************************************/ -if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un élève +if( permission('teacher') ){ // si l'utilisateur est un prof $request = new stdClass(); $answer = new stdClass(); @@ -110,3 +110,51 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un } ?> + + + + + +level_1 = 'getByYear'; + $request->annee = $_SESSION['annee']; + + modules_switch_level_1($request, $answer); + + if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe + //////////////////////////////////////////////////////////////////////////////// + echo "
"; + + foreach($answer->UEs as $UE){ + echo ""; + echo ""; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + foreach($UE['modules'] as $MODULE){ + echo ''; + echo ''; + echo ''; + echo ''; + } + + echo ''; + echo '
'.$UE['nom'].' - '.$UE['libelle'].'
'.$MODULE['nom'].''.$MODULE['libelle'].'
'; + } + //////////////////////////////////////////////////////////////////////////////// + echo '
'; + }else + echo "Erreur interne."; + +} ?> + + diff --git a/src/userlist.json b/src/userlist.json index 392db0b..b8667de 100755 --- a/src/userlist.json +++ b/src/userlist.json @@ -24,7 +24,7 @@ "password" : "password" }, - "admin1": { + "admin": { "permissions": ["admin"], "password" : "password" }, diff --git a/test.php b/test.php index 4444cde..0480276 100755 --- a/test.php +++ b/test.php @@ -1,7 +1,14 @@