]> git.mxchange.org Git - friendica.git/blob - src/Core/PConfig/Util/ValueConversion.php
Merge pull request #13704 from MrPetovan/bug/13693-infinite-indentation-level
[friendica.git] / src / Core / PConfig / Util / ValueConversion.php
1 <?php
2 /**
3  * @copyright Copyright (C) 2010-2023, the Friendica project
4  *
5  * @license GNU AGPL version 3 or any later version
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU Affero General Public License as
9  * published by the Free Software Foundation, either version 3 of the
10  * License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU Affero General Public License for more details.
16  *
17  * You should have received a copy of the GNU Affero General Public License
18  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
19  *
20  */
21
22 namespace Friendica\Core\PConfig\Util;
23
24 /**
25  * Util class to help to convert from/to (p)config values
26  */
27 class ValueConversion
28 {
29         /**
30          * Formats a DB value to a config value
31          * - null   = The db-value isn't set
32          * - bool   = The db-value is either '0' or '1'
33          * - array  = The db-value is a serialized array
34          * - string = The db-value is a string
35          *
36          * Keep in mind that there aren't any numeric/integer config values in the database
37          *
38          * @param string|null $value
39          *
40          * @return null|array|string
41          */
42         public static function toConfigValue(?string $value)
43         {
44                 if (!isset($value)) {
45                         return null;
46                 }
47
48                 switch (true) {
49                         // manage array value
50                         case preg_match("|^a:[0-9]+:{.*}$|s", $value):
51                                 return unserialize($value);
52
53                         default:
54                                 return $value;
55                 }
56         }
57
58         /**
59          * Formats a config value to a DB value (string)
60          *
61          * @param mixed $value
62          *
63          * @return string
64          */
65         public static function toDbValue($value): string
66         {
67                 // if not set, save an empty string
68                 if (!isset($value)) {
69                         return '';
70                 }
71
72                 switch (true) {
73                         // manage arrays
74                         case is_array($value):
75                                 return serialize($value);
76
77                         default:
78                                 return (string)$value;
79                 }
80         }
81 }