diff --git a/manager/database.php b/manager/database.php index 1026ecb..3f34085 100755 --- a/manager/database.php +++ b/manager/database.php @@ -23,8 +23,9 @@ class DataBase{ /*********************************************/ /*** création d'un utilisateur dans la bdd ***/ /*********************************************/ - public function ajouterUtilisateur($username, $prenom, $nom, $email, $password, $droits){ - $currentId = $this->pdo->lastInsertId(); + public function creerUtilisateur($username, $prenom, $nom, $email, $password, $droits){ + $getLastId = $this->pdo->query('SELECT max(`id_utilisateur`) as `id` FROM `utilisateurs`'); + $lastId = (int) $getLastId->fetch()['id']; // on applique une normalisation $prenom = ucwords( strtolower($prenom) ); // majuscule à chaque mot sinon minuscule @@ -43,11 +44,9 @@ class DataBase{ ':droits' => mysql_escape_string($droits ) )); - // echo var_dump( $this->pdo->errorInfo() ).'
'; + $added = (int) $this->pdo->lastInsertId(); - $addedId = $this->pdo->lastInsertId(); - - if( $currentId+1 == $addedId ) // si on a bien ajouté un entrée + if( $added > $lastId ) // si on a bien ajouté un entrée return 'success'; else return 'error'; @@ -60,7 +59,109 @@ class DataBase{ /****************************************/ /*** création d'un groupe dans la bdd ***/ /****************************************/ + public function creerGroupe($nom){ + $getLastId = $this->pdo->query('SELECT max(`id_groupe`) as `id` FROM `groupes`'); + $lastId = (int) $getLastId->fetch()['id']; + // on applique une normalisation + $nom = strtoupper($nom); // nom en majuscules + + $req = $this->pdo->prepare("INSERT INTO `groupes`(`id_groupe`, `nom`) VALUES(default, :nom)"); + + $req->execute(array( + ':nom' => mysql_escape_string($nom) + )); + + // echo var_dump( $this->pdo->errorInfo() ).'
'; + + $added = (int) $this->pdo->lastInsertId(); + + var_dump($this->pdo->lastInsertId()); + + if( $added > $lastId ) // si on a bien ajouté un entrée + return 'success'; + else + return 'error'; + + } + + /******************************************************/ + /*** ajout d'un utilisateur à un groupe dans la bdd ***/ + /******************************************************/ + public function ajouterUtilisateurGroupe($utilisateur, $groupe){ + + // on cherche un utilisateur avec ce pseudo + $getUtilisateurUID = $this->pdo->prepare("SELECT `id_utilisateur` FROM `utilisateurs` WHERE `pseudo` = :username"); + $getUtilisateurUID->execute(array( + ':username' => $utilisateur + )); + + // si on trouve, on le définit, sinon on retourne "unknown_user" + if( $utilisateurUID = $getUtilisateurUID->fetch()['id_utilisateur'] ) + $utilisateurUID = (int) $utilisateurUID; + else + return 'unknown_user'; + + + // on cherche un groupe avec ce nom + $getGroupeUID = $this->pdo->prepare("SELECT `id_groupe` FROM `groupes` 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_groupe'] ) + $groupeUID = (int) $groupeUID; + else + return 'unknown_group'; + + // si on a l'UID utilisateur & l'UID groupe => on créé l'association + $asso = $this->pdo->prepare("INSERT INTO `association_utilisateur_groupe`(`id_utilisateur`, `id_groupe`) VALUES( (SELECT `id_utilisateur` FROM `utilisateurs` WHERE `id_utilisateur` = :utilisateur), (SELECT `id_groupe` FROM `groupes` WHERE `id_groupe` = :groupe) )"); + $asso->execute(array( + ':utilisateur' => $utilisateurUID, + ':groupe' => $groupeUID + )); + + return 'success'; + + } + + /******************************************************/ + /*** retourne la liste des utilisateurs d'un groupe ***/ + /******************************************************/ + public function listeUtilisateurGroupe($groupe){ + // on cherche un groupe avec ce nom + $getGroupeUID = $this->pdo->prepare("SELECT `id_groupe` FROM `groupes` WHERE `nom` = :nom"); + $getGroupeUID->execute(array( + ':nom' => $groupe + )); + + // si on trouve pas le groupe, on retourne "unknown_group" + if( !($groupeUID = $getGroupeUID->fetch()['id_groupe']) ) + return 'unknown_group'; + + + + + // si le groupe existe => on créé récupère ses utilisateurs + $asso = $this->pdo->prepare("SELECT `u`.`pseudo`, `u`.`prenom`, `u`.`nom`, `u`.`email`, `u`.`droits` ". + "FROM `utilisateurs` as `u`, `groupes` as `g`, `association_utilisateur_groupe` as `asso` ". + "WHERE `u`.`id_utilisateur` = `asso`.`id_utilisateur` ". + "AND `g`.`id_groupe` = `asso`.`id_groupe` ". + "AND `g`.`nom` = :groupe ". + "ORDER BY `u`.`pseudo` "); + $asso->execute(array( + ':groupe' => $groupe + )); + + $userlist = $asso->fetchAll(); + + if( count($userlist) == 0 ) // si résultat vide + return 'empty'; + else + return $userlist; // sinon on retourne le tableau + + } diff --git a/manager/groups.php b/manager/groups.php index 944c6f0..bc4fdb5 100644 --- a/manager/groups.php +++ b/manager/groups.php @@ -38,23 +38,61 @@ /* création d'un groupe */ /************************/ case 'create': - $areSetParam = isset($request->username) && isset($request->prenom) && isset($request->nom) && isset($request->email) && isset($request->password) && isset($request->droits); // les arguments existent - $typeOkParam = $areSetParam && is_string($request->username) && is_string($request->prenom) && is_string($request->nom) && is_string($request->email) && is_string($request->password) && is_string($request->droits); // ils sont tous 2 des string - $nEmptyParam = $typeOkParam && strlen($request->username) > 0 && strlen($request->prenom) > 0 && is_string($request->nom) && is_string($request->email) && is_string($request->password) && is_string($request->droits); // d'au moins 1 caractère - $usernameCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->username); // username bon format - $prenomCheck = $usernameCheck && 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 - $emailCheck = $nomCheck && preg_match('/^[\w\.-]+@[\w\.-]+\.[a-z]{2,4}$/i', $request->email); // email bon format - $passwordCheck = $emailCheck && preg_match('/^[\w -]{6,100}$/i', $request->password); // password bon format - $droitsCheck = $passwordCheck && is_int(array_search($request->droits, ['student', 'teacher', 'master', 'admin'])); // droits bon format + $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-z -]{1,50}$/i', $request->nom); // nom bon format - if( $droitsCheck ){ // si tout les paramètres sont bons + if( $nomCheck ){ // si tout les paramètres sont bons require('database.php'); - $answer->request = $db->ajouterUtilisateur($request->username, $request->prenom, $request->nom, $request->email, $request->password, $request->droits); + $answer->request = $db->creerGroupe($request->nom); }else $answer->request = 'param_error'; break; + /**************************************/ + /* ajout d'un utilisateur à un groupe */ + /**************************************/ + case 'add': + $areSetParam = isset($request->utilisateur) && isset($request->groupe); // les arguments existent + $typeOkParam = $areSetParam && is_string($request->utilisateur) && is_string($request->groupe); // si c'est des strings + $nEmptyParam = $typeOkParam && strlen($request->utilisateur) > 0 && strlen($request->groupe) > 0; // d'au moins 1 caractère + $utilisateurCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->utilisateur); // utilisateur (username) bon format + $groupeCheck = $utilisateurCheck && preg_match('/^[a-z -]{1,50}$/i', $request->groupe); // groupe (nom) bon format + + if( $groupeCheck ){ // si tout les paramètres sont bons + require('database.php'); + $answer->request = $db->ajouterUtilisateurGroupe($request->utilisateur, $request->groupe); + }else + $answer->request = 'param_error'; + break; + + /*****************************************/ + /* retourne les utilisateurs d'un groupe */ + /*****************************************/ + case 'userlist': + $areSetParam = isset($request->groupe); // l'argument existe + $typeOkParam = $areSetParam && is_string($request->groupe); // si c'est une string + $nEmptyParam = $typeOkParam && strlen($request->groupe) > 0; // d'au moins 1 caractère + $groupeCheck = $nEmptyParam && preg_match('/^[a-z -]{1,50}$/i', $request->groupe); // groupe (nom) bon format + + if( $groupeCheck ){ // si tout les paramètres sont bons + require('database.php'); + + $userlist = $db->listeUtilisateurGroupe($request->groupe); + + 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'; + break; + + + /***********/ diff --git a/manager/user.php b/manager/user.php index eaf6861..16057c0 100755 --- a/manager/user.php +++ b/manager/user.php @@ -82,7 +82,7 @@ if( $droitsCheck ){ // si tout les paramètres sont bons require('database.php'); - $answer->request = $db->ajouterUtilisateur($request->username, $request->prenom, $request->nom, $request->email, $request->password, $request->droits); + $answer->request = $db->creerUtilisateur($request->username, $request->prenom, $request->nom, $request->email, $request->password, $request->droits); }else $answer->request = 'param_error'; break; diff --git a/test.php b/test.php index 01ad885..e283253 100644 --- a/test.php +++ b/test.php @@ -1,26 +1,131 @@ level_1 = 'create'; + // $request->username = 'mrd1609a'; + // $request->prenom = 'adrien'; + // $request->nom = 'ligou marques'; + // $request->email = 'adrien.marques-ligou@etu.iut-tlse3.fr'; + // $request->password = ' Test_Password _'; + // $request->droits = 'student'; + + + + // user_switch_level_1($request, $answer); + + + + // echo var_dump( $answer ); + + // echo "






It works !"; + + + + + + + + + + + + + /*** CRÉATION GROUPE ***/ + + // require('manager/groups.php'); + + // $request = new stdClass(); + // $answer = new stdClass(); + + // $request->level_1 = 'create'; + // $request->nom = 'F'; + + + // groups_switch_level_1($request, $answer); + + // echo var_dump( $answer ); + + // echo "






It works !"; + + + + + + + + + + + + + + + + + /*** AJOUT D'UN UTILISATEUR À UN GROUPE ***/ + + // require('manager/groups.php'); + + // $request = new stdClass(); + // $answer = new stdClass(); + + // $request->level_1 = 'add'; + // $request->utilisateur = 'mrd1609a'; // utilisateur.username + // $request->groupe = 'E'; // groupe.nom + + + // groups_switch_level_1($request, $answer); + + // echo var_dump( $answer ); + + // echo "






It works !"; + + + + + + + + + + + + + + + + + /*** AFFICHER LES MEMBRES D'UN GROUPE ***/ + + require('manager/groups.php'); $request = new stdClass(); $answer = new stdClass(); - $request->level_1 = 'create'; - $request->username = 'mrd1609a'; - $request->prenom = 'adrien'; - $request->nom = 'ligou marques'; - $request->email = 'adrien.marques-ligou@etu.iut-tlse3.fr'; - $request->password = ' Test_Password _'; - $request->droits = 'student'; - - - - user_switch_level_1($request, $answer); + $request->level_1 = 'userlist'; + $request->groupe = 'E'; // groupe.nom + groups_switch_level_1($request, $answer); echo var_dump( $answer ); echo "






It works !"; + + + + + + + + + ?> \ No newline at end of file