Skip to content

Commit 904cfa0

Browse files
committed
add 2 feature(create group, retrive users from group)
1 parent 60ab818 commit 904cfa0

File tree

5 files changed

+314
-0
lines changed

5 files changed

+314
-0
lines changed

README.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,10 @@ $iss = new IssueService(new ArrayConfiguration(
123123
### User
124124
- [Get User Info](#get-user-info)
125125

126+
### Group
127+
- [Create Group](#create-group)
128+
- [Get Users from group](#get-users-from-group)
129+
126130
#### Get Project Info
127131

128132
```php
@@ -927,6 +931,65 @@ try {
927931

928932
```
929933

934+
#### Create Group
935+
936+
Create new group.
937+
938+
```php
939+
<?php
940+
require 'vendor/autoload.php';
941+
942+
use JiraRestApi\JiraException;
943+
use JiraRestApi\Group\GroupService;
944+
945+
try {
946+
$g = new Group();
947+
948+
$g->name = 'Test group for REST API';
949+
950+
$gs = new GroupService();
951+
952+
$ret = $gs->createGroup($g);
953+
var_dump($user);
954+
} catch (JiraException $e) {
955+
print("Error Occured! " . $e->getMessage());
956+
}
957+
958+
```
959+
960+
#### Get Users from group
961+
962+
returns a paginated list of users who are members of the specified group and its subgroups.
963+
964+
```php
965+
<?php
966+
require 'vendor/autoload.php';
967+
968+
use JiraRestApi\JiraException;
969+
use JiraRestApi\Group\GroupService;
970+
971+
try {
972+
$queryParam = [
973+
'groupname' => 'Test group for REST API',
974+
'includeInactiveUsers' => true, // default false
975+
'startAt' => 0,
976+
'maxResults' => 50,
977+
];
978+
979+
$gs = new GroupService();
980+
981+
$ret = $gs->getMembers($queryParam);
982+
983+
// print all users in the group
984+
foreach($ret->values as $user) {
985+
print_r($user);
986+
}
987+
} catch (JiraException $e) {
988+
print("Error Occured! " . $e->getMessage());
989+
}
990+
991+
```
992+
930993
# License
931994

932995
Apache V2 License

src/Group/Group.php

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?php
2+
3+
namespace JiraRestApi\Group;
4+
use JiraRestApi\ClassSerialize;
5+
6+
class GroupUser
7+
{
8+
/**
9+
* @var integer
10+
*/
11+
public $size;
12+
13+
/** @var array */
14+
public $items;
15+
16+
/** @var integer */
17+
public $max_results;
18+
19+
/** @var integer */
20+
public $start_index;
21+
22+
/** @var integer */
23+
public $end_index;
24+
}
25+
26+
/**
27+
* Class Group
28+
*
29+
* @package JiraRestApi\Group
30+
*
31+
* @see https://docs.atlassian.com/jira/REST/server/#api/2/group
32+
*/
33+
class Group implements \JsonSerializable
34+
{
35+
use ClassSerialize;
36+
37+
/**
38+
* uri which was hit.
39+
*
40+
* @var string
41+
*/
42+
public $self;
43+
44+
/**
45+
* @var string
46+
*/
47+
public $name;
48+
49+
/**
50+
* @var GroupUser
51+
*/
52+
public $users;
53+
54+
/**
55+
* @var object
56+
*/
57+
public $expand;
58+
59+
public function jsonSerialize()
60+
{
61+
return array_filter(get_object_vars($this));
62+
}
63+
64+
public function setName($name) {
65+
$this->name = $name;
66+
67+
return $this;
68+
}
69+
70+
}

src/Group/GroupSearchResult.php

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?php
2+
3+
namespace JiraRestApi\Group;
4+
use JiraRestApi\ClassSerialize;
5+
6+
/**
7+
* Class GroupSearchResult
8+
*
9+
* @package JiraRestApi\Group
10+
*
11+
* @see https://docs.atlassian.com/jira/REST/server/#api/2/group
12+
*/
13+
class GroupSearchResult implements \JsonSerializable
14+
{
15+
use ClassSerialize;
16+
17+
/**
18+
* uri which was hit.
19+
*
20+
* @var string
21+
*/
22+
public $self;
23+
24+
/**
25+
* @var integer
26+
*/
27+
public $maxResults;
28+
29+
/**
30+
* @var integer
31+
*/
32+
public $startAt;
33+
34+
/**
35+
* @var integer
36+
*/
37+
public $total;
38+
39+
/** @var \JiraRestApi\User\User[] */
40+
public $values;
41+
42+
public function jsonSerialize()
43+
{
44+
return array_filter(get_object_vars($this));
45+
}
46+
}

src/Group/GroupService.php

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
<?php
2+
3+
namespace JiraRestApi\Group;
4+
5+
/**
6+
* Class to perform all groups related queries.
7+
* @package JiraRestApi\Group
8+
*/
9+
class GroupService extends \JiraRestApi\JiraClient
10+
{
11+
private $uri = '/group';
12+
13+
/**
14+
* Function to get group.
15+
*
16+
* @param array $paramArray Possible values for $paramArray 'username', 'key'.
17+
* "Either the 'username' or the 'key' query parameters need to be provided".
18+
*
19+
* @return Group class
20+
*/
21+
public function get($paramArray)
22+
{
23+
$queryParam = '?'.http_build_query($paramArray);
24+
25+
$ret = $this->exec($this->uri.$queryParam, null);
26+
27+
$this->log->addInfo("Result=\n".$ret);
28+
29+
return $this->json_mapper->map(
30+
json_decode($ret), new User()
31+
);
32+
}
33+
34+
/**
35+
* Get users from group
36+
*
37+
* @param $paramArray groupname, includeInactiveUsers, startAt, maxResults
38+
* @return GroupSearchResult
39+
* @throws \JiraRestApi\JiraException
40+
* @throws \JsonMapper_Exception
41+
*/
42+
public function getMembers($paramArray)
43+
{
44+
$queryParam = '?' . http_build_query($paramArray);
45+
46+
$ret = $this->exec($this->uri . '/member'.$queryParam, null);
47+
48+
$this->log->addInfo("Result=\n".$ret);
49+
50+
$userData = json_decode($ret);
51+
52+
$res = $this->json_mapper->map($userData, new GroupSearchResult());
53+
54+
return $res;
55+
}
56+
57+
/**
58+
* Creates a group by given group parameter
59+
*
60+
* @param $group \JiraRestApi\Group\Group
61+
* @return array
62+
* @throws \JiraRestApi\JiraException
63+
* @throws \JsonMapper_Exception
64+
*/
65+
public function createGroup($group)
66+
{
67+
$data = json_encode($group);
68+
69+
$ret = $this->exec($this->uri, $data);
70+
71+
$this->log->addInfo("Result=\n".$ret);
72+
73+
$groupData = json_decode($ret);
74+
$groups = [];
75+
76+
$group = $this->json_mapper->map(
77+
json_decode($ret), new Group()
78+
);
79+
80+
return $group;
81+
}
82+
}

tests/groupTest.php

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?php
2+
3+
use JiraRestApi\Dumper;
4+
use JiraRestApi\Group\Group;
5+
use JiraRestApi\Group\GroupService;
6+
use JiraRestApi\IssueLink\IssueLink;
7+
use JiraRestApi\IssueLink\IssueLinkService;
8+
use JiraRestApi\JiraException;
9+
10+
class GroupTest extends PHPUnit_Framework_TestCase
11+
{
12+
public function testCreateGroup()
13+
{
14+
$this->markTestSkipped();
15+
try {
16+
$g = new Group();
17+
18+
$g->name = 'Test group for REST API';
19+
20+
$gs = new GroupService();
21+
22+
$ret = $gs->createGroup($g);
23+
24+
Dumper::dump($ret);
25+
} catch (JiraException $e) {
26+
$this->assertTrue(false, 'testCreateGroup Failed : '.$e->getMessage());
27+
}
28+
}
29+
30+
public function testGetUsersFromGroup()
31+
{
32+
try {
33+
$queryParam = [
34+
'groupname' => 'Test group for REST API',
35+
'includeInactiveUsers' => true, // default false
36+
'startAt' => 0,
37+
'maxResults' => 50,
38+
];
39+
40+
$gs = new GroupService();
41+
42+
$ret = $gs->getMembers($queryParam);
43+
44+
// print all users in the group
45+
foreach($ret->values as $user) {
46+
print_r($user);
47+
}
48+
49+
} catch (JiraException $e) {
50+
$this->assertTrue(false, 'testCreateGroup Failed : '.$e->getMessage());
51+
}
52+
}
53+
}

0 commit comments

Comments
 (0)