1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-15 19:32:40 +01:00
phorge-phorge/src/applications/differential/controller/DifferentialInlineCommentEditController.php

71 lines
1.7 KiB
PHP
Raw Normal View History

2011-02-02 01:42:36 +01:00
<?php
final class DifferentialInlineCommentEditController
extends PhabricatorInlineCommentController {
2011-02-02 01:42:36 +01:00
private $revisionID;
public function willProcessRequest(array $data) {
$this->revisionID = $data['id'];
}
protected function createComment() {
2011-02-02 01:42:36 +01:00
// Verify revision and changeset correspond to actual objects.
$revision_id = $this->revisionID;
$changeset_id = $this->getChangesetID();
2011-02-02 01:42:36 +01:00
if (!id(new DifferentialRevision())->load($revision_id)) {
throw new Exception("Invalid revision ID!");
2011-02-02 01:42:36 +01:00
}
2011-02-02 19:10:25 +01:00
if (!id(new DifferentialChangeset())->load($changeset_id)) {
throw new Exception("Invalid changeset ID!");
}
return id(new DifferentialInlineComment())
->setRevisionID($revision_id)
->setChangesetID($changeset_id);
}
protected function loadComment($id) {
return id(new DifferentialInlineCommentQuery())
->withIDs(array($id))
->executeOne();
}
protected function loadCommentForEdit($id) {
$request = $this->getRequest();
$user = $request->getUser();
$inline = $this->loadComment($id);
if (!$this->canEditInlineComment($user, $inline)) {
throw new Exception("That comment is not editable!");
}
return $inline;
}
private function canEditInlineComment(
PhabricatorUser $user,
DifferentialInlineComment $inline) {
// Only the author may edit a comment.
if ($inline->getAuthorPHID() != $user->getPHID()) {
return false;
}
// Saved comments may not be edited.
if ($inline->getCommentID()) {
return false;
}
// Inline must be attached to the active revision.
if ($inline->getRevisionID() != $this->revisionID) {
return false;
}
return true;
}
2011-02-02 01:42:36 +01:00
}