From 51f39d4d3d3186bb4dcaca72ecd5e6233c21a899 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Mon, 18 Jul 2016 16:46:06 +0200 Subject: [PATCH] =?UTF-8?q?Refactor=20et=20correction=20presque=20compl?= =?UTF-8?q?=C3=A8te=20du=20module=20'clusterDefault'=20pour=20g=C3=A9rer?= =?UTF-8?q?=20les=202=20types=20de=20groupes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/modules.json | 21 ++-- manager/module/clusterDefault.php | 171 +++++++++--------------------- manager/repo/user_cluster.php | 10 +- manager/view/group/view.php | 51 +++++++-- manager/view/user/groups.php | 118 +++++++++++++++++++++ test/client/interface.php | 15 +-- view/users.php | 13 ++- 7 files changed, 239 insertions(+), 160 deletions(-) create mode 100644 manager/view/user/groups.php diff --git a/config/modules.json b/config/modules.json index 52cbd4e..f3be48d 100755 --- a/config/modules.json +++ b/config/modules.json @@ -383,7 +383,9 @@ "getAll": { "description": "Liste de tous les groupes", "permissions": ["warehouse", "admin"], - "parameters": {}, + "parameters": { + "class": { "description": "Type de groupe.", "type": "id" } + }, "output": { "clusters": { "description": "Liste de tous les groupes.", "type": "array>" } } @@ -393,7 +395,8 @@ "description": "Retourne un groupe spécifique.", "permissions": ["warehouse", "admin"], "parameters": { - "id_cluster": { "description": "UID du groupe.", "type": "id" } + "id_cluster": { "description": "UID du groupe.", "type": "id" }, + "class": { "description": "Type de groupe.", "type": "id" } }, "output": { "cluster": { "description": "Données du groupe.", "type": "array" } @@ -404,7 +407,8 @@ "description": "Retourne un groupe de nom donné.", "permissions": ["warehouse", "admin"], "parameters": { - "name": { "description": "Nom du groupe.", "type": "varchar(1,30,alphanumeric)" } + "name": { "description": "Nom du groupe.", "type": "varchar(1,30,alphanumeric)" }, + "class": { "description": "Type de groupe.", "type": "id" } }, "output": { "cluster": { "description": "Données du groupe.", "type": "array" } @@ -415,7 +419,8 @@ "description": "Retourne les membres d'un groupe.", "permissions": ["warehouse", "admin"], "parameters": { - "id_cluster": { "description": "UID du groupe.", "type": "id" } + "id_cluster": { "description": "UID du groupe.", "type": "id" }, + "class": { "description": "Type de groupe.", "type": "id" } }, "output": { "members": { "description": "Liste des membres du groupe.", "type": "array>" } @@ -426,8 +431,9 @@ "description": "Modifie le nom d'un groupe.", "permissions": ["warehouse", "admin"], "parameters": { - "id_cluster": { "description": "UID du groupe.", "type": "id" }, - "name": { "description": "Nom du groupe.", "type": "varchar(1,30,alphanumeric)", "optional": true } + "id_cluster": { "description": "UID du groupe.", "type": "id" }, + "class": { "description": "Type de groupe.", "type": "id" }, + "name": { "description": "Nom du groupe.", "type": "varchar(1,30,alphanumeric)", "optional": true } }, "output": { "status": { "description": "Status de la modification.", "type": "boolean" } @@ -438,7 +444,8 @@ "description": "Suppression d'un groupe.", "permissions": ["warehouse", "admin"], "parameters": { - "id_cluster": { "description": "UID du groupe.", "type": "id" } + "id_cluster": { "description": "UID du groupe.", "type": "id" }, + "class": { "description": "Type de groupe.", "type": "id" } }, "output": { "status": { "description": "Status de la suppression.", "type": "boolean" } diff --git a/manager/module/clusterDefault.php b/manager/module/clusterDefault.php index 9c90921..e632409 100644 --- a/manager/module/clusterDefault.php +++ b/manager/module/clusterDefault.php @@ -22,12 +22,13 @@ public static function create($params){ extract($params); - /* [2] Creation de l'utilisateur + /* [2] Creation du groupe =========================================================*/ - $create_cluster = new Repo('cluster/create', [ + $repoMethod = ($class==0) ? 'user_cluster/create' : 'machine_cluster/create'; + + $create_cluster = new Repo($repoMethod, [ $_SESSION['WAREHOUSE']['id'], - $name, - $class + $name ]); $id_cluster = $create_cluster->answer(); @@ -48,76 +49,21 @@ - /* AJOUTE UN UTILISATEUR DONNEE A UN GROUPE DONNE - * - * @id_cluster UID du groupe - * @id_user UID de l'utilisateur - * - * @return association Renvoie l'UID de l'association cree - * Renvoie FALSE si une erreur occure - * - */ - public static function link($params){ - extract($params); - - /* [1] Creation de l'association - =========================================================*/ - $link_user = new Repo('cluster/link', [ - $_SESSION['WAREHOUSE']['id'], - $id_cluster, - $id_user, - clusterRepo::USER_CLASS - ]); - - return []; - - } - - - - - - /* RETIRE UNE MACHINE DONNEE A UN GROUPE DONNE - * - * @id_cluster UID du groupe - * @id_user UID de l'utilisateur - * - * @return association Renvoie l'UID de l'association cree - * Renvoie FALSE si une erreur occure - * - */ - public static function unlink($params){ - extract($params); - - /* [1] Suppression de l'association - =========================================================*/ - $link_user = new Repo('cluster/unlink', [ - $_SESSION['WAREHOUSE']['id'], - $id_cluster, - $id_user, - clusterRepo::USER_CLASS - ]); - - return []; - - } - - - - - - /* RENVOIE UN UTILISATEUR EN FONCTION D'UN MOT CLE + /* RENVOIE UN GROUPE EN FONCTION D'UN MOT CLE * * @keywords Element de recherche + * @class Type de groupe * - * @return users Retourne la liste des utilisateurs trouves + * @return clusters Retourne la liste des groupes trouves * */ public static function search($params){ extract($params); - // On recupere les donnees - $cluster = new Repo('cluster/search', [ + $repoMethod = ($class==0) ? 'user_cluster/search' : 'machine_cluster/search'; + + // On recupere les donnees des groupes utilisateurs + $cluster = new Repo($repoMethod, [ $_SESSION['WAREHOUSE']['id'], $keywords ]); @@ -131,12 +77,19 @@ /* RENVOIE LA LISTE EXHAUSTIVE DES GROUPES * + * @class Type de groupe + * * @return clusters Liste des groupes * */ - public static function getAll(){ + public static function getAll($params){ + extract($params); + + $repoMethod = ($class==0) ? 'user_cluster/getAll' : 'machine_cluster/getAll'; + + // On recupere les donnees - $clusters = new Repo('cluster/getAll', [ $_SESSION['WAREHOUSE']['id'] ]); + $clusters = new Repo($repoMethod, [ $_SESSION['WAREHOUSE']['id'] ]); return [ 'clusters' => $clusters->answer() ]; } @@ -148,6 +101,7 @@ /* RENVOIE UN GROUPE D'UID DONNE * * @id_cluster UID du groupe en question + * @class Type de groupe * * @return cluster Groupe d'UID donne * @@ -155,12 +109,14 @@ public static function getById($params){ extract($params); + $repoMethod = ($class==0) ? 'user_cluster/getById' : 'machine_cluster/getById'; + // On recupere les donnees - $request = new Repo('cluster/getById', [ + $request = new Repo($repoMethod, [ $_SESSION['WAREHOUSE']['id'], $id_cluster ]); - $answer = $request->answer(); + $answer = $request->answer(); // Si aucun resultat, on retourne une erreur if( $answer === false ) @@ -174,59 +130,32 @@ - /* RENVOIE L'UTILISATEURS DE CODE DONNE + /* RENVOIE UN GROUPE DE NOM DONNE * - * @code Code de l'utilisateur en question + * @name Nom du groupe en question + * @class Type de groupe * - * @return utilisateur Utilisateur de code donne + * @return cluster Groupe de nom donne * */ - public static function getByCode($params){ + public static function getByName($params){ extract($params); + $repoMethod = ($class==0) ? 'user_cluster/getByName' : 'machine_cluster/getByName'; + // On recupere les donnees - $request = new Repo('user/getByCode', [ + $request = new Repo($repoMethod, [ $_SESSION['WAREHOUSE']['id'], - $code + $name ]); - $answer = $request->answer(); + $answer = $request->answer(); // Si aucun resultat, on retourne une erreur if( $answer === false ) return [ 'ModuleError' => ManagerError::NoMatchFound ]; - return [ 'user' => $answer ]; - } - - - - - - /* RENVOIE L'UTILISATEURS D'USERNAME DONNE - * - * @username Username de l'utilisateur en question - * - * @return utilisateur Utilisateur d'username donne - * - */ - public static function getByUsername($params){ - extract($params); - - - // On recupere les donnees - $request = new Repo('user/getByUsername', [ - $_SESSION['WAREHOUSE']['id'], - $username - ]); - $answer = $request->answer(); - - // Si aucun resultat, on retourne une erreur - if( $answer === false ) - return [ 'ModuleError' => ManagerError::NoMatchFound ]; - - - return [ 'user' => $answer ]; + return [ 'cluster' => $answer ]; } @@ -236,6 +165,7 @@ /* RENVOIE LES MEMBRES D'UN GROUPE DONNE * * @id_cluster UID du groupe en question + * @class Type du groupe en question * * @return members Membres du groupe donne * @@ -243,9 +173,10 @@ public static function getMembers($params){ extract($params); + $repoMethod = ($class==0) ? 'user_cluster/getMembers' : 'machine_cluster/getMembers'; // On recupere les donnees - $request = new Repo('cluster/getMembers', [ + $request = new Repo($repoMethod, [ $_SESSION['WAREHOUSE']['id'], $id_cluster ]); @@ -263,16 +194,11 @@ - /* MODIFIE UN UTILISATEUR DONNEE + /* MODIFIE UN groupe DONNEE * * @id_user UID de l'utilisateur - * @code Code RFID de l'utilisateur - * @username Identifiant l'utilisateur - * @firstname Prenom de l'utilisateur - * @lastcode Nom de l'utilisateur - * @mail Adresse email de l'utilisateur - * @password Mot de passe de l'utilisateur - * @status Status de l'utilisateur + * @class Type de groupe + * @name Nouveau nom * * @return status Retourne si oui ou non tout s'est bien deroule * @@ -280,6 +206,9 @@ public static function edit($params){ extract($params); + // TODO:: Gestion de la modification de groupe + exit(); + /* [1] On verifie l'existence de l'utilisateur =========================================================*/ $user_exists = new Repo('user/getById', [ @@ -347,7 +276,8 @@ /* SUPPRIME UN UTILISATEUR DONNEE * - * @id_user UID de l'utilisateur en question + * @id_cluster UID du groupe en question + * @class Type de groupe * * @return status Retourne si oui ou non tout s'est bien deroule * @@ -355,11 +285,12 @@ public static function delete($params){ extract($params); + $repoMethod = ($class==0) ? 'user_cluster/delete' : 'machine_cluster/delete'; // On recupere les donnees - $request = new Repo('user/delete', [ + $request = new Repo($repoMethod, [ $_SESSION['WAREHOUSE']['id'], - $id_user + $id_cluster ]); $answer = $request->answer(); diff --git a/manager/repo/user_cluster.php b/manager/repo/user_cluster.php index f5cf1a5..3feff3a 100644 --- a/manager/repo/user_cluster.php +++ b/manager/repo/user_cluster.php @@ -332,13 +332,13 @@ public static function getMembers($id_warehouse, $id_user_cluster){ /* [1] On recupere la liste des associations =========================================================*/ - $get_users = Database::getPDO()->prepare("SELECT m.id_user, m.name - FROM user_cluster_merge as cm, user_cluster as c, user as m + $get_users = Database::getPDO()->prepare("SELECT u.* + FROM user_cluster_merge as cm, user_cluster as c, user as u WHERE cm.id_user_cluster = c.id_user_cluster AND c.id_user_cluster = :id_user_cluster - AND c.id_warehouse = :id_warehouse - AND cm.id_user = m.id_user - ORDER BY m.name"); + AND c.id_warehouse = :id_warehouse + AND cm.id_user = u.id_user + ORDER BY u.username"); $get_users->execute([ ':id_warehouse' => $id_warehouse, ':id_user_cluster' => $id_user_cluster diff --git a/manager/view/group/view.php b/manager/view/group/view.php index 75eba9b..f87ae7b 100644 --- a/manager/view/group/view.php +++ b/manager/view/group/view.php @@ -11,33 +11,64 @@ public static function template($type=null){ switch($type){ - case 'member': return " + case 'machine': return " @name - + + "; + break; + case 'user': return " + + @username + "; break; - case 'cluster': return " -
+ case 'machine_cluster': return " +
@name #@name - @icon_remove + @icon_remove - @icon_edit + @icon_edit @icon_type - @_classtext (@nb_members) + machines (@nb_members) @icon_group - @members - + + @machines + + + + +
"; + break; + + + + case 'user_cluster': return " +
+ + + @name #@name + @icon_remove + + @icon_edit + + + @icon_type + utilisateurs (@nb_members) + + + + @icon_group + @users + +
"; @@ -82,7 +113,7 @@ ); - $CLUSTERLIST[$u]['_classtext'] = ($cluster['class']==0) ? 'utilisateurs' : 'machines'; + $CLUSTERLIST[$u]['class'] = (isset($cluster['id_user_cluster'])) ? 0 : 1; $CLUSTERLIST[$u]['nb_members'] = (count($members)<2) ? count($members).' membre' : count($members).'membres'; $CLUSTERLIST[$u]['icon_type'] = ($cluster['class']==0) ? file_get_contents( __ROOT__.'/src/static/menu-side/users.svg' ) : file_get_contents( __ROOT__.'/src/static/menu-side/device.svg' ); } diff --git a/manager/view/user/groups.php b/manager/view/user/groups.php new file mode 100644 index 0000000..374f28a --- /dev/null +++ b/manager/view/user/groups.php @@ -0,0 +1,118 @@ + + @username + + "; + break; + + + case 'user_cluster': return " +
+ @name #@name + @icon_remove + + @icon_edit + + + @icon_type + utilisateurs (@count) + + + + @icon_group + @users + + + + +
"; + break; + + + default: return " + + @clusterlist"; + break; + + } + } + + public static function view($params){ + debug(); + $view = ''; + + /* [1] On récupère la liste des utilisateurs + =========================================================*/ + $request = new ModuleRequest('clusterDefault/getAll', [ + 'class' => 0 + ]); + $answer = $request->dispatch(); + + // si erreur, on affiche l'explicitation + if( $answer->error != ManagerError::Success ) + return View::$htmlError; + + $CLUSTERLIST = $answer->get('clusters'); + + + foreach($CLUSTERLIST as $c=>$cluster){ + $usersReq = new ModuleRequest('clusterDefault/getMembers', [ + 'id_cluster' => $cluster['id_user_cluster'], + 'class' => 0 + ]); + $usersRes = $usersReq->dispatch(); + + /* (2) Gestion si erreur */ + if( $usersRes->error == ManagerError::Success ) $users = $usersRes->get('members'); + else $users = []; + + $CLUSTERLIST[$c]['count'] = count($users); + + $CLUSTERLIST[$c]['users'] = View::replaceMultiple( + self::template('user'), + $users, + [ 'id_user_cluster' => $cluster['id_user_cluster'] ] + ); + } + + + $view_cluster = View::replaceMultiple( + self::template('user_cluster'), + $CLUSTERLIST, [ + 'icon_remove' => file_get_contents( __ROOT__.'/src/static/sub-menu-side/remove.svg' ), + 'icon_edit' => file_get_contents( __ROOT__.'/src/static/sub-menu-side/edit.svg' ), + 'icon_card' => file_get_contents( __ROOT__.'/src/static/container/card.svg' ), + 'icon_mail' => file_get_contents( __ROOT__.'/src/static/container/mail.svg' ), + 'icon_group' => file_get_contents( __ROOT__.'/src/static/container/group.svg' ), + ]); + + + + + + return View::replaceSingle(self::template(), [ 'clusterlist' => $view_cluster ]); + } + + + + + + + + + } + + +?> diff --git a/test/client/interface.php b/test/client/interface.php index f89ba8b..b3554e7 100644 --- a/test/client/interface.php +++ b/test/client/interface.php @@ -224,8 +224,6 @@ locked: false }; - var SYSTEM = {}; - /* (2) Elements du DOM */ var mBox = document.getElementById('machine-box'); var led = document.getElementById('led'); @@ -247,20 +245,15 @@ lsi.createDataset('HISTORY.LOG'); lsi.createDataset('STATES.LOG' ); - /* (4) Récupération des données de fonctionnement */ var api = new APIClass('/api/'); api.send({path: 'machineDefault/init'}, function(response){ - SYSTEM = { - action: response.actions, - state: response.states - }; - - lsi.import('ACTIONS.CNF', SYSTEM.action); - lsi.import('STATES.CNF', SYSTEM.state); + lsi.import('ACTIONS.CNF', response.actions); + lsi.import('STATES.CNF', response.states); }); + /* [1] Fonctions =========================================================*/ /* (1) Gestion de mise à jour de la led en fonction de l'état @@ -349,7 +342,7 @@ /* (2) Levé carte ---------------------------------------------------------*/ - document.body.addEventListener('mouseup', function(e){ + window.addEventListener('mouseup', function(e){ clearInterval(INTERVAL); }, false); diff --git a/view/users.php b/view/users.php index d1ef018..44aaa05 100755 --- a/view/users.php +++ b/view/users.php @@ -29,9 +29,9 @@ Modification - + - Filtrer + Groupes @@ -164,12 +164,11 @@ - /* [4] Gestion de filtrage + /* [4] Gestion des groupes =========================================================*/ - echo "
"; + echo "
"; - echo "
"; - - echo "
"; + $grouplist = new View('user.groups', []); + $grouplist->view(); echo '
';