. * */ namespace Friendica\Core\Config\Util; /** * Util to transform back the config array into a string */ class ConfigFileTransformer { public static function encode(array $data): string { $dataString = ' null," . PHP_EOL; continue; } $dataString .= "\t'$category' => [" . PHP_EOL; if (is_array($data[$category])) { $keys = array_keys($data[$category]); foreach ($keys as $key) { $dataString .= static::mapConfigValue($key, $data[$category][$key]); } } $dataString .= "\t]," . PHP_EOL; } $dataString .= "];" . PHP_EOL; return $dataString; } protected static function extractArray(array $config, int $level = 0): string { $string = ''; foreach ($config as $configKey => $configValue) { $string .= static::mapConfigValue($configKey, $configValue, $level); } return $string; } protected static function mapConfigValue(string $key, $value, $level = 0): string { $string = str_repeat("\t", $level + 2) . "'$key' => "; if (is_null($value)) { $string .= "null,"; } elseif (is_array($value)) { $string .= "[" . PHP_EOL; $string .= static::extractArray($value, ++$level); $string .= str_repeat("\t", $level + 1) . '],'; } elseif (is_bool($value)) { $string .= ($value ? 'true' : 'false') . ","; } elseif (is_numeric($value)) { $string .= $value . ","; } else { $string .= sprintf('\'%s\',', addcslashes($value, '\'\\')); } $string .= PHP_EOL; return $string; } }