diff --git a/config/modules.json b/config/modules.json index 74fa919..a86f699 100755 --- a/config/modules.json +++ b/config/modules.json @@ -387,7 +387,8 @@ "description": "Liste de tous les groupes", "permissions": ["warehouse", "admin"], "parameters": { - "class": { "description": "Type de groupe.", "type": "id" } + "class": { "description": "Type de groupe.", "type": "id" }, + "class": { "description": "Type de groupe.", "type": "id", "optional": true } }, "output": { "clusters": { "description": "Liste de tous les groupes.", "type": "array>" } @@ -434,9 +435,9 @@ "description": "Modifie le nom d'un groupe.", "permissions": ["warehouse", "admin"], "parameters": { - "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 } + "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)" } }, "output": { "status": { "description": "Status de la modification.", "type": "boolean" } diff --git a/config/repositories.json b/config/repositories.json index 88424b1..44c7ea2 100755 --- a/config/repositories.json +++ b/config/repositories.json @@ -53,6 +53,7 @@ "machine_cluster": [ "create", + "edit", "delete", "getAll", @@ -72,6 +73,7 @@ "user_cluster": [ "create", + "edit", "delete", "getAll", diff --git a/manager/module/clusterDefault.php b/manager/module/clusterDefault.php index 6898f81..9bd4181 100644 --- a/manager/module/clusterDefault.php +++ b/manager/module/clusterDefault.php @@ -104,12 +104,32 @@ public static function getAll($params){ extract($params); - $repoMethod = ($class==0) ? 'user_cluster/getAll' : 'machine_cluster/getAll'; + $result = []; - // On recupere les donnees - $clusters = new Repo($repoMethod, [ $_SESSION['WAREHOUSE']['id'] ]); + if( is_null($class) || $class == 0 ){ - return [ 'clusters' => $clusters->answer() ]; + // On recupere les donnees des groupes utilisateurs + $userClusters = new Repo('user_cluster/getAll', [ + $_SESSION['WAREHOUSE']['id'] + ]); + + $result = array_merge($result, $userClusters->answer()); + + } + + if( is_null($class) || $class == 1 ){ + + // On recupere les donnees des groupes utilisateurs + $machineClusters = new Repo('machine_cluster/getAll', [ + $_SESSION['WAREHOUSE']['id'] + ]); + + $result = array_merge($result, $machineClusters->answer()); + + } + + + return [ 'clusters' => $result ]; } @@ -214,7 +234,7 @@ /* MODIFIE UN groupe DONNEE * - * @id_user UID de l'utilisateur + * @id_cluster UID du groupe * @class Type de groupe * @name Nouveau nom * @@ -224,64 +244,42 @@ public static function edit($params){ extract($params); - // TODO:: Gestion de la modification de groupe - exit(); - /* [1] On verifie l'existence de l'utilisateur + /* [1] On verifie l'existence du groupe =========================================================*/ - $user_exists = new Repo('user/getById', [ + $repo = ($class==0) ? 'user_cluster' : 'machine_cluster'; + + $cluster_exists = new Repo($repo.'/getById', [ $_SESSION['WAREHOUSE']['id'], - $id_user + $id_cluster ]); - $user_data = $user_exists->answer(); + $cluster_data = $cluster_exists->answer(); // Si on a recupere aucun utilisateur, on retourne une erreur - if( !is_array($user_data) ) + if( $cluster_data === false ) return ['ModuleError' => ManagerError::NoMatchFound]; /* [2] Normalisation + verification des donnees =========================================================*/ - $password_hash = sessionManager::secure_hash($password); - /* (1) Verification des parametres (si non nul + differents)*/ $diff_param = [ - 'code' => !is_null($code) && $user_data['code'] != $code, - 'username' => !is_null($username) && $user_data['username'] != $username, - 'firstname' => !is_null($firstname) && $user_data['firstname'] != $firstname, - 'lastname' => !is_null($lastname) && $user_data['lastname'] != $lastname, - 'mail' => !is_null($mail) && $user_data['mail'] != $mail, - 'password' => !is_null($password) && $user_data['password'] != $password_hash, - 'status' => !is_null($status) && $user_data['status'] != $status + 'name' => $cluster_data['name'] != $name ]; /* (2) Gestion des parametres optionnels */ $opt_data = [ - 'code' => ($diff_param['code']) ? $code : $user_data['code'], - 'username' => ($diff_param['username']) ? $username : $user_data['username'], - 'firstname' => ($diff_param['firstname']) ? $firstname : $user_data['firstname'], - 'lastname' => ($diff_param['lastname']) ? $lastname : $user_data['lastname'], - 'mail' => ($diff_param['mail']) ? $mail : $user_data['mail'], - 'password' => ($diff_param['password']) ? $password : $user_data['password'], - 'status' => ($diff_param['status']) ? $status : $user_data['status'], + 'name' => ($diff_param['name']) ? $name : $cluster_data['name'], ]; - - - /* [3] Modification de l'utilisateur + /* [3] Modification du groupe =========================================================*/ - $request = new Repo('user/edit', [ + $request = new Repo($repo.'/edit', [ $_SESSION['WAREHOUSE']['id'], - $id_user, - $opt_data['code'], - $opt_data['username'], - $opt_data['firstname'], - $opt_data['lastname'], - $opt_data['mail'], - $opt_data['password'], - $opt_data['status'] + $id_cluster, + $opt_data['name'], ]); diff --git a/manager/repo/cluster.php b/manager/repo/cluster.php deleted file mode 100755 index 6af56d8..0000000 --- a/manager/repo/cluster.php +++ /dev/null @@ -1,527 +0,0 @@ - UID de l'entrepot - * @name Nom du groupe - * @class Type d'entités du groupe - * @owner Si défini -> UID de l'entité qui a ce groupe comme groupe PERSONNEL - * - * @return id_user Renvoie l'UID du groupe cree - * Renvoie FALSE si une erreur occure - * - */ - public static function create($id_warehouse, $name, $class, $owner=null){ - /* [1] Verification de l'unicite de name - =========================================================*/ - $check_unique = ( self::getByName($id_warehouse, $name) === false ); - - // Si un groupe a deja ce nom, on renvoie une erreur - if( !$check_unique ) - return false; - - - /* [2] Creation du groupe - =========================================================*/ - $insert_user = Database::getPDO()->prepare("INSERT INTO cluster(id_cluster, id_warehouse, name, class, personal) - VALUES(DEFAULT, :id_warehouse, :name, :class, :personal)"); - $insert_user->execute([ - ':id_warehouse' => $id_warehouse, - ':name' => $name, - ':class' => $class, - ':personal' => $owner - ]); - - /* [3] On retourne l'id_group ou FALSE si erreur - =========================================================*/ - $check_group = self::getByName($id_warehouse, $name); - - // Si n'existe pas on retourne FALSE - if( $check_group === false ) - return false; - - // Sinon, on retourne son id - return $check_group['id_cluster']; - - } - - - - - - - - /* ASSOCIATION D'UN(E) UTILISATEUR/MACHINE A UN GROUPE - * - * @id_warehouse UID de l'entrepot - * @id_cluster UID du groupe - * @id_entity UID de la machine ou de l'utilisateur - * @class Spefication du type d'entite (0=user;1=machine) - * - * @return error Renvoie le code 'ManagerError' - * - */ - public static function link($id_warehouse, $id_cluster, $id_entity, $class){ - /* [1] Verification de l'existence du groupe - =========================================================*/ - $group_check = self::getById($id_warehouse, $id_cluster); - - // Si le groupe n'existe pas, on retourne ue erreur - if( $group_check === false ) - return ManagerError::NoMatchFound; - - - - /* [2] Verification de l'existente de l'entite - =========================================================*/ - $entity_exists = false; - /* (1) Utilisateur */ - if( $class == self::USER_CLASS ){ - // On verifie si c'est un utilisateur - $user_check = userRepo::getById($id_warehouse, $id_entity); - $entity_exists = ( $user_check !== FALSE ); - - /* (2) Machine */ - }elseif( $class == self::MACHINE_CLASS ){ - // On verifie si c'est une machine - $machine_check = machineRepo::getById($id_warehouse, $id_entity); - $entity_exists = ( $machine_check !== FALSE ); - } - - - - // Si aucune entite existante, on retourne une erreur - if( !$entity_exists ) - return ManagerError::NoMatchFound; - - - /* [3] Verification que l'existente n'existe pas deja - =========================================================*/ - $already_cluster_merge = self::getMerge($id_warehouse, $id_cluster, $id_entity, $class); - - // Si l'association existe deja, on ne la cree donc pas - if( $already_cluster_merge !== false ) - return ManagerError::Success; - - - /* [4] On cree l'association - =========================================================*/ - $link_entity = Database::getPDO()->prepare("INSERT INTO cluster_merge(id_cluster_merge, id_cluster, id_entity) - VALUES(DEFAULT, :id_cluster, :id_entity)"); - $link_entity->execute([ - ':id_cluster' => $id_cluster, - ':id_entity' => $id_entity - ]); - - /* [5] On retourne l'id_cluster_merge ou FALSE si erreur - =========================================================*/ - $check_cluster_merge = self::getMerge($id_warehouse, $id_cluster, $id_entity, $class); - - // Si n'existe pas on retourne FALSE - if( !is_array($check_cluster_merge) ) - return ManagerError::RepoError; - - // Sinon, on retourne son id - return ManagerError::Success; - - } - - - - - - - - /* SUPPRIME UNE ASSOCIATION D'UN(E) UTILISATEUR/MACHINE A UN GROUPE - * - * @id_warehouse UID de l'entrepot - * @id_cluster UID du groupe - * @id_entity UID de la machine ou de l'utilisateur - * @class Spefication du type d'entite (0=user;1=machine) - * - * @return error Renvoie le code 'ManagerError' - * - */ - public static function unlink($id_warehouse, $id_cluster, $id_entity, $class){ - /* [1] On récupère l'UID du lien - =========================================================*/ - /* (1) On récupère le lien */ - $get_merge_id = self::getMerge($id_warehouse, $id_cluster, $id_entity, $class); - - /* (2) Si on ne trouve rien */ - if( $get_merge_id == false ) - return ManagerError::NoMatchFound; - - - - /* [2] On supprime le lien - =========================================================*/ - $delete_cluster_merge = Database::getPDO()->prepare("DELETE FROM cluster_merge - WHERE id_cluster_merge = :uid"); - $delete_cluster_merge->execute([ - ':uid' => $get_merge_id['id_cluster_merge'] - ]); - - - /* [2] On verifie que l'association n'existe plus - =========================================================*/ - if( self::getMerge($id_warehouse, $id_cluster, $id_entity, $class) !== false ) - return ManagerError::ModuleError; - - - return ManagerError::Success; - } - - - - - - - - /* RENVOIE L'ID D'UNE ASSOCIATION D'UN(E) UTILISATEUR/MACHINE A UN GROUPE - * - * @id_warehouse UID de l'entrepot - * @id_cluster UID du groupe - * @id_entity UID de la machine ou de l'utilisateur - * @class Spefication du type d'entite (0=user;1=machine) - * - * @return association Renvoie l'UID de l'association cree - * Renvoie FALSE si une erreur occure - * - */ - public static function getMerge($id_warehouse, $id_cluster, $id_entity, $class){ - // On ecrit la requete - $request = Database::getPDO()->prepare("SELECT cm.* - FROM cluster_merge as cm, cluster as c - WHERE cm.id_cluster = c.id_cluster - AND c.id_warehouse = :id_warehouse - AND cm.id_cluster = :id_cluster - AND cm.id_entity = :id_entity - AND c.class = :class"); - - // On execute la requete - $request->execute([ - ':id_warehouse' => $id_warehouse, - ':id_cluster' => $id_cluster, - ':id_entity' => $id_entity, - ':class' => $class - ]); - - // On recupere 1 seule relation - $answer = $request->fetch(); - - // Gestion d'erreur -> aucun resultat - if( $answer === false ) - return false; - - // On retourne en supprimant les indices numeriques - return Database::delNumeric( $answer, true ); - } - - - - - - - - /* RENVOIE LA LISTE DES GROUPES D'UN ENTREPOT - * - * @id_warehouse UID de l'entrepot - * - * @return clusters Renvoie la liste des groupes - * Renvoie FALSE si une erreur occure - * - */ - public static function getAll($id_warehouse){ - // On ecrit la requete - $request = Database::getPDO()->prepare("SELECT c.id_cluster, c.name, c.class - FROM cluster as c - WHERE c.id_warehouse = :id_warehouse - AND c.personal is null - ORDER BY c.name ASC"); - - // On execute la requete - $request->execute([ - ':id_warehouse' => $id_warehouse - ]); - - // On retourne en supprimant les indices numeriques - return Database::delNumeric( $request->fetchAll() ); - } - - - - - - - - /* RENVOIE LA LISTE D'UN GROUPE SPECIFIQUE - * - * @id_warehouse UID de l'entrepot - * @id UID du groupe - * - * @return cluster Renvoie le groupe correspondant - * Renvoie FALSE si une erreur occure - * - */ - public static function getById($id_warehouse, $id){ - // On ecrit la requete - $request = Database::getPDO()->prepare("SELECT c.* - FROM cluster as c - WHERE c.id_warehouse = :id_warehouse - AND c.id_cluster = :id"); - - // On execute la requete - $request->execute([ - ':id_warehouse' => $id_warehouse, - ':id' => $id - ]); - - $fetch = $request->fetch(); - - // Si aucun résultat - if( $fetch == false ) - return false; - - // On retourne en supprimant les indices numeriques - return Database::delNumeric( $fetch, true ); - } - - - - - - - - /* RENVOIE LA LISTE D'UN GROUPE SPECIFIQUE - * - * @id_warehouse UID de l'entrepot - * @name Nom du groupe - * - * @return cluster Renvoie le groupe correspondant - * Renvoie FALSE si une erreur occure - * - */ - public static function getByName($id_warehouse, $name){ - // On ecrit la requete - $request = Database::getPDO()->prepare("SELECT c.* - FROM cluster as c - WHERE c.id_warehouse = :id_warehouse - AND c.name = :name"); - - // On execute la requete - $request->execute([ - ':id_warehouse' => $id_warehouse, - ':name' => $name - ]); - - $fetch = $request->fetch(); - - // Si aucun résultat - if( $fetch == false ) - return false; - - // On retourne en supprimant les indices numeriques - return Database::delNumeric( $fetch, true ); - } - - - - - - - - /* RENVOIE LE GROUPE PERSONNEL D'UNE ENTITE - * - * @id_warehouse UID de l'entrepot - * @id_entity UID de l'entité (user/machine) - * @class Classe du groupe (0:user ; 1:machine) - * - * @return cluster Renvoie le groupe correspondant - * Renvoie FALSE si une erreur occure - * - */ - public static function getPersonal($id_warehouse, $id_entity, $class){ - // On ecrit la requete - $request = Database::getPDO()->prepare("SELECT c.* - FROM cluster as c - WHERE c.id_warehouse = :id_warehouse - AND c.personal is not null - AND c.id_entity = :id_entity - AND c.class = :class"); - - // On execute la requete - $request->execute([ - ':id_warehouse' => $id_warehouse, - ':id_entity' => $id_entity, - ':class' => $class - ]); - - $fetch = $request->fetch(); - - // Si aucun résultat - if( $fetch == false ) - return false; - - // On retourne en supprimant les indices numeriques - return Database::delNumeric( $fetch, true ); - } - - - - - - - - - /* RENVOIE LES MEMBRES D'UN GROUPE DONNE - * - * @id_warehouse UID de l'entrepot - * @id_cluster UID du groupe en question - * - * @return members Retourne la liste des membres du groupe - * - */ - public static function getMembers($id_warehouse, $id_cluster){ - /* [1] On recupere la liste des associations - =========================================================*/ - $get_members = Database::getPDO()->prepare("SELECT id_entity as id_member, c.class - FROM cluster_merge as cm, cluster as c - WHERE cm.id_cluster = c.id_cluster - AND c.id_cluster = :id_cluster - AND c.id_warehouse = :id_warehouse - AND c.personal is null - ORDER BY id_cluster_merge"); - $get_members->execute([ - ':id_warehouse' => $id_warehouse, - ':id_cluster' => $id_cluster - ]); - - $members = Database::delNumeric( $get_members->fetchAll() ); - - /* [2] On formatte recupere les entites - =========================================================*/ - foreach($members as $i=>$member){ - - /* (1) On recupere les informations utilisateur */ - if( $member['class'] == self::USER_CLASS ){ - $get_user = userRepo::getById( $id_warehouse, $member['id_member'] ); - - // Si on a bien recu les informations, on les ajoute - if( $get_user !== false ){ - $members[$i] = [ - 'id_member' => $get_user['id_user'], - 'name' => $get_user['username'], - 'class' => self::USER_CLASS - ]; - } - - - /* (2) On recupere les informations machine */ - }elseif( $member['class'] == self::MACHINE_CLASS ){ - $get_machine = machineRepo::getById( $id_warehouse, $member['id_member'] ); - - // Si on a bien recu les informations, on les ajoute - if( $get_machine !== false ){ - $members[$i] = [ - 'id_member' => $get_machine['id_machine'], - 'name' => $get_machine['name'], - 'class' => self::MACHINE_CLASS - ]; - } - } - - } - - /* [2] On verifie que le groupe n'existe plus - =========================================================*/ - return $members; - } - - - - - - /* RENVOIE UNE LISTE DE GROUPES EN FONCTION D'UN MOT CLE - * - * @id_warehouse UID de l'entrepot - * @keyword Element de recherche - * - * @return clusters Retourne les groupes trouves - * - */ - public static function search($id_warehouse, $keyword){ - // On recupere les donnees - $searchclusters = Database::getPDO()->prepare("SELECT * FROM cluster - WHERE id_warehouse = :id_warehouse - AND name LIKE '%".$keyword."%' - AND personal is null"); - - $searchclusters->execute([ - ':id_warehouse' => $id_warehouse - ]); - - return Database::delNumeric( $searchclusters->fetchAll() ); - } - - - - - - - - - /* SUPPRIME UN GROUPE DONNE - * - * @id_warehouse UID de l'entrepot - * @id_cluster UID du groupe en question - * - * @return status Retourne si oui ou non le groupe a bien ete supprime - * - */ - public static function delete($id_warehouse, $id_cluster){ - /* [1] On redige/execute la requete - =========================================================*/ - $delete_group = Database::getPDO()->prepare("DELETE FROM cluster - WHERE id_warehouse = :id_warehouse - AND id_cluster = :id_cluster"); - $delete_group->execute([ - ':id_warehouse' => $id_warehouse, - ':id_cluster' => $id_cluster - ]); - - - /* [2] On verifie que le groupe n'existe plus - =========================================================*/ - return ( self::getById($id_group) === false ); - } - - - - - - - - - - - - - - } - - -?> diff --git a/manager/repo/machine_cluster.php b/manager/repo/machine_cluster.php index d376c3b..dfdb067 100644 --- a/manager/repo/machine_cluster.php +++ b/manager/repo/machine_cluster.php @@ -380,6 +380,35 @@ + + /* MODIFIE LE NOM D'UN GROUPE DONNE + * + * @id_machine_cluster UID du gorupe + * @name Nouveau nom du groupe + * + * @return status TRUE si tout s'est bien passé, sinon FALSE + * + */ + public static function edit($id_warehouse, $id_machine_cluster, $name){ + /* [1] On rédige la requête + =========================================================*/ + $edit_group = Database::getPDO()->prepare("UPDATE machine_cluster + SET name = :name + WHERE id_machine_cluster = :id_machine_cluster"); + $edited = $edit_group->execute([ + ':name' => $name, + ':id_machine_cluster' => $id_machine_cluster + ]); + + + return $edited; + } + + + + + + /* SUPPRIME UN GROUPE DONNE * * @id_warehouse UID de l'entrepot diff --git a/manager/repo/user_cluster.php b/manager/repo/user_cluster.php index 3feff3a..4f0f9c4 100644 --- a/manager/repo/user_cluster.php +++ b/manager/repo/user_cluster.php @@ -380,6 +380,34 @@ + + /* MODIFIE LE NOM D'UN GROUPE DONNE + * + * @id_user_cluster UID du gorupe + * @name Nouveau nom du groupe + * + * @return status TRUE si tout s'est bien passé, sinon FALSE + * + */ + public static function edit($id_warehouse, $id_user_cluster, $name){ + /* [1] On rédige la requête + =========================================================*/ + $edit_group = Database::getPDO()->prepare("UPDATE user_cluster + SET name = :name + WHERE id_user_cluster = :id_user_cluster"); + $edited = $edit_group->execute([ + ':name' => $name, + ':id_user_cluster' => $id_user_cluster + ]); + + + return $edited; + } + + + + + /* SUPPRIME UN GROUPE DONNE * * @id_warehouse UID de l'entrepot diff --git a/view/groups.php b/view/groups.php index d2890e7..7e46870 100755 --- a/view/groups.php +++ b/view/groups.php @@ -184,13 +184,11 @@ 'id_cluster' => $m[2], 'class' => ($m[1]=='u') ? 0 : 1 ]); - $membersChoice->view(); }else{ $groupChoice = new View('group.groupChoice', []); - $groupChoice->view(); } diff --git a/view/js/groups-min.js b/view/js/groups-min.js index a7826fd..8d1971e 100644 --- a/view/js/groups-min.js +++ b/view/js/groups-min.js @@ -3,21 +3,23 @@ edit:{text:'#CONTAINER > section[data-sublink="edit"] ',element:document.querySe element:document.querySelector('#CONTAINER > section[data-sublink="permissions"]')}}; if(null!=section.view.element){1 article.inline-box[id]");for(c=0;c= 2 && !isNaN(pageManager.vars[1]) ){ + if( pageManager.vars.length >= 2 && /^(u|m)\d+$/.test(pageManager.vars[1]) ){ + console.log('bla'); + var prefix = pageManager.vars[1][0]; + var cluster = pageManager.vars[1].slice(1); + + var request = { + path: 'clusterDefault/getById', + id_cluster: cluster, + class: (prefix=='u') ? 0 : 1 + }; // On récupère la user d'uid donné dans l'URL - api.send({path:'clusterDefault/getById', id_cluster:pageManager.vars[1]}, function(response){ + api.send(request, function(response){ // Si aucune erreur et un résultat if( response.ModuleError == 0 ){ found_edit = [ response.cluster ]; // On récupère le résultat @@ -608,10 +635,13 @@ if( section.edit.element != null ){ // Si l'id est defini if( section.edit.input.search.id.value != '' ){ + var clusterClass = (found_edit[searchindex_edit].hasOwnProperty('id_user_cluster')) ? 0 : 1; + var request = { path: 'clusterDefault/edit', // On veut creer une cluster id_cluster: section.edit.input.search.id.value, - name: section.edit.input.name.value + name: section.edit.input.name.value, + class: clusterClass }; api.send(request, function(answer){ @@ -619,8 +649,11 @@ if( section.edit.element != null ){ console.log('Groupe modifiee!'); section.edit.input.submit.anim('active', 1500); - // On met a jour la cluster - autofill_edit(section.edit.input.search.id.value); + + // On met a jour le cluster + pageManager.vars[1] = ((clusterClass==0)?'u':'m') + request.id_cluster; + navSubMenu('view'); + document.location = ''; }else // Erreur console.error('ModuleError::'+answer.ModuleError); diff --git a/view/js/machines-min.js b/view/js/machines-min.js index 615524d..c5c4ac6 100644 --- a/view/js/machines-min.js +++ b/view/js/machines-min.js @@ -4,7 +4,7 @@ if(null!=section.view.element){1 article.inline-box[id]");for(c=0;c