mirror of
https://github.com/friendica/friendica
synced 2025-01-15 01:04:48 +00:00
80 lines
1.4 KiB
PHP
80 lines
1.4 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Friendica\Model\Config;
|
||
|
|
||
|
use Friendica\Database\Database;
|
||
|
|
||
|
abstract class DbaConfig
|
||
|
{
|
||
|
/** @var Database */
|
||
|
protected $dba;
|
||
|
|
||
|
public function __construct(Database $dba)
|
||
|
{
|
||
|
$this->dba = $dba;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Checks if the model is currently connected
|
||
|
*
|
||
|
* @return bool
|
||
|
*/
|
||
|
public function isConnected()
|
||
|
{
|
||
|
return $this->dba->isConnected();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 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;
|
||
|
}
|
||
|
}
|
||
|
}
|