Differential D17053 Diff 41022 src/applications/differential/controller/DifferentialRevisionEditProController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/differential/controller/DifferentialRevisionEditProController.php
| <?php | <?php | ||||
| final class DifferentialRevisionEditProController | final class DifferentialRevisionEditProController | ||||
| extends DifferentialController { | extends DifferentialController { | ||||
| public function handleRequest(AphrontRequest $request) { | public function handleRequest(AphrontRequest $request) { | ||||
| return id(new DifferentialRevisionEditEngine()) | $viewer = $this->getViewer(); | ||||
| ->setController($this) | |||||
| ->buildResponse(); | // If we have a Diff ID, this is an "/attach/123/to/456/" action. The | ||||
| // user just created a diff and is trying to use it to create or update | |||||
| // a revision. | |||||
| $diff_id = $request->getURIData('diffID'); | |||||
| if ($diff_id) { | |||||
| $diff = id(new DifferentialDiffQuery()) | |||||
| ->setViewer($viewer) | |||||
| ->withIDs(array($diff_id)) | |||||
| ->executeOne(); | |||||
| if (!$diff) { | |||||
| return new Aphront404Response(); | |||||
| } | |||||
| if ($diff->getRevisionID()) { | |||||
| $revision = $diff->getRevision(); | |||||
| return $this->newDialog() | |||||
| ->setTitle(pht('Diff Already Attached')) | |||||
| ->appendParagraph( | |||||
| pht( | |||||
| 'This diff is already attached to a revision.')) | |||||
| ->addCancelButton($revision->getURI(), pht('Continue')); | |||||
| } | |||||
| } else { | |||||
| $diff = null; | |||||
| } | |||||
| $revision_id = $request->getURIData('id'); | |||||
| if (!$diff && !$revision_id) { | |||||
| return $this->newDialog() | |||||
| ->setTitle(pht('Diff Required')) | |||||
| ->appendParagraph( | |||||
| pht( | |||||
| 'You can not create a revision without a diff.')) | |||||
| ->addCancelButton($this->getApplicationURI()); | |||||
| } | |||||
| $engine = id(new DifferentialRevisionEditEngine()) | |||||
| ->setController($this); | |||||
| if ($diff) { | |||||
| $engine->setDiff($diff); | |||||
| } | |||||
| return $engine->buildResponse(); | |||||
| } | } | ||||
| } | } | ||||