]> git.mxchange.org Git - friendica.git/blob - src/Core/Config/Util/ValueConversion.php
Merge pull request #10918 from nupplaphil/feat/core_new_paradigm
[friendica.git] / src / Core / Config / Util / ValueConversion.php
1 <?php
2
3 namespace Friendica\Core\Config\Util;
4
5 /**
6  * Util class to help to convert from/to (p)config values
7  */
8 class ValueConversion
9 {
10         /**
11          * Formats a DB value to a config value
12          * - null   = The db-value isn't set
13          * - bool   = The db-value is either '0' or '1'
14          * - array  = The db-value is a serialized array
15          * - string = The db-value is a string
16          *
17          * Keep in mind that there aren't any numeric/integer config values in the database
18          *
19          * @param string|null $value
20          *
21          * @return null|array|string
22          */
23         public static function toConfigValue(?string $value)
24         {
25                 if (!isset($value)) {
26                         return null;
27                 }
28
29                 switch (true) {
30                         // manage array value
31                         case preg_match("|^a:[0-9]+:{.*}$|s", $value):
32                                 return unserialize($value);
33
34                         default:
35                                 return $value;
36                 }
37         }
38
39         /**
40          * Formats a config value to a DB value (string)
41          *
42          * @param mixed $value
43          *
44          * @return string
45          */
46         public static function toDbValue($value): string
47         {
48                 // if not set, save an empty string
49                 if (!isset($value)) {
50                         return '';
51                 }
52
53                 switch (true) {
54                         // manage arrays
55                         case is_array($value):
56                                 return serialize($value);
57
58                         default:
59                                 return (string)$value;
60                 }
61         }
62 }