@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
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix Pholio RuntimeException: Undefined variable $dictionary (when adding an empty Inline Comment)

Summary:
Trying to create an empty inline comment in a Pholio mock, `$dictionary` does not get set as both `strlen($v_content)` and `$inline->getID()` are not true.

Thus show a more explanatory error message ('Comment cannot be empty.') to users instead of exposing internal variable names.

```
EXCEPTION: (RuntimeException) Undefined variable $dictionary at [<arcanist>/src/error/PhutilErrorHandler.php:261]
arcanist(head=master, ref.master=b325304b6e52), phorge(head=master, ref.master=980293b707a0)
#0 <#2> PhutilErrorHandler::handleError(integer, string, string, integer) called at [<phorge>/src/applications/pholio/controller/PholioInlineController.php:117]
```

Closes T15456

Test Plan: After applying this change, try to add an empty Inline Comment in a Pholio mock. See that the error message is now "Comment cannot be empty." instead of "Undefined variable $dictionary".

Reviewers: O1 Blessed Committers, valerio.bozzolan

Reviewed By: O1 Blessed Committers, valerio.bozzolan

Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno

Maniphest Tasks: T15456

Differential Revision: https://we.phorge.it/D25281

+7 -1
+7 -1
src/applications/pholio/controller/PholioInlineController.php
··· 102 102 ->addCancelButton($mock_uri, pht('Close')); 103 103 } 104 104 105 + $error = null; 105 106 if ($request->isFormPost()) { 106 107 $v_content = $request->getStr('content'); 107 108 ··· 112 113 } else if ($inline->getID()) { 113 114 $inline->delete(); 114 115 $dictionary = array(); 116 + } else { 117 + $error = pht('Comment cannot be empty.'); 115 118 } 116 119 117 - return id(new AphrontAjaxResponse())->setContent($dictionary); 120 + if ($error === null) { 121 + return id(new AphrontAjaxResponse())->setContent($dictionary); 122 + } 118 123 } 119 124 120 125 switch ($mode) { ··· 151 156 ->setUser($viewer) 152 157 ->setName('content') 153 158 ->setLabel(pht('Comment')) 159 + ->setError($error) 154 160 ->setValue($v_content)); 155 161 156 162 return $this->newDialog()