From cb95e0b707a2e90ee30243fbbff29e669a565d2f Mon Sep 17 00:00:00 2001 From: "Eloy Lafuente (stronk7)" Date: Tue, 8 Mar 2022 12:59:02 +0100 Subject: [PATCH] MDL-73586 mod_wiki: Removed php init param for php80 and up For PHP 8 and up, the 'mbstring.func_overload' doesn't exist anymore, so skip any check/condition based on it. The patch has been done that way, so it's easier to remove the whole block of code once PHP 8.0 becomes our min supported PHP version. The change is self-coveres (changes the external and its own tests). --- mod/wiki/classes/external.php | 12 ++++++++---- mod/wiki/tests/externallib_test.php | 12 ++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/mod/wiki/classes/external.php b/mod/wiki/classes/external.php index 4a147559517..b51d41bcaf2 100644 --- a/mod/wiki/classes/external.php +++ b/mod/wiki/classes/external.php @@ -512,10 +512,14 @@ class mod_wiki_external extends external_api { $retpage['contentformat'] = $contentformat; } else { // Return the size of the content. - if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) { - $retpage['contentsize'] = mb_strlen($cachedcontent, '8bit'); - } else { - $retpage['contentsize'] = strlen($cachedcontent); + $retpage['contentsize'] = strlen($cachedcontent); + // TODO: Remove this block of code once PHP 8.0 is the min version supported. + // For PHP < 8.0, if strlen() was overloaded, calculate + // the bytes using mb_strlen(..., '8bit'). + if (PHP_VERSION_ID < 80000) { + if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) { + $retpage['contentsize'] = mb_strlen($cachedcontent, '8bit'); + } } } diff --git a/mod/wiki/tests/externallib_test.php b/mod/wiki/tests/externallib_test.php index 324f8d69d79..7e762a3fc0f 100644 --- a/mod/wiki/tests/externallib_test.php +++ b/mod/wiki/tests/externallib_test.php @@ -644,10 +644,14 @@ class externallib_test extends externallib_advanced_testcase { // Check that WS doesn't return page content if includecontent is false, it returns the size instead. foreach ($expectedpages as $i => $expectedpage) { - if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) { - $expectedpages[$i]['contentsize'] = mb_strlen($expectedpages[$i]['cachedcontent'], '8bit'); - } else { - $expectedpages[$i]['contentsize'] = strlen($expectedpages[$i]['cachedcontent']); + $expectedpages[$i]['contentsize'] = strlen($expectedpages[$i]['cachedcontent']); + // TODO: Remove this block of code once PHP 8.0 is the min version supported. + // For PHP < 8.0, if strlen() was overloaded, calculate + // the bytes using mb_strlen(..., '8bit'). + if (PHP_VERSION_ID < 80000) { + if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) { + $expectedpages[$i]['contentsize'] = mb_strlen($expectedpages[$i]['cachedcontent'], '8bit'); + } } unset($expectedpages[$i]['cachedcontent']); unset($expectedpages[$i]['contentformat']);