diff --git a/src/applications/differential/controller/DifferentialInlineCommentEditController.php b/src/applications/differential/controller/DifferentialInlineCommentEditController.php --- a/src/applications/differential/controller/DifferentialInlineCommentEditController.php +++ b/src/applications/differential/controller/DifferentialInlineCommentEditController.php @@ -3,6 +3,10 @@ final class DifferentialInlineCommentEditController extends PhabricatorInlineCommentController { + protected function newInlineCommentQuery() { + return new DifferentialDiffInlineCommentQuery(); + } + private function getRevisionID() { return $this->getRequest()->getURIData('id'); } @@ -58,44 +62,10 @@ ->setChangesetID($changeset_id); } - protected function loadComment($id) { - return id(new DifferentialInlineCommentQuery()) - ->setViewer($this->getViewer()) - ->withIDs(array($id)) - ->withDeletedDrafts(true) - ->needHidden(true) - ->executeOne(); - } - - protected function loadCommentByPHID($phid) { - return id(new DifferentialInlineCommentQuery()) - ->setViewer($this->getViewer()) - ->withPHIDs(array($phid)) - ->withDeletedDrafts(true) - ->needHidden(true) - ->executeOne(); - } - - protected function loadCommentForEdit($id) { - $viewer = $this->getViewer(); - - $inline = $this->loadComment($id); - if (!$inline) { - throw new Exception( - pht('Unable to load inline "%s".', $id)); - } - - if (!$this->canEditInlineComment($viewer, $inline)) { - throw new Exception(pht('That comment is not editable!')); - } - - return $inline; - } - protected function loadCommentForDone($id) { $viewer = $this->getViewer(); - $inline = $this->loadComment($id); + $inline = $this->loadCommentByID($id); if (!$inline) { throw new Exception(pht('Unable to load inline "%d".', $id)); } @@ -144,7 +114,7 @@ return $inline; } - private function canEditInlineComment( + protected function canEditInlineComment( PhabricatorUser $viewer, DifferentialInlineComment $inline) { diff --git a/src/applications/diffusion/controller/DiffusionInlineCommentController.php b/src/applications/diffusion/controller/DiffusionInlineCommentController.php --- a/src/applications/diffusion/controller/DiffusionInlineCommentController.php +++ b/src/applications/diffusion/controller/DiffusionInlineCommentController.php @@ -3,6 +3,10 @@ final class DiffusionInlineCommentController extends PhabricatorInlineCommentController { + protected function newInlineCommentQuery() { + return new DiffusionDiffInlineCommentQuery(); + } + private function getCommitPHID() { return $this->getRequest()->getURIData('phid'); } @@ -41,48 +45,10 @@ ->setPathID($path_id); } - protected function loadComment($id) { - $viewer = $this->getViewer(); - $inline = id(new DiffusionDiffInlineCommentQuery()) - ->setViewer($viewer) - ->withIDs(array($id)) - ->executeOne(); - - if ($inline) { - $inline = $inline->newInlineCommentObject(); - } - - return $inline; - } - - protected function loadCommentByPHID($phid) { - $viewer = $this->getViewer(); - $inline = id(new DiffusionDiffInlineCommentQuery()) - ->setViewer($viewer) - ->withPHIDs(array($phid)) - ->executeOne(); - - if ($inline) { - $inline = $inline->newInlineCommentObject(); - } - - return $inline; - } - - protected function loadCommentForEdit($id) { - $viewer = $this->getViewer(); - - $inline = $this->loadComment($id); - if (!$this->canEditInlineComment($viewer, $inline)) { - throw new Exception(pht('That comment is not editable!')); - } - return $inline; - } - protected function loadCommentForDone($id) { $viewer = $this->getViewer(); - $inline = $this->loadComment($id); + $inline = $this->loadCommentByID($id); if (!$inline) { throw new Exception(pht('Failed to load comment "%d".', $id)); } @@ -115,7 +81,7 @@ return $inline; } - private function canEditInlineComment( + protected function canEditInlineComment( PhabricatorUser $viewer, PhabricatorAuditInlineComment $inline) { diff --git a/src/infrastructure/diff/PhabricatorInlineCommentController.php b/src/infrastructure/diff/PhabricatorInlineCommentController.php --- a/src/infrastructure/diff/PhabricatorInlineCommentController.php +++ b/src/infrastructure/diff/PhabricatorInlineCommentController.php @@ -4,10 +4,8 @@ extends PhabricatorController { abstract protected function createComment(); - abstract protected function loadComment($id); - abstract protected function loadCommentForEdit($id); + abstract protected function newInlineCommentQuery(); abstract protected function loadCommentForDone($id); - abstract protected function loadCommentByPHID($phid); abstract protected function loadObjectOwnerPHID( PhabricatorInlineComment $inline); abstract protected function deleteComment( @@ -172,7 +170,7 @@ $is_delete = ($op == 'delete' || $op == 'refdelete'); - $inline = $this->loadCommentForEdit($this->getCommentID()); + $inline = $this->loadCommentByIDForEdit($this->getCommentID()); if ($is_delete) { $this->deleteComment($inline); @@ -182,7 +180,7 @@ return $this->buildEmptyResponse(); case 'edit': - $inline = $this->loadCommentForEdit($this->getCommentID()); + $inline = $this->loadCommentByIDForEdit($this->getCommentID()); $text = $this->getCommentText(); if ($request->isFormPost()) { @@ -228,7 +226,7 @@ return $this->newInlineResponse($inline, $view); case 'cancel': - $inline = $this->loadCommentForEdit($this->getCommentID()); + $inline = $this->loadCommentByIDForEdit($this->getCommentID()); $inline->setIsEditing(false); @@ -251,7 +249,7 @@ return $this->buildEmptyResponse(); case 'draft': - $inline = $this->loadCommentForEdit($this->getCommentID()); + $inline = $this->loadCommentByIDForEdit($this->getCommentID()); $versioned_draft = PhabricatorVersionedDraft::loadOrCreateDraft( $inline->getPHID(), @@ -442,5 +440,58 @@ $viewer->getPHID()); } + final protected function loadCommentByID($id) { + $query = $this->newInlineCommentQuery() + ->withIDs(array($id)); + + return $this->loadCommentByQuery($query); + } + + final protected function loadCommentByPHID($phid) { + $query = $this->newInlineCommentQuery() + ->withPHIDs(array($phid)); + + return $this->loadCommentByQuery($query); + } + + final protected function loadCommentByIDForEdit($id) { + $viewer = $this->getViewer(); + + $query = $this->newInlineCommentQuery() + ->withIDs(array($id)); + + $inline = $this->loadCommentByQuery($query); + + if (!$inline) { + throw new Exception( + pht( + 'Unable to load inline "%s".', + $id)); + } + + if (!$this->canEditInlineComment($viewer, $inline)) { + throw new Exception( + pht( + 'Inline comment "%s" is not editable.', + $id)); + } + + return $inline; + } + + private function loadCommentByQuery( + PhabricatorDiffInlineCommentQuery $query) { + $viewer = $this->getViewer(); + + $inline = $query + ->setViewer($viewer) + ->executeOne(); + + if ($inline) { + $inline = $inline->newInlineCommentObject(); + } + + return $inline; + } }