diff --git a/src/Core/Installer.php b/src/Core/Installer.php index b84bcd916..74d6114f1 100644 --- a/src/Core/Installer.php +++ b/src/Core/Installer.php @@ -440,6 +440,13 @@ class Installer ); $returnVal = $returnVal ? $status : false; + $status = $this->checkFunction('json_encode', + L10n::t('JSON PHP module'), + L10n::t('Error: JSON PHP module required but not installed.'), + true + ); + $returnVal = $returnVal ? $status : false; + return $returnVal; } diff --git a/tests/src/Core/InstallerTest.php b/tests/src/Core/InstallerTest.php index 32a80a77e..3d7effe52 100644 --- a/tests/src/Core/InstallerTest.php +++ b/tests/src/Core/InstallerTest.php @@ -43,6 +43,8 @@ class InstallerTest extends MockedTest $this->mockL10nT('Error: iconv PHP module required but not installed.', 1); $this->mockL10nT('POSIX PHP module', 1); $this->mockL10nT('Error: POSIX PHP module required but not installed.', 1); + $this->mockL10nT('JSON PHP module', 1); + $this->mockL10nT('Error: JSON PHP module required but not installed.', 1); } private function assertCheckExist($position, $title, $help, $status, $required, $assertionArray) @@ -177,6 +179,17 @@ class InstallerTest extends MockedTest true, $install->getChecks()); + $this->mockFunctionL10TCalls(); + $this->setFunctions(['json_encode' => false]); + $install = new Installer(); + $this->assertFalse($install->checkFunctions()); + $this->assertCheckExist(9, + 'JSON PHP module', + 'Error: JSON PHP module required but not installed.', + false, + true, + $install->getChecks()); + $this->mockFunctionL10TCalls(); $this->setFunctions([ 'curl_init' => true, @@ -184,7 +197,8 @@ class InstallerTest extends MockedTest 'openssl_public_encrypt' => true, 'mb_strlen' => true, 'iconv_strlen' => true, - 'posix_kill' => true + 'posix_kill' => true, + 'json_encode' => true ]); $install = new Installer(); $this->assertTrue($install->checkFunctions());