Bugfixings in Config

- replaced usage of "!<unset>!" with null-returns
- fixed bool settings (0/1)
- fixed overriding config-values
- fixed basepath problems
This commit is contained in:
Philipp Holzer 2019-02-22 23:51:13 +01:00
commit 8c3aebc376
No known key found for this signature in database
GPG key ID: 517BE60E2CE5C8A5
24 changed files with 175 additions and 157 deletions

View file

@ -6,7 +6,11 @@ use Friendica\Database\DBA;
abstract class AbstractDbaConfigAdapter
{
/** @var bool */
/**
* The connection state of the adapter
*
* @var bool
*/
protected $connected = true;
public function __construct()
@ -14,8 +18,66 @@ abstract class AbstractDbaConfigAdapter
$this->connected = DBA::connected();
}
/**
* Checks if the adapter is currently connected
*
* @return bool
*/
public function isConnected()
{
return $this->connected;
}
/**
* Formats a DB value to a config value
* - null = The db-value isn't set
* - bool = The db-value is either '0' or '1'
* - array = The db-value is a serialized array
* - string = The db-value is a string
*
* Keep in mind that there aren't any numeric/integer config values in the database
*
* @param null|string $value
*
* @return null|array|string
*/
protected function toConfigValue($value)
{
if (!isset($value)) {
return null;
}
switch (true) {
// manage array value
case preg_match("|^a:[0-9]+:{.*}$|s", $value):
return unserialize($value);
default:
return $value;
}
}
/**
* Formats a config value to a DB value (string)
*
* @param mixed $value
*
* @return string
*/
protected function toDbValue($value)
{
// if not set, save an empty string
if (!isset($value)) {
return '';
}
switch (true) {
// manage arrays
case is_array($value):
return serialize($value);
default:
return (string)$value;
}
}
}