Path: blob/master/src/applications/differential/conduit/DifferentialUpdateRevisionConduitAPIMethod.php
12256 views
<?php12final class DifferentialUpdateRevisionConduitAPIMethod3extends DifferentialConduitAPIMethod {45public function getAPIMethodName() {6return 'differential.updaterevision';7}89public function getMethodDescription() {10return pht('Update a Differential revision.');11}1213public function getMethodStatus() {14return self::METHOD_STATUS_FROZEN;15}1617public function getMethodStatusDescription() {18return pht(19'This method is frozen and will eventually be deprecated. New code '.20'should use "differential.revision.edit" instead.');21}2223protected function defineParamTypes() {24return array(25'id' => 'required revisionid',26'diffid' => 'required diffid',27'fields' => 'required dict',28'message' => 'required string',29);30}3132protected function defineReturnType() {33return 'nonempty dict';34}3536protected function defineErrorTypes() {37return array(38'ERR_BAD_DIFF' => pht('Bad diff ID.'),39'ERR_BAD_REVISION' => pht('Bad revision ID.'),40'ERR_WRONG_USER' => pht('You are not the author of this revision.'),41'ERR_CLOSED' => pht('This revision has already been closed.'),42);43}4445protected function execute(ConduitAPIRequest $request) {46$viewer = $request->getUser();4748$diff = id(new DifferentialDiffQuery())49->setViewer($viewer)50->withIDs(array($request->getValue('diffid')))51->executeOne();52if (!$diff) {53throw new ConduitException('ERR_BAD_DIFF');54}5556$revision = id(new DifferentialRevisionQuery())57->setViewer($request->getUser())58->withIDs(array($request->getValue('id')))59->needReviewers(true)60->needActiveDiffs(true)61->requireCapabilities(62array(63PhabricatorPolicyCapability::CAN_VIEW,64PhabricatorPolicyCapability::CAN_EDIT,65))66->executeOne();67if (!$revision) {68throw new ConduitException('ERR_BAD_REVISION');69}7071if ($revision->isPublished()) {72throw new ConduitException('ERR_CLOSED');73}7475$this->applyFieldEdit(76$request,77$revision,78$diff,79$request->getValue('fields', array()),80$request->getValue('message'));8182return array(83'revisionid' => $revision->getID(),84'uri' => PhabricatorEnv::getURI('/D'.$revision->getID()),85);86}8788}899091