Skip to content

Commit 553fab6

Browse files
sluc23m1guelpf
authored andcommitted
Add method to retrieve all members from projects (including inherited)
1 parent 0ae696b commit 553fab6

File tree

2 files changed

+49
-2
lines changed

2 files changed

+49
-2
lines changed

lib/Gitlab/Api/Projects.php

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,37 @@ public function members($project_id, $parameters = [])
292292
return $this->get($this->getProjectPath($project_id, 'members'), $resolver->resolve($parameters));
293293
}
294294

295+
/**
296+
* @param int $project_id
297+
* @param array $parameters (
298+
*
299+
* @var string $query The query you want to search members for.
300+
* )
301+
*
302+
* @throws MissingOptionsException If a required option is not provided
303+
*
304+
* @return mixed
305+
*/
306+
public function membersAll($project_id, $parameters = [])
307+
{
308+
if (!is_array($parameters)) {
309+
@trigger_error("Deprecated: String parameter of the members() function is deprecated.", E_USER_NOTICE);
310+
$username_query = $parameters;
311+
$parameters = array();
312+
if (!empty($username_query)) {
313+
$parameters['query'] = $username_query;
314+
}
315+
}
316+
317+
$resolver = $this->createOptionsResolver();
318+
319+
$resolver->setDefined('query')
320+
->setAllowedTypes('query', 'string')
321+
;
322+
323+
return $this->get($this->getProjectPath($project_id, 'members/all'), $resolver->resolve($parameters));
324+
}
325+
295326
/**
296327
* @param int $project_id
297328
* @param int $user_id
@@ -768,7 +799,7 @@ public function deployment($project_id, $deployment_id)
768799
{
769800
return $this->get($this->getProjectPath($project_id, 'deployments/'.$this->encodePath($deployment_id)));
770801
}
771-
802+
772803
/**
773804
* @param mixed $project_id
774805
* @param array $parameters
@@ -796,7 +827,7 @@ public function addShare($project_id, array $parameters = [])
796827

797828
return $this->post($this->getProjectPath($project_id, 'share'), $resolver->resolve($parameters));
798829
}
799-
830+
800831
/**
801832
* @param mixed $project_id
802833
* @param int $group_id

lib/Gitlab/Model/Project.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,22 @@ public function members($username_query = null)
190190
return $members;
191191
}
192192

193+
/**
194+
* @param string $username_query
195+
* @return User[]
196+
*/
197+
public function membersAll($username_query = null)
198+
{
199+
$data = $this->client->projects()->membersAll($this->id, $username_query);
200+
201+
$members = array();
202+
foreach ($data as $member) {
203+
$members[] = User::fromArray($this->getClient(), $member);
204+
}
205+
206+
return $members;
207+
}
208+
193209
/**
194210
* @param int $user_id
195211
* @return User

0 commit comments

Comments
 (0)