From 6e8852837004628cbbdb20b1bd72689379276d04 Mon Sep 17 00:00:00 2001 From: Andre Klapper Date: Mon, 1 May 2023 15:55:22 +0200 Subject: [PATCH] Fix PHP 8.1 "strlen(null)" exception which blocks rendering list of Active/All projects Summary: `strlen()` was used in Phabricator to check if a generic value is a non-empty string. This behavior 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 T15312 Test Plan: Applied this change (on top of D25144, D25145, D25146, D25147, D25151, D25152, D25153 and `/project/query/active/` rendered correctly in web browser. Tested surfing various pages with and without Maniphest's `maniphest.subtypes`. If you need some example custom fields, this is an example: ``` [ { "key": "default", "name": "Task" }, { "key": "bug", "name": "Bug" }, { "key": "log", "name": "LogSpam" }, { "key": "deadline", "name": "Deadline" } ] ``` Reviewers: O1 Blessed Committers, valerio.bozzolan Reviewed By: O1 Blessed Committers, valerio.bozzolan Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno Maniphest Tasks: T15312 Differential Revision: https://we.phorge.it/D25162 --- .../PhabricatorEditEngineSubtype.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/applications/transactions/editengine/PhabricatorEditEngineSubtype.php b/src/applications/transactions/editengine/PhabricatorEditEngineSubtype.php index d177595a2b..0d1b6cf425 100644 --- a/src/applications/transactions/editengine/PhabricatorEditEngineSubtype.php +++ b/src/applications/transactions/editengine/PhabricatorEditEngineSubtype.php @@ -43,11 +43,27 @@ final class PhabricatorEditEngineSubtype return $this->icon; } + /** + * Set the text of the tag + * + * This is usually the 'name' key of your subtype map. + * Sometime this is an uppercase text like 'BUG' for a 'bug' subtype name. + * + * @param string|null $text + * @return self + */ public function setTagText($text) { $this->tagText = $text; return $this; } + /** + * Get the text of the tag + * + * @see PhabricatorEditEngineSubtype::setTagText() + * + * @return string|null + */ public function getTagText() { return $this->tagText; } @@ -89,7 +105,7 @@ final class PhabricatorEditEngineSubtype } public function hasTagView() { - return (bool)strlen($this->getTagText()); + return phutil_nonempty_string($this->getTagText()); } public function newTagView() {