From d74e9d825a2cc42f9f04eeded768c22860023097 Mon Sep 17 00:00:00 2001
From: Andre Klapper <a9016009@gmx.de>
Date: Mon, 8 May 2023 13:21:14 +0200
Subject: [PATCH] Fix PHP 8.1 "strlen(null)" exception which blocks rendering
 most applications' Configure pages

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.

Added also a small inline documentation to better leave what I find.

Closes T15358

Test Plan:
Applied this change change and way more applications' Configure pages finally rendered in web browser.
For example, `/applications/view/PhabricatorAuditApplication/` is now correctly rendered.
(However, some pages expose followup exceptions to be handled in separate tasks.)

Reviewers: O1 Blessed Committers, valerio.bozzolan

Reviewed By: O1 Blessed Committers, valerio.bozzolan

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

Maniphest Tasks: T15358

Differential Revision: https://we.phorge.it/D25197
---
 src/applications/base/PhabricatorApplication.php             | 5 +++++
 .../PhabricatorApplicationDetailViewController.php           | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/applications/base/PhabricatorApplication.php b/src/applications/base/PhabricatorApplication.php
index ba1edc26d3..9e1ea7d5ba 100644
--- a/src/applications/base/PhabricatorApplication.php
+++ b/src/applications/base/PhabricatorApplication.php
@@ -235,6 +235,11 @@ abstract class PhabricatorApplication
     return array();
   }
 
+  /**
+   * Get the Application Overview in raw Remarkup
+   *
+   * @return string|null
+   */
   public function getOverview() {
     return null;
   }
diff --git a/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php b/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php
index 8be6d73a1d..8cceeb7396 100644
--- a/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php
+++ b/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php
@@ -114,7 +114,7 @@ final class PhabricatorApplicationDetailViewController
     }
 
     $overview = $application->getOverview();
-    if (strlen($overview)) {
+    if (phutil_nonempty_string($overview)) {
       $overview = new PHUIRemarkupView($viewer, $overview);
       $properties->addSectionHeader(
         pht('Overview'), PHUIPropertyListView::ICON_SUMMARY);