@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.)
hq.recaptime.dev/wiki/Phorge
phorge
phabricator
1<?php
2
3final class HarbormasterQueryBuildsConduitAPIMethod
4 extends HarbormasterConduitAPIMethod {
5
6 public function getAPIMethodName() {
7 return 'harbormaster.querybuilds';
8 }
9
10 public function getMethodDescription() {
11 return pht('Query Harbormaster builds.');
12 }
13
14 public function getMethodStatus() {
15 return self::METHOD_STATUS_DEPRECATED;
16 }
17
18 public function getMethodStatusDescription() {
19 return pht(
20 'This method has been deprecated since %s in favor of %s.',
21 '07/2016',
22 'harbormaster.build.search');
23 }
24
25 protected function defineParamTypes() {
26 return array(
27 'ids' => 'optional list<id>',
28 'phids' => 'optional list<phid>',
29 'buildStatuses' => 'optional list<string>',
30 'buildablePHIDs' => 'optional list<phid>',
31 'buildPlanPHIDs' => 'optional list<phid>',
32 ) + self::getPagerParamTypes();
33 }
34
35 protected function defineReturnType() {
36 return 'wild';
37 }
38
39 protected function execute(ConduitAPIRequest $request) {
40 $viewer = $request->getUser();
41 $call = new ConduitCall(
42 'harbormaster.build.search',
43 array_filter(array(
44 'constraints' => array_filter(array(
45 'ids' => $request->getValue('ids'),
46 'phids' => $request->getValue('phids'),
47 'statuses' => $request->getValue('buildStatuses'),
48 'buildables' => $request->getValue('buildablePHIDs'),
49 'plans' => $request->getValue('buildPlanPHIDs'),
50 )),
51 'attachments' => array(
52 'querybuilds' => true,
53 ),
54 'limit' => $request->getValue('limit'),
55 'before' => $request->getValue('before'),
56 'after' => $request->getValue('after'),
57 )));
58
59 $subsumption = $call->setUser($viewer)
60 ->execute();
61
62 $data = array();
63 foreach ($subsumption['data'] as $build_data) {
64 $querybuilds = idxv(
65 $build_data,
66 array('attachments', 'querybuilds'),
67 array());
68 $fields = idx($build_data, 'fields', array());
69 unset($build_data['fields']);
70 unset($build_data['attachments']);
71
72 // To retain backward compatibility, remove newer keys from the
73 // result array.
74 $fields['buildStatus'] = array_select_keys(
75 $fields['buildStatus'],
76 array(
77 'value',
78 'name',
79 ));
80
81 $data[] = array_mergev(array($build_data, $querybuilds, $fields));
82 }
83
84 $subsumption['data'] = $data;
85
86 return $subsumption;
87 }
88
89}