2019-07-03 00:42:47 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Friendica\Model\Config;
|
|
|
|
|
|
|
|
use Friendica\Database\Database;
|
|
|
|
|
|
|
|
abstract class DbaConfig
|
|
|
|
{
|
|
|
|
/** @var Database */
|
|
|
|
protected $dba;
|
|
|
|
|
|
|
|
public function __construct(Database $dba)
|
|
|
|
{
|
2019-07-04 21:39:49 +02:00
|
|
|
$this->dba = $dba;
|
2019-07-03 00:42:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 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;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|