diff --git a/automate.php b/automate.php index 71b7b51..cefd6a8 100755 --- a/automate.php +++ b/automate.php @@ -245,5 +245,42 @@ return true; - }insertUsersComposite(); + }//insertUsersComposite(); + + + + + + + /* RETOURNE LES GROUPES D'UN UTILISATEUR + * + * + * @return status TRUE si aucune erreur, sinon FALSE + * + */ + function getUserClusters(){ + $id_user = 115; + + // Groupes de l'utilisateur 'a' + $getUser1Clusters = new Repo('user/getClusters', array($id_user)); + $user1Clusters = $getUser1Clusters->answer(); + var_dump( $user1Clusters ); + + // On ajoute un groupe a l'utilisateur 100 + $linkA = new Repo('cluster/link', array($user1Clusters[0]['id_cluster'], 100) ); + var_dump( $linkA->answer() ); + $getUser2Clusters = new Repo('user/getClusters', array(100)); + var_dump( $getUser2Clusters->answer() ); + + // On retire un groupe a l'utilisateur 100 + $unlinkA = new Repo('cluster/unlink', array($user1Clusters[0]['id_cluster'], 100) ); + var_dump( $linkA->answer() ); + $getUser2Clusters = new Repo('user/getClusters', array(100)); + var_dump( $getUser2Clusters->answer() ); + + + + return true; + + }//getUserClusters(); ?> \ No newline at end of file diff --git a/config/modules.json b/config/modules.json index 236de25..b464066 100755 --- a/config/modules.json +++ b/config/modules.json @@ -12,7 +12,7 @@ "getAll" ], - "groupDefault" :[ + "clusterDefault" :[ "create", "getAll" diff --git a/config/repositories.json b/config/repositories.json index 7ed0083..69f8e67 100755 --- a/config/repositories.json +++ b/config/repositories.json @@ -7,7 +7,7 @@ "getByCode", "getByUsername", - "getGroups", + "getClusters", "delete" ], @@ -18,7 +18,7 @@ "getAll", "getById", - "getGroup" + "getClusters" ], "cluster" :[ diff --git a/manager/Database.php b/manager/Database.php index 7933487..3c4df36 100755 --- a/manager/Database.php +++ b/manager/Database.php @@ -108,11 +108,15 @@ * */ public static function delNumeric($fetchData, $oneDimension=false){ + // On quitte si ce n'est pas un tableau + if( !is_array($fetchData) ) + return array(); + $nextEquivalent = false; // Vaut VRAI si le prochain est peut-etre un equivalent numerique /* [1] 2 dimensions ===============================================*/ - if( !$oneDimension && is_array($fetchData[0]) ){ + if( !$oneDimension && isset($fetchData[0]) && is_array($fetchData[0]) ){ // on supprime les doublons des entrées (indice numérique) for( $i = 0 ; $i < count($fetchData) ; $i++ ) // pour tout les utilisateurs diff --git a/manager/module/groupDefault.php b/manager/module/clusterDefault.php similarity index 90% rename from manager/module/groupDefault.php rename to manager/module/clusterDefault.php index 0848492..a4101ec 100644 --- a/manager/module/groupDefault.php +++ b/manager/module/clusterDefault.php @@ -2,7 +2,7 @@ namespace manager\module; - class groupDefault{ + class clusterDefault{ public static function getAll(){ diff --git a/manager/module/userDefault.php b/manager/module/userDefault.php index c054cf9..20b2a73 100755 --- a/manager/module/userDefault.php +++ b/manager/module/userDefault.php @@ -97,7 +97,8 @@ =========================================================*/ return array( 'ModuleError' => ManagerError::Success, - 'id_user' => $id_user + 'id_user' => $id_user, + 'id_cluster' => $id_group ); } diff --git a/manager/repo/cluster.php b/manager/repo/cluster.php index 28fcc25..fddf3f6 100755 --- a/manager/repo/cluster.php +++ b/manager/repo/cluster.php @@ -46,6 +46,12 @@ } + + + + + + /* ASSOCIATION D'UN(E) UTILISATEUR/MACHINE A UN GROUPE * * @id_cluster UID du groupe @@ -74,15 +80,23 @@ // On verifie si c'est un utilisateur $user_check = userRepo::getById($id_entity); - $is_user = ( $machine_check !== FALSE ); + $is_user = ( $user_check !== FALSE ); // Si aucune entite existante, on retourne une erreur if( !$is_machine && !$is_user ) return false; + /* [3] Verification que l'existente n'existe pas deja + =========================================================*/ + $already_cluster_merge = self::getMerge($id_cluster, $id_entity); - /* [3] On cree l'association + // Si l'association existe deja, on ne la cree donc pas + if( $already_cluster_merge !== false ) + return $already_cluster_merge['id_cluster_merge']; + + + /* [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)"); @@ -91,7 +105,7 @@ ':id_entity' => $id_entity )); - /* [3] On retourne l'id_cluster_merge ou FALSE si erreur + /* [5] On retourne l'id_cluster_merge ou FALSE si erreur =========================================================*/ $check_cluster_merge = self::getMerge($id_cluster, $id_entity); @@ -110,6 +124,37 @@ + /* SUPPRIME UNE ASSOCIATION D'UN(E) UTILISATEUR/MACHINE A UN GROUPE + * + * @id_cluster UID du groupe + * @id_entity UID de la machine ou de l'utilisateur + * + * @return status Retourne si oui ou non l'association a bien ete supprimee + * + */ + public static function unlink($id_cluster, $id_entity){ + /* [1] On redige/execute la requete + =========================================================*/ + $delete_cluster_merge = Database::getPDO()->prepare("DELETE FROM cluster_merge + WHERE id_cluster = :id_cluster + AND id_entity = :id_entity"); + $delete_cluster_merge->execute(array( + ':id_cluster' => $id_cluster, + ':id_entity' => $id_entity + )); + + + /* [2] On verifie que l'association n'existe plus + =========================================================*/ + return ( self::getMerge($id_cluster, $id_entity) === false ); + } + + + + + + + /* RENVOIE LA LISTE DE TOUS LES GROUPES * * @return groups Liste des groupes de la BDD diff --git a/manager/repo/user.php b/manager/repo/user.php index 445cc10..8031d05 100755 --- a/manager/repo/user.php +++ b/manager/repo/user.php @@ -225,6 +225,36 @@ + /* RENVOIE LES GROUPES AUQUEL APPARTIENT UN UTILISATEUR DONNE + * + * @id_user UID de l'utilisateur en question + * + * @return clusters Retourne la liste des groupes auquel appartient l'utilisateur + * + */ + public static function getClusters($id_user){ + /* [1] On redige/execute la requete + =========================================================*/ + $get_clusters = Database::getPDO()->prepare("SELECT c.* FROM cluster as c, cluster_merge as cm + WHERE cm.id_cluster = c.id_cluster + AND cm.id_entity = :id_user + ORDER BY c.id_cluster"); + $get_clusters->execute(array( + ':id_user' => $id_user + )); + + /* [2] On retourne la liste des groupes + =========================================================*/ + return Database::delNumeric( $get_clusters->fetchAll() ); + } + + + + + + + + /* SUPPRIME UN UTILISATEUR DONNE * * @id_user UID de l'utilisateur en question @@ -256,6 +286,15 @@ + + + + + + + + + } diff --git a/phpunit/tests/Database_delNumeric.php b/phpunit/tests/Database_delNumeric.php index d815884..d1d7e75 100755 --- a/phpunit/tests/Database_delNumeric.php +++ b/phpunit/tests/Database_delNumeric.php @@ -2,6 +2,16 @@ class Database_delNumeric extends \PHPUnit_Framework_TestCase{ + /* [0] Verification du type + =========================================================*/ + public function testTypeInt(){ + $this->assertEquals( array(), \manager\Database::delNumeric(10) ); + } + + public function testTypeString(){ + $this->assertEquals( array(), \manager\Database::delNumeric('notarray') ); + } + /* [1] Verification pour 2 dimensions =========================================================*/ /* (1) Global */ diff --git a/todo.md b/todo.md index d5b3a8c..a29d16b 100755 --- a/todo.md +++ b/todo.md @@ -39,6 +39,8 @@ ######## # FAIT # ######## +- [x] [cluster::link/unlink] Ajout/Suppression d'association des utilisateurs/machines a des groupes +- [x] [user::getClusters] Recuperation des groupes d'un utilisateur - [x] [manager/repo/]Creation des repos - [x] [user] utilisateur - [x] [machine] machines