From a457737e892a6b7054cdfd3841d9681a80d8cc4c Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Mon, 18 Apr 2016 19:33:36 +0200 Subject: [PATCH] =?UTF-8?q?subject/getById=20(module)=20impl=C3=A9ment?= =?UTF-8?q?=C3=A9=20+=20ModuleRequest()=20cr=C3=A9e=20maintenant=20les=20p?= =?UTF-8?q?aram=C3=A8tres=20optionnels.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/modules.json | 2 +- config/repositories.json | 7 ++ manager/ModuleRequest.php | 3 +- manager/module/subject.php | 157 ++++++++++++++++++++++++++++++ manager/module/user.php | 2 +- manager/repo/subject.php | 192 +++++++++++++++++++++++++++++++++++++ 6 files changed, 360 insertions(+), 3 deletions(-) create mode 100644 manager/module/subject.php create mode 100644 manager/repo/subject.php diff --git a/config/modules.json b/config/modules.json index 9d85660..bbc9a44 100755 --- a/config/modules.json +++ b/config/modules.json @@ -144,7 +144,7 @@ "description": "Retourne les informations d'un sujet.", "permissions": ["admin"], "parameters": { - "id_user": { "description": "UID du sujet recherche.", "type": "id" } + "id_subject": { "description": "UID du sujet recherche.", "type": "id" } } }, diff --git a/config/repositories.json b/config/repositories.json index 1ea2122..4d0ea8f 100755 --- a/config/repositories.json +++ b/config/repositories.json @@ -9,6 +9,13 @@ "remove" ], + "subject": [ + "getById", + "getAll", + "create", + "merge" + ], + "Personnes": [ "getById" ], diff --git a/manager/ModuleRequest.php b/manager/ModuleRequest.php index 18ef64b..ba89ec8 100755 --- a/manager/ModuleRequest.php +++ b/manager/ModuleRequest.php @@ -324,11 +324,12 @@ /* VERIFICATION DU TYPE DES PARAMETRES ENVOYES * * @params Tableau associatif contenant les parametres + * @params peut se voir rajouter les paramètres optionnels s'ils ne sont pas renseignés (initialisés à NULL) * * @return correct Retourne si oui ou non les parametres ont le bon type * */ - private function checkParams($params){ + private function checkParams(&$params){ /* [1] On verifie qu'il ne manque aucun parametre =========================================================*/ // Si @params n'est pas un tableau diff --git a/manager/module/subject.php b/manager/module/subject.php new file mode 100644 index 0000000..eaaabc7 --- /dev/null +++ b/manager/module/subject.php @@ -0,0 +1,157 @@ + UID du sujet en question + * + * @return subject Tableau contenant les informations du sujet + * + */ + public static function getById($params){ + extract($params); + + /* [1] On recupere les donnees du sujet + =========================================================*/ + $getUser = new Repo('subject/getById', array($id_subject)); + $subject_data = $getUser->answer(); + + // Si aucun utilisateur n'est trouve + if( $subject_data === false ) return array('ModuleError' => ManagerError::ModuleError); + + + /* [2] Gestion du retour + =========================================================*/ + return array( + 'ModuleError' => ManagerError::Success, + 'subject' => $subject_data + ); + } + + + + + /* RETOURNE LA LISTE DE TOUS LES SUJETS + * + * @return subjects Tableau contenant les informations de tous les utilisateurs + * + */ + public static function getAll(){ + /* [1] On recupere les donnees des utilisateurs + =========================================================*/ + $getUsers = new Repo('subject/getAll'); + $subjects_data = $getUsers->answer(); + + // Si aucun utilisateur n'est trouve + if( $subjects_data === false ) return array('ModuleError' => ManagerError::ModuleError); + + /* [2] Gestion du retour + =========================================================*/ + return array( + 'ModuleError' => ManagerError::Success, + 'subjects' => $subjects_data + ); + } + + + + + + /* CREATION D'UN SUJET + * + * @login Login (identifiant) du sujet + * @password Password du sujet + * @mail Adresse mail du sujet + * @reference Reference vers une Personne (sinon NULL) + * @permissions Liste des permissions du sujet + * + * @return id_subject Renvoie l'id du sujet cree + * + */ + public static function create($params){ + var_dump($params); + extract($params); + + /* [0] Verification et formattage des INPUT + =========================================================*/ + $password = sessionManager::sha1($password); + $reference = (is_numeric($reference)) ? (int) $reference : null; + $permission = ($permission=='admin') ? 'admin' : 'subject'; + + + /* [1] Creation du sujet + =========================================================*/ + $create = new Repo('subject/create', array($login, $password, $mail, $reference, $permission)); + $created_id = $create->answer(); + + // Si erreur de creation, on retourne une erreur + if( $created_id === false ) return array( 'ModuleError' => ManagerError::ModuleError ); + + /* [2] Gestion du retour + =========================================================*/ + return array( + 'ModuleError' => ManagerError::Success, + 'id_subject' => $created_id + ); + } + + + + + + /* SUPPRESSION D'UN SUJET + * + * @id_subject UID du sujet en question + * + */ + public static function remove($params){ + extract($params); + + /* [1] On verifie que le sujet existe + =========================================================*/ + $exists = new Repo('subject/getById', array($id_subject)); + $exists_status = $exists->answer(); + + // Si le sujet n'existe pas, on retourne une erreur + if( $exists_status === false ) return array( 'ModuleError' => ManagerError::ModuleError ); + + /* [2] Suppression du sujet + =========================================================*/ + $remove = new Repo('subject/remove', array($id_subject)); + $remove_status = $remove->answer(); + + + /* [3] On verifie que le sujet est bien supprime + =========================================================*/ + $removed = new Repo('subject/getById', array($id_subject)); + $removed_status = $removed->answer(); + + // Si le sujet n'existe pas, on retourne une erreur + if( $removed_status !== false ) return array( 'ModuleError' => ManagerError::ModuleError ); + + + /* [4] Gestion du retour + =========================================================*/ + return array( 'ModuleError' => ManagerError::Success ); + } + + // [x] "login", + // [x] "logout", + // [x] "getById", + // [x] "getAll", + // [x] "create", + // [ ] "remove", + + } + + +?> diff --git a/manager/module/user.php b/manager/module/user.php index 2b8b0d4..d6c04cd 100755 --- a/manager/module/user.php +++ b/manager/module/user.php @@ -71,7 +71,7 @@ /* [1] On recupere les donnees de l'utilisateur =========================================================*/ - $getUser = new Repo('user/getById', array($user_id)); + $getUser = new Repo('user/getById', array($id_user)); $user_data = $getUser->answer(); // Si aucun utilisateur n'est trouve diff --git a/manager/repo/subject.php b/manager/repo/subject.php new file mode 100644 index 0000000..9402b41 --- /dev/null +++ b/manager/repo/subject.php @@ -0,0 +1,192 @@ + UID du sujet en question + * + * @return subject Tableau contenant les donnees du sujet s'il existe sinon retourne FALSE + * + */ + public static function getById($id_subject){ + /* [1] On effectue la requete + =========================================================*/ + $getSubject = Database::getPDO()->prepare("SELECT idPersonne, pseudo, prenom, nom, id_facebook, telephone + FROM Personnes + WHERE idPersonne = :id_subject"); + $getSubject->execute(array( ':id_subject' => $id_subject )); + + + /* [2] On recupere le resultat de la requete + =========================================================*/ + $subjectData = $getSubject->fetch(); + + // Si l'utilisateur n'existe pas, on retourne FALSE + if( $subjectData === false ) return false; + + /* [3] Gestion du retour + =========================================================*/ + return Database::delNumeric( $subjectData, true ); + } + + + + + + /* RETOURNE LES DONNEES DE TOUS LES SUJETS + * + * @return subjects Tableau contenant les donnees des sujets, retourne FALSE si erreur + * + */ + public static function getAll(){ + /* [1] On effectue la requete + =========================================================*/ + $getSubjects = Database::getPDO()->query("SELECT idPersonne, pseudo, prenom, nom, id_facebook, telephone + FROM Personnes + ORDER BY idPersonne ASC"); + + + /* [2] On recupere le resultat de la requete + =========================================================*/ + $subjectsData = $getSubjects->fetchAll(); + + // Si l'utilisateur n'existe pas, on retourne FALSE + if( $subjectsData === false ) return false; + + /* [3] Gestion du retour + =========================================================*/ + return Database::delNumeric( $subjectsData ); + } + + + + + /* CREE UN SUJET + * + * @login Login (identifiant) du sujet + * @password Password du sujet + * @mail Adresse mail du sujet + * @reference Reference vers une Personne (sinon NULL) + * @permissions Liste des permissions du sujet + * + * @return id_subject Renvoie l'id du sujet cree ou FALSE si erreur + * + */ + public static function create($login, $password, $mail, $reference, $permission){ + /* [0] Verification et formattage des INPUT + =========================================================*/ + $checkInput = Database::check('sha1', $password); + $checkInput = $checkInput && ( Database::check('id', $reference) || $reference === null ); + $checkInput = $checkInput && in_array($permission, array('admin', 'subject')); + + // Si erreur en entree, on retourne FAUX + if( !$checkInput ) return false; + + + /* [1] On verifie que le login/mail et reference sont uniques + =========================================================*/ + $checkUnique = Database::getPDO()->prepare("SELECT id_subject + FROM subjects + WHERE login = :login + OR mail = :mail + OR ( reference = :reference AND reference is not NULL )"); + $checkUnique->execute(array( + ':login' => $login, + ':mail' => $mail, + ':reference' => $reference + )); + $unique = $checkUnique->fetch() === false; + + // Si un sujet a le meme LOGIN/MAIL ou REFERENCE, on retourne une erreur + if( !$unique ) return false; + + + /* [2] Creation du sujet + =========================================================*/ + /* (1) Si reference NULL */ + if( $reference == null ){ + + $create = Database::getPDO()->prepare("INSERT INTO subjects(id_subject, login, password, mail, reference, permission) + VALUES(DEFAULT, :login, :password, :mail, NULL, :permission)"); + $create->execute(array( + ':login' => $login, + ':password' => $password, + ':mail' => $mail, + ':permission' => $permission + )); + + /* (2) Si reference est defini */ + }else{ + + $create = Database::getPDO()->prepare("INSERT INTO subjects(id_subject, login, password, mail, reference, permission) + VALUES(DEFAULT, :login, :password, :mail, :reference, :permission)"); + $create->execute(array( + ':login' => $login, + ':password' => $password, + ':mail' => $mail, + ':reference' => (int) $reference, + ':permission' => $permission + )); + + } + + /* [3] Verification de la creation + recuperation id + =========================================================*/ + $checkCreate = Database::getPDO()->prepare("SELECT id_subject + FROM subjects + WHERE login = :login + AND password = :password + AND mail = :mail + AND ( reference = :reference OR reference is NULL ) + AND permission = :permission"); + $checkCreate->execute(array( + ':login' => $login, + ':password' => $password, + ':mail' => $mail, + ':reference' => (int) $reference, + ':permission' => $permission + )); + + // On recupere l'id du sujet + $id_subject = $checkCreate->fetch(); + + // Si erreur, on retourne FALSE + if( $id_subject === false ) return false; + + /* [4] Gestion du retour + =========================================================*/ + return $id_subject['id_subject']; + } + + + + + + + + + + /* SUPRESSION D'UN SUJET D'ID DONNE + * + * @id_subject UID du sujet en question + * + */ + public static function remove($id_subject){ + /* [1] On effectue la suppression + =========================================================*/ + $getSubject = Database::getPDO()->prepare("DELETE FROM subjects WHERE id_subject = :id_subject"); + $getSubject->execute(array( ':id_subject' => $id_subject )); + } + + } + + +?>