@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 PHP 8.1 exceptions which block adding an embedded File preview as a Comment

Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
Receiving null is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.

Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.

Closes T15389

Test Plan:
Applied these three changes; afterwards writing `{F1234}` in the Task Comment text field finally rendered the image preview in the preview area, plus I could successfully add the Comment.

Additional cute tests:

```
Test alt:

{F1234,alt=0}
{F1234,alt=null}
{F1234,alt=123}
{F1234,alt=0.1}
{F1234,alt=[]}

Test width:

{F1234,width=0}
{F1234,width=10}
{F1234,width=10.1}
{F1234,width=10%}
{F1234,width=49.99%}
{F1234,width=100%}

Test height:

{F1234,height=0}
{F1234,height=10}
{F1234,height=10.1}
{F1234,height=10%}
{F1234,height=49.99%}
{F1234,height=100%}

Test mix width/height:

{F1234,height=0,width=0}
{F1234,height=10,width=15}
{F1234,height=10.1,width=15}
{F1234,height=10%,width=15%}
{F1234,height=49.99%,width=15%}
{F1234,height=100%,width=15%}
```

If you have no nuclear implosion and if dimensions are somehow respected and the alt text works, well done! Test passed.

Reviewers: O1 Blessed Committers, valerio.bozzolan

Reviewed By: O1 Blessed Committers, valerio.bozzolan

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

Maniphest Tasks: T15389

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

+6 -5
+6 -5
src/applications/files/markup/PhabricatorEmbedFileRemarkupRule.php
··· 197 197 $alt = $options['alt']; 198 198 } 199 199 200 - if (!strlen($alt)) { 200 + if (!phutil_nonempty_string($alt)) { 201 201 $alt = $file->getAltText(); 202 202 } 203 203 ··· 346 346 } 347 347 348 348 private function parseDimension($string) { 349 - $string = trim($string); 350 - 351 - if (preg_match('/^(?:\d*\\.)?\d+%?$/', $string)) { 352 - return $string; 349 + if ($string !== null) { 350 + $string = trim($string); 351 + if (preg_match('/^(?:\d*\\.)?\d+%?$/', $string)) { 352 + return $string; 353 + } 353 354 } 354 355 355 356 return null;