]> git.mxchange.org Git - friendica.git/blob - src/Core/Config/Adapter/AbstractDbaConfigAdapter.php
Added string type-hint for get() and a test case for it
[friendica.git] / src / Core / Config / Adapter / AbstractDbaConfigAdapter.php
1 <?php
2
3 namespace Friendica\Core\Config\Adapter;
4
5 use Friendica\Database\DBA;
6
7 abstract class AbstractDbaConfigAdapter
8 {
9         /**
10          * The connection state of the adapter
11          *
12          * @var bool
13          */
14         protected $connected = true;
15
16         public function __construct()
17         {
18                 $this->connected = DBA::connected();
19         }
20
21         /**
22          * Checks if the adapter is currently connected
23          *
24          * @return bool
25          */
26         public function isConnected()
27         {
28                 return $this->connected;
29         }
30
31         /**
32          * Formats a DB value to a config value
33          * - null   = The db-value isn't set
34          * - bool   = The db-value is either '0' or '1'
35          * - array  = The db-value is a serialized array
36          * - string = The db-value is a string
37          *
38          * Keep in mind that there aren't any numeric/integer config values in the database
39          *
40          * @param null|string $value
41          *
42          * @return null|array|string
43          */
44         protected function toConfigValue($value)
45         {
46                 if (!isset($value)) {
47                         return null;
48                 }
49
50                 switch (true) {
51                         // manage array value
52                         case preg_match("|^a:[0-9]+:{.*}$|s", $value):
53                                 return unserialize($value);
54
55                         default:
56                                 return $value;
57                 }
58         }
59
60         /**
61          * Formats a config value to a DB value (string)
62          *
63          * @param mixed $value
64          *
65          * @return string
66          */
67         protected function toDbValue($value)
68         {
69                 // if not set, save an empty string
70                 if (!isset($value)) {
71                         return '';
72                 }
73
74                 switch (true) {
75                         // manage arrays
76                         case is_array($value):
77                                 return serialize($value);
78
79                         default:
80                                 return (string)$value;
81                 }
82         }
83 }