Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/diffusion/conduit/DiffusionQueryCommitsConduitAPIMethod.php
12242 views
1
<?php
2
3
final class DiffusionQueryCommitsConduitAPIMethod
4
extends DiffusionConduitAPIMethod {
5
6
public function getAPIMethodName() {
7
return 'diffusion.querycommits';
8
}
9
10
public function getMethodDescription() {
11
return pht('Retrieve information about commits.');
12
}
13
14
public function getMethodStatus() {
15
return self::METHOD_STATUS_FROZEN;
16
}
17
18
public function getMethodStatusDescription() {
19
return pht(
20
'This method is frozen and will eventually be deprecated. New code '.
21
'should use "diffusion.commit.search" instead.');
22
}
23
24
protected function defineReturnType() {
25
return 'map<string, dict>';
26
}
27
28
protected function defineParamTypes() {
29
return array(
30
'ids' => 'optional list<int>',
31
'phids' => 'optional list<phid>',
32
'names' => 'optional list<string>',
33
'repositoryPHID' => 'optional phid',
34
'needMessages' => 'optional bool',
35
'bypassCache' => 'optional bool',
36
) + $this->getPagerParamTypes();
37
}
38
39
protected function execute(ConduitAPIRequest $request) {
40
$need_messages = $request->getValue('needMessages');
41
$viewer = $request->getUser();
42
43
$query = id(new DiffusionCommitQuery())
44
->setViewer($viewer)
45
->needCommitData(true);
46
47
$repository_phid = $request->getValue('repositoryPHID');
48
if ($repository_phid) {
49
$repository = id(new PhabricatorRepositoryQuery())
50
->setViewer($viewer)
51
->withPHIDs(array($repository_phid))
52
->executeOne();
53
if ($repository) {
54
$query->withRepository($repository);
55
}
56
}
57
58
$names = $request->getValue('names');
59
if ($names) {
60
$query->withIdentifiers($names);
61
}
62
63
$ids = $request->getValue('ids');
64
if ($ids) {
65
$query->withIDs($ids);
66
}
67
68
$phids = $request->getValue('phids');
69
if ($phids) {
70
$query->withPHIDs($phids);
71
}
72
73
$pager = $this->newPager($request);
74
$commits = $query->executeWithCursorPager($pager);
75
76
$map = $query->getIdentifierMap();
77
$map = mpull($map, 'getPHID');
78
79
$data = array();
80
foreach ($commits as $commit) {
81
$commit_data = $commit->getCommitData();
82
83
$uri = $commit->getURI();
84
$uri = PhabricatorEnv::getProductionURI($uri);
85
86
$dict = array(
87
'id' => $commit->getID(),
88
'phid' => $commit->getPHID(),
89
'repositoryPHID' => $commit->getRepository()->getPHID(),
90
'identifier' => $commit->getCommitIdentifier(),
91
'epoch' => $commit->getEpoch(),
92
'authorEpoch' => $commit_data->getAuthorEpoch(),
93
'uri' => $uri,
94
'isImporting' => !$commit->isImported(),
95
'summary' => $commit->getSummary(),
96
'authorPHID' => $commit->getAuthorPHID(),
97
'committerPHID' => $commit_data->getCommitDetail('committerPHID'),
98
'author' => $commit_data->getAuthorString(),
99
'authorName' => $commit_data->getAuthorDisplayName(),
100
'authorEmail' => $commit_data->getAuthorEmail(),
101
'committer' => $commit_data->getCommitterString(),
102
'committerName' => $commit_data->getCommitterDisplayName(),
103
'committerEmail' => $commit_data->getCommitterEmail(),
104
'hashes' => array(),
105
);
106
107
if ($need_messages) {
108
$dict['message'] = $commit_data->getCommitMessage();
109
}
110
111
$data[$commit->getPHID()] = $dict;
112
}
113
114
$result = array(
115
'data' => $data,
116
'identifierMap' => nonempty($map, (object)array()),
117
);
118
119
return $this->addPagerResults($result, $pager);
120
}
121
122
}
123
124