Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/differential/conduit/DifferentialGetRevisionConduitAPIMethod.php
12256 views
1
<?php
2
3
final class DifferentialGetRevisionConduitAPIMethod
4
extends DifferentialConduitAPIMethod {
5
6
public function getAPIMethodName() {
7
return 'differential.getrevision';
8
}
9
10
public function getMethodStatus() {
11
return self::METHOD_STATUS_DEPRECATED;
12
}
13
14
public function getMethodStatusDescription() {
15
return pht("Replaced by '%s'.", 'differential.query');
16
}
17
18
public function getMethodDescription() {
19
return pht('Load the content of a revision from Differential.');
20
}
21
22
protected function defineParamTypes() {
23
return array(
24
'revision_id' => 'required id',
25
);
26
}
27
28
protected function defineReturnType() {
29
return 'nonempty dict';
30
}
31
32
protected function defineErrorTypes() {
33
return array(
34
'ERR_BAD_REVISION' => pht('No such revision exists.'),
35
);
36
}
37
38
protected function execute(ConduitAPIRequest $request) {
39
$diff = null;
40
41
$revision_id = $request->getValue('revision_id');
42
$revision = id(new DifferentialRevisionQuery())
43
->withIDs(array($revision_id))
44
->setViewer($request->getUser())
45
->needReviewers(true)
46
->needCommitPHIDs(true)
47
->executeOne();
48
49
if (!$revision) {
50
throw new ConduitException('ERR_BAD_REVISION');
51
}
52
53
$reviewer_phids = $revision->getReviewerPHIDs();
54
55
$diffs = id(new DifferentialDiffQuery())
56
->setViewer($request->getUser())
57
->withRevisionIDs(array($revision_id))
58
->needChangesets(true)
59
->execute();
60
$diff_dicts = mpull($diffs, 'getDiffDict');
61
62
$commit_dicts = array();
63
$commit_phids = $revision->getCommitPHIDs();
64
$handles = id(new PhabricatorHandleQuery())
65
->setViewer($request->getUser())
66
->withPHIDs($commit_phids)
67
->execute();
68
69
foreach ($commit_phids as $commit_phid) {
70
$commit_dicts[] = array(
71
'fullname' => $handles[$commit_phid]->getFullName(),
72
'dateCommitted' => $handles[$commit_phid]->getTimestamp(),
73
);
74
}
75
76
$field_data = $this->loadCustomFieldsForRevisions(
77
$request->getUser(),
78
array($revision));
79
80
$dict = array(
81
'id' => $revision->getID(),
82
'phid' => $revision->getPHID(),
83
'authorPHID' => $revision->getAuthorPHID(),
84
'uri' => PhabricatorEnv::getURI('/D'.$revision->getID()),
85
'title' => $revision->getTitle(),
86
'status' => $revision->getLegacyRevisionStatus(),
87
'statusName' => $revision->getStatusDisplayName(),
88
'summary' => $revision->getSummary(),
89
'testPlan' => $revision->getTestPlan(),
90
'lineCount' => $revision->getLineCount(),
91
'reviewerPHIDs' => $reviewer_phids,
92
'diffs' => $diff_dicts,
93
'commits' => $commit_dicts,
94
'auxiliary' => idx($field_data, $revision->getPHID(), array()),
95
);
96
97
return $dict;
98
}
99
100
}
101
102