Remove product literal strings in "pht()", part 18
[phabricator.git] / src / applications / ponder / controller / PonderAnswerCommentController.php
blob3d3e3a139269db7ceb4c441bbd12028406e4c90e
1 <?php
3 final class PonderAnswerCommentController extends PonderController {
5 public function handleRequest(AphrontRequest $request) {
6 $viewer = $request->getViewer();
7 $id = $request->getURIData('id');
9 if (!$request->isFormPost()) {
10 return new Aphront400Response();
13 $answer = id(new PonderAnswerQuery())
14 ->setViewer($viewer)
15 ->withIDs(array($id))
16 ->executeOne();
17 if (!$answer) {
18 return new Aphront404Response();
21 $is_preview = $request->isPreviewRequest();
23 $qid = $answer->getQuestion()->getID();
24 $aid = $answer->getID();
26 // TODO, this behaves badly when redirecting to the answer
27 $view_uri = "/Q{$qid}";
29 $xactions = array();
30 $xactions[] = id(new PonderAnswerTransaction())
31 ->setTransactionType(PhabricatorTransactions::TYPE_COMMENT)
32 ->attachComment(
33 id(new PonderAnswerTransactionComment())
34 ->setContent($request->getStr('comment')));
36 $editor = id(new PonderAnswerEditor())
37 ->setActor($viewer)
38 ->setContinueOnNoEffect($request->isContinueRequest())
39 ->setContentSourceFromRequest($request)
40 ->setIsPreview($is_preview);
42 try {
43 $xactions = $editor->applyTransactions($answer, $xactions);
44 } catch (PhabricatorApplicationTransactionNoEffectException $ex) {
45 return id(new PhabricatorApplicationTransactionNoEffectResponse())
46 ->setCancelURI($view_uri)
47 ->setException($ex);
51 if ($request->isAjax() && $is_preview) {
52 return id(new PhabricatorApplicationTransactionResponse())
53 ->setObject($answer)
54 ->setViewer($viewer)
55 ->setTransactions($xactions)
56 ->setIsPreview($is_preview);
57 } else {
58 return id(new AphrontRedirectResponse())
59 ->setURI($view_uri);