mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-05 05:02:44 +01:00
83 lines
2.3 KiB
PHP
83 lines
2.3 KiB
PHP
|
<?php
|
||
|
|
||
|
final class PhabricatorApplicationTransactionCommentRemoveController
|
||
|
extends PhabricatorApplicationTransactionController {
|
||
|
|
||
|
private $phid;
|
||
|
|
||
|
public function willProcessRequest(array $data) {
|
||
|
$this->phid = $data['phid'];
|
||
|
}
|
||
|
|
||
|
public function processRequest() {
|
||
|
$request = $this->getRequest();
|
||
|
$viewer = $request->getUser();
|
||
|
|
||
|
$xaction = id(new PhabricatorObjectQuery())
|
||
|
->withPHIDs(array($this->phid))
|
||
|
->setViewer($viewer)
|
||
|
->executeOne();
|
||
|
if (!$xaction) {
|
||
|
return new Aphront404Response();
|
||
|
}
|
||
|
|
||
|
if (!$xaction->getComment()) {
|
||
|
return new Aphront404Response();
|
||
|
}
|
||
|
|
||
|
if ($xaction->getComment()->getIsRemoved()) {
|
||
|
// You can't remove an already-removed comment.
|
||
|
return new Aphront400Response();
|
||
|
}
|
||
|
|
||
|
$obj_phid = $xaction->getObjectPHID();
|
||
|
$obj_handle = id(new PhabricatorHandleQuery())
|
||
|
->setViewer($viewer)
|
||
|
->withPHIDs(array($obj_phid))
|
||
|
->executeOne();
|
||
|
|
||
|
if ($request->isDialogFormPost()) {
|
||
|
$comment = $xaction->getApplicationTransactionCommentObject()
|
||
|
->setContent('')
|
||
|
->setIsRemoved(true);
|
||
|
|
||
|
$editor = id(new PhabricatorApplicationTransactionCommentEditor())
|
||
|
->setActor($viewer)
|
||
|
->setContentSource(PhabricatorContentSource::newFromRequest($request))
|
||
|
->applyEdit($xaction, $comment);
|
||
|
|
||
|
if ($request->isAjax()) {
|
||
|
return id(new PhabricatorApplicationTransactionResponse())
|
||
|
->setViewer($viewer)
|
||
|
->setTransactions(array($xaction))
|
||
|
->setAnchorOffset($request->getStr('anchor'));
|
||
|
} else {
|
||
|
return id(new AphrontReloadResponse())->setURI($obj_handle->getURI());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$form = id(new AphrontFormView())
|
||
|
->setUser($viewer);
|
||
|
|
||
|
$dialog = $this->newDialog()
|
||
|
->setTitle(pht('Remove Comment'));
|
||
|
|
||
|
$dialog
|
||
|
->addHiddenInput('anchor', $request->getStr('anchor'))
|
||
|
->appendParagraph(
|
||
|
pht(
|
||
|
"Removing a comment prevents anyone (including you) from reading ".
|
||
|
"it. Removing a comment also hides the comment's edit history ".
|
||
|
"and prevents it from being edited."))
|
||
|
->appendParagraph(
|
||
|
pht('Really remove this comment?'));
|
||
|
|
||
|
$dialog
|
||
|
->addSubmitButton(pht('Remove Comment'))
|
||
|
->addCancelButton($obj_handle->getURI());
|
||
|
|
||
|
return $dialog;
|
||
|
}
|
||
|
|
||
|
}
|