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