mirror of
https://github.com/humhub/humhub.git
synced 2025-04-21 15:41:54 +02:00
Improvements in dotenv parsing (#7208)
* Improvements in dotenv parsing * Improvements in dotenv parsing * Improvements in dotenv parsing --------- Co-authored-by: Lucas Bartholemy <luke-@users.noreply.github.com>
This commit is contained in:
parent
6001a22fbd
commit
526ef0048e
@ -50,4 +50,4 @@
|
||||
#HUMHUB_CONFIG.MODULES.USER.MINIMUM_USERNAME_LENGTH=2
|
||||
#HUMHUB_CONFIG.MODULES.ADMIN.ALLOW_USER_IMPERSONATE=false
|
||||
#HUMHUB_CONFIG.MODULES.DASHBOARD.AUTO_INCLUDE_PROFILE_POSTS="all"
|
||||
#HUMHUB_CONFIG.MODULES.DASHBOARD.HIDE_ACTIVITY_SIDEBAR_WIDGET=true
|
||||
#HUMHUB_CONFIG.MODULES.DASHBOARD.HIDE_ACTIVITY_SIDEBAR_WIDGET=true
|
@ -27,6 +27,7 @@ HumHub Changelog
|
||||
- Fix #7197: Increased version of `PHPOffice/PHPSpreadsheet` to v2.2+
|
||||
- Enh #7167: Disable DEBUG mode automatically after successful humhub installation. Add `.env` support
|
||||
- Enh #7202: Increased minimum PHP version to 8.1
|
||||
- Enh #7208: Improvements in dotenv parsing
|
||||
- Enh #7211: Remove obsolete property `AbstractRichText::$record`
|
||||
- Enh #7213: By default, enabled "Mobile" notification types for those enabled for "Web"
|
||||
- Fix #7215: Wording: replace British "licence" with American "license"
|
||||
|
@ -18,9 +18,11 @@ class EnvHelper
|
||||
$config = [];
|
||||
|
||||
foreach ($env as $key => $value) {
|
||||
try {
|
||||
$value = Json::decode($value);
|
||||
} catch (InvalidArgumentException) {
|
||||
$value = self::normalizeValue($value);
|
||||
|
||||
// Skip null values
|
||||
if (is_null($value)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (StringHelper::startsWith($key, self::FIXED_SETTING_PREFIX)) {
|
||||
@ -47,6 +49,23 @@ class EnvHelper
|
||||
return $config;
|
||||
}
|
||||
|
||||
private static function normalizeValue(mixed $value): mixed
|
||||
{
|
||||
try {
|
||||
// Try to decode JSON
|
||||
$value = Json::decode($value);
|
||||
} catch (InvalidArgumentException) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
// Normalize boolean values
|
||||
if (in_array($value, ['true', 'false'], true)) {
|
||||
return filter_var($value, FILTER_VALIDATE_BOOLEAN);
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
private static function keyToPath(string $key): array
|
||||
{
|
||||
return ArrayHelper::getColumn(
|
||||
|
@ -75,4 +75,41 @@ class ConfigTest extends HumHubDbTestCase
|
||||
|
||||
$this->assertEquals($config, EnvHelper::toConfig($ENV));
|
||||
}
|
||||
|
||||
public function testBooleanConfig()
|
||||
{
|
||||
$ENV = [
|
||||
'HUMHUB_CONFIG.COMPONENTS.URL_MANAGER.SHOW_SCRIPT_NAME' => 'false',
|
||||
'HUMHUB_CONFIG.COMPONENTS.URL_MANAGER.ENABLE_PRETTY_URL' => 'true',
|
||||
];
|
||||
|
||||
$config = [
|
||||
'components' => [
|
||||
'urlManager' => [
|
||||
'showScriptName' => false,
|
||||
'enablePrettyUrl' => true,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$this->assertEquals($config, EnvHelper::toConfig($ENV));
|
||||
}
|
||||
|
||||
public function testEmptyConfig()
|
||||
{
|
||||
$ENV = [
|
||||
'HUMHUB_CONFIG.COMPONENTS.URL_MANAGER.SHOW_SCRIPT_NAME' => 'false',
|
||||
'HUMHUB_CONFIG.COMPONENTS.URL_MANAGER.ENABLE_PRETTY_URL' => null,
|
||||
];
|
||||
|
||||
$config = [
|
||||
'components' => [
|
||||
'urlManager' => [
|
||||
'showScriptName' => false,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$this->assertEquals($config, EnvHelper::toConfig($ENV));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user