@@ -19,36 +19,7 @@ class Groups extends AbstractApi
19
19
*/
20
20
public function all (array $ parameters = [])
21
21
{
22
- $ resolver = $ this ->createOptionsResolver ();
23
- $ booleanNormalizer = function (Options $ resolver , $ value ) {
24
- return $ value ? 'true ' : 'false ' ;
25
- };
26
-
27
- $ resolver ->setDefined ('skip_groups ' )
28
- ->setAllowedTypes ('skip_groups ' , 'array ' )
29
- ->setAllowedValues ('skip_groups ' , function (array $ value ) {
30
- return count ($ value ) == count (array_filter ($ value , 'is_int ' ));
31
- })
32
- ;
33
- $ resolver ->setDefined ('all_available ' )
34
- ->setAllowedTypes ('all_available ' , 'bool ' )
35
- ->setNormalizer ('all_available ' , $ booleanNormalizer )
36
- ;
37
- $ resolver ->setDefined ('search ' );
38
- $ resolver ->setDefined ('order_by ' )
39
- ->setAllowedValues ('order_by ' , ['name ' , 'path ' ])
40
- ;
41
- $ resolver ->setDefined ('sort ' )
42
- ->setAllowedValues ('sort ' , ['asc ' , 'desc ' ])
43
- ;
44
- $ resolver ->setDefined ('statistics ' )
45
- ->setAllowedTypes ('statistics ' , 'bool ' )
46
- ->setNormalizer ('statistics ' , $ booleanNormalizer )
47
- ;
48
- $ resolver ->setDefined ('owned ' )
49
- ->setAllowedTypes ('owned ' , 'bool ' )
50
- ->setNormalizer ('owned ' , $ booleanNormalizer )
51
- ;
22
+ $ resolver = $ this ->getGroupSearchResolver ();
52
23
53
24
return $ this ->get ('groups ' , $ resolver ->resolve ($ parameters ));
54
25
}
@@ -225,4 +196,61 @@ public function projects($id, array $parameters = [])
225
196
226
197
return $ this ->get ('groups/ ' .$ this ->encodePath ($ id ).'/projects ' , $ resolver ->resolve ($ parameters ));
227
198
}
199
+
200
+ /**
201
+ * @param int $groupId
202
+ * @param array $parameters (
203
+ *
204
+ * @var int[] $skip_groups Skip the group IDs passes.
205
+ * @var bool $all_available Show all the groups you have access to.
206
+ * @var string $search Return list of authorized groups matching the search criteria.
207
+ * @var string $order_by Order groups by name or path. Default is name.
208
+ * @var string $sort Order groups in asc or desc order. Default is asc.
209
+ * @var bool $statistics Include group statistics (admins only).
210
+ * @var bool $owned Limit by groups owned by the current user.
211
+ * )
212
+ * @return mixed
213
+ */
214
+ public function subgroups ($ groupId , array $ parameters = [])
215
+ {
216
+ $ resolver = $ this ->getGroupSearchResolver ();
217
+
218
+ return $ this ->get ('groups/ ' .$ this ->encodePath ($ groupId ).'/subgroups ' , $ resolver ->resolve ($ parameters ));
219
+ }
220
+
221
+ private function getGroupSearchResolver ()
222
+ {
223
+ $ resolver = $ this ->createOptionsResolver ();
224
+ $ booleanNormalizer = function (Options $ resolver , $ value ) {
225
+ return $ value ? 'true ' : 'false ' ;
226
+ };
227
+
228
+ $ resolver ->setDefined ('skip_groups ' )
229
+ ->setAllowedTypes ('skip_groups ' , 'array ' )
230
+ ->setAllowedValues ('skip_groups ' , function (array $ value ) {
231
+ return count ($ value ) == count (array_filter ($ value , 'is_int ' ));
232
+ })
233
+ ;
234
+ $ resolver ->setDefined ('all_available ' )
235
+ ->setAllowedTypes ('all_available ' , 'bool ' )
236
+ ->setNormalizer ('all_available ' , $ booleanNormalizer )
237
+ ;
238
+ $ resolver ->setDefined ('search ' );
239
+ $ resolver ->setDefined ('order_by ' )
240
+ ->setAllowedValues ('order_by ' , ['name ' , 'path ' ])
241
+ ;
242
+ $ resolver ->setDefined ('sort ' )
243
+ ->setAllowedValues ('sort ' , ['asc ' , 'desc ' ])
244
+ ;
245
+ $ resolver ->setDefined ('statistics ' )
246
+ ->setAllowedTypes ('statistics ' , 'bool ' )
247
+ ->setNormalizer ('statistics ' , $ booleanNormalizer )
248
+ ;
249
+ $ resolver ->setDefined ('owned ' )
250
+ ->setAllowedTypes ('owned ' , 'bool ' )
251
+ ->setNormalizer ('owned ' , $ booleanNormalizer )
252
+ ;
253
+
254
+ return $ resolver ;
255
+ }
228
256
}
0 commit comments