Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/differential/conduit/DifferentialCreateRevisionConduitAPIMethod.php
12256 views
1
<?php
2
3
final class DifferentialCreateRevisionConduitAPIMethod
4
extends DifferentialConduitAPIMethod {
5
6
public function getAPIMethodName() {
7
return 'differential.createrevision';
8
}
9
10
public function getMethodDescription() {
11
return pht('Create a new Differential revision.');
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 "differential.revision.edit" instead.');
22
}
23
24
protected function defineParamTypes() {
25
return array(
26
// TODO: Arcanist passes this; prevent fatals after D4191 until Conduit
27
// version 7 or newer.
28
'user' => 'ignored',
29
'diffid' => 'required diffid',
30
'fields' => 'required dict',
31
);
32
}
33
34
protected function defineReturnType() {
35
return 'nonempty dict';
36
}
37
38
protected function defineErrorTypes() {
39
return array(
40
'ERR_BAD_DIFF' => pht('Bad diff ID.'),
41
);
42
}
43
44
protected function execute(ConduitAPIRequest $request) {
45
$viewer = $request->getUser();
46
47
$diff = id(new DifferentialDiffQuery())
48
->setViewer($viewer)
49
->withIDs(array($request->getValue('diffid')))
50
->executeOne();
51
if (!$diff) {
52
throw new ConduitException('ERR_BAD_DIFF');
53
}
54
55
$revision = DifferentialRevision::initializeNewRevision($viewer);
56
$revision->attachReviewers(array());
57
58
$result = $this->applyFieldEdit(
59
$request,
60
$revision,
61
$diff,
62
$request->getValue('fields', array()),
63
$message = null);
64
65
$revision_id = $result['object']['id'];
66
67
return array(
68
'revisionid' => $revision_id,
69
'uri' => PhabricatorEnv::getURI('/D'.$revision_id),
70
);
71
}
72
73
}
74
75