@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at recaptime-dev/main 59 lines 1.7 kB view raw
1<?php 2 3final class PonderQuestionCommentController extends PonderController { 4 5 public function handleRequest(AphrontRequest $request) { 6 $viewer = $request->getViewer(); 7 $id = $request->getURIData('id'); 8 9 if (!$request->isFormPost()) { 10 return new Aphront400Response(); 11 } 12 13 $question = id(new PonderQuestionQuery()) 14 ->setViewer($viewer) 15 ->withIDs(array($id)) 16 ->executeOne(); 17 if (!$question) { 18 return new Aphront404Response(); 19 } 20 21 $is_preview = $request->isPreviewRequest(); 22 23 $qid = $question->getID(); 24 $view_uri = "/Q{$qid}"; 25 26 $xactions = array(); 27 $xactions[] = id(new PonderQuestionTransaction()) 28 ->setTransactionType(PhabricatorTransactions::TYPE_COMMENT) 29 ->attachComment( 30 id(new PonderQuestionTransactionComment()) 31 ->setContent($request->getStr('comment'))); 32 33 $editor = id(new PonderQuestionEditor()) 34 ->setActor($viewer) 35 ->setContinueOnNoEffect($request->isContinueRequest()) 36 ->setContentSourceFromRequest($request) 37 ->setIsPreview($is_preview); 38 39 try { 40 $xactions = $editor->applyTransactions($question, $xactions); 41 } catch (PhabricatorApplicationTransactionNoEffectException $ex) { 42 return id(new PhabricatorApplicationTransactionNoEffectResponse()) 43 ->setCancelURI($view_uri) 44 ->setException($ex); 45 } 46 47 if ($request->isAjax() && $is_preview) { 48 return id(new PhabricatorApplicationTransactionResponse()) 49 ->setObject($question) 50 ->setViewer($viewer) 51 ->setTransactions($xactions) 52 ->setIsPreview($is_preview); 53 } else { 54 return id(new AphrontRedirectResponse()) 55 ->setURI($view_uri); 56 } 57 } 58 59}