@@ -4,22 +4,46 @@ class Issues extends AbstractApi
44{
55 /**
66 * @param int $project_id
7- * @param int $page
8- * @param int $per_page
9- * @param array $params
7+ * @param array $parameters (
8+ *
9+ * @var string $state Return all issues or just those that are opened or closed.
10+ * @var string $labels Comma-separated list of label names, issues must have all labels to be returned.
11+ * No+Label lists all issues with no labels.
12+ * @var string $milestone The milestone title.
13+ * @var int[] $iids Return only the issues having the given iid.
14+ * @var string $order_by Return requests ordered by created_at or updated_at fields. Default is created_at.
15+ * @var string $sort Return requests sorted in asc or desc order. Default is desc.
16+ * @var string $search Search issues against their title and description.
17+ * )
18+ *
1019 * @return mixed
1120 */
12- public function all ($ project_id = null , $ page = 1 , $ per_page = self :: PER_PAGE , array $ params = array () )
21+ public function all ($ project_id = null , array $ parameters = [] )
1322 {
14- $ path = $ project_id === null ? 'issues ' : $ this ->getProjectPath ($ project_id , 'issues ' );
23+ $ resolver = $ this ->createOptionsResolver ();
24+
25+ $ resolver ->setDefined ('state ' )
26+ ->setAllowedValues ('state ' , ['opened ' , 'closed ' ])
27+ ;
28+ $ resolver ->setDefined ('labels ' );
29+ $ resolver ->setDefined ('milestone ' );
30+ $ resolver ->setDefined ('iids ' )
31+ ->setAllowedTypes ('iids ' , 'array ' )
32+ ->setAllowedValues ('iids ' , function (array $ value ) {
33+ return count ($ value ) == count (array_filter ($ value , 'is_int ' ));
34+ })
35+ ;
36+ $ resolver ->setDefined ('order_by ' )
37+ ->setAllowedValues ('order_by ' , ['created_at ' , 'updated_at ' ])
38+ ;
39+ $ resolver ->setDefined ('sort ' )
40+ ->setAllowedValues ('sort ' , ['asc ' , 'desc ' ])
41+ ;
42+ $ resolver ->setDefined ('search ' );
1543
16- $ params = array_intersect_key ($ params , array ('labels ' => '' , 'state ' => '' , 'sort ' => '' , 'order_by ' => '' , 'milestone ' => '' ));
17- $ params = array_merge (array (
18- 'page ' => $ page ,
19- 'per_page ' => $ per_page
20- ), $ params );
44+ $ path = $ project_id === null ? 'issues ' : $ this ->getProjectPath ($ project_id , 'issues ' );
2145
22- return $ this ->get ($ path , $ params );
46+ return $ this ->get ($ path , $ resolver -> resolve ( $ parameters ) );
2347 }
2448
2549 /**
0 commit comments