1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-26 16:52:41 +01:00

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
This commit is contained in:
Andre Klapper 2023-06-19 14:10:29 +02:00
parent 1c59b65421
commit 7c1487e4dc

View file

@ -102,6 +102,7 @@ final class PholioInlineController extends PholioController {
->addCancelButton($mock_uri, pht('Close')); ->addCancelButton($mock_uri, pht('Close'));
} }
$error = null;
if ($request->isFormPost()) { if ($request->isFormPost()) {
$v_content = $request->getStr('content'); $v_content = $request->getStr('content');
@ -112,10 +113,14 @@ final class PholioInlineController extends PholioController {
} else if ($inline->getID()) { } else if ($inline->getID()) {
$inline->delete(); $inline->delete();
$dictionary = array(); $dictionary = array();
} else {
$error = pht('Comment cannot be empty.');
} }
if ($error === null) {
return id(new AphrontAjaxResponse())->setContent($dictionary); return id(new AphrontAjaxResponse())->setContent($dictionary);
} }
}
switch ($mode) { switch ($mode) {
case 'edit': case 'edit':
@ -151,6 +156,7 @@ final class PholioInlineController extends PholioController {
->setUser($viewer) ->setUser($viewer)
->setName('content') ->setName('content')
->setLabel(pht('Comment')) ->setLabel(pht('Comment'))
->setError($error)
->setValue($v_content)); ->setValue($v_content));
return $this->newDialog() return $this->newDialog()