Added API procedure "getMemberGroups"

This commit is contained in:
Frederic Guillot 2016-04-21 21:10:04 -04:00
parent b0e41bc81b
commit 60e0753b90
6 changed files with 97 additions and 0 deletions

View File

@ -10,6 +10,7 @@ New features:
Improvements:
* Added API procedure "getMemberGroups"
* Added parameters for overdue tasks notifications: group by projects and send only to managers
* Allow people to install Kanboard outside of the DocumentRoot
* Allow plugins to be loaded from another folder

View File

@ -10,6 +10,11 @@ namespace Kanboard\Api;
*/
class GroupMember extends \Kanboard\Core\Base
{
public function getMemberGroups($user_id)
{
return $this->groupMember->getGroups($user_id);
}
public function getGroupMembers($group_id)
{
return $this->groupMember->getMembers($group_id);

View File

@ -108,4 +108,21 @@ class GroupMember extends Base
->eq('user_id', $user_id)
->exists();
}
/**
* Get all groups for a given user
*
* @access public
* @param integer $user_id
* @return array
*/
public function getGroups($user_id)
{
return $this->db->table(self::TABLE)
->columns(Group::TABLE.'.id', Group::TABLE.'.name')
->join(Group::TABLE, 'id', 'group_id')
->eq(self::TABLE.'.user_id', $user_id)
->asc(Group::TABLE.'.name')
->findAll();
}
}

View File

@ -1,6 +1,42 @@
Group Member API Procedures
===========================
## getMemberGroups
- Purpose: **Get all groups for a given user**
- Parameters:
- **user_id** (integer, required)
- Result on success: **List of groups**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "getMemberGroups",
"id": 1987176726,
"params": [
"1"
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 1987176726,
"result": [
{
"id": "1",
"name": "My Group A"
}
]
}
```
## getGroupMembers
- Purpose: **Get all members of a group**

View File

@ -30,6 +30,14 @@ class GroupMemberTest extends Base
$this->assertFalse($this->app->isGroupMember($groupId, 2));
}
public function testGetGroups()
{
$groups = $this->app->getMemberGroups(1);
$this->assertCount(1, $groups);
$this->assertEquals(1, $groups[0]['id']);
$this->assertEquals('My Group A', $groups[0]['name']);
}
public function testRemove()
{
$groupId = $this->getGroupId();

View File

@ -72,5 +72,35 @@ class GroupMemberTest extends Base
$this->assertCount(2, $users);
$this->assertEquals('admin', $users[0]['username']);
$this->assertEquals('user1', $users[1]['username']);
$groups = $groupMemberModel->getGroups(1);
$this->assertCount(1, $groups);
$this->assertEquals(1, $groups[0]['id']);
$this->assertEquals('Group A', $groups[0]['name']);
$groups = $groupMemberModel->getGroups(2);
$this->assertCount(1, $groups);
$this->assertEquals(1, $groups[0]['id']);
$this->assertEquals('Group A', $groups[0]['name']);
$groups = $groupMemberModel->getGroups(3);
$this->assertCount(1, $groups);
$this->assertEquals(2, $groups[0]['id']);
$this->assertEquals('Group B', $groups[0]['name']);
$groups = $groupMemberModel->getGroups(4);
$this->assertCount(1, $groups);
$this->assertEquals(2, $groups[0]['id']);
$this->assertEquals('Group B', $groups[0]['name']);
$groups = $groupMemberModel->getGroups(5);
$this->assertCount(2, $groups);
$this->assertEquals(1, $groups[0]['id']);
$this->assertEquals('Group A', $groups[0]['name']);
$this->assertEquals(2, $groups[1]['id']);
$this->assertEquals('Group B', $groups[1]['name']);
$groups = $groupMemberModel->getGroups(6);
$this->assertCount(0, $groups);
}
}