]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Config/Adapter/AbstractDbaConfigAdapter.php
Merge branch 'master' into develop
[friendica.git] / src / Core / Config / Adapter / AbstractDbaConfigAdapter.php
index 770dfd2c957107814bcda19cfa99fd53c5734c99..38caf35cac1cfb6f537468f42c5b233a28fc8d07 100644 (file)
@@ -6,7 +6,11 @@ use Friendica\Database\DBA;
 
 abstract class AbstractDbaConfigAdapter
 {
-       /** @var bool */
+       /**
+        * The connection state of the adapter
+        *
+        * @var bool
+        */
        protected $connected = true;
 
        public function __construct()
@@ -14,8 +18,66 @@ abstract class AbstractDbaConfigAdapter
                $this->connected = DBA::connected();
        }
 
+       /**
+        * Checks if the adapter is currently connected
+        *
+        * @return bool
+        */
        public function isConnected()
        {
                return $this->connected;
        }
+
+       /**
+        * 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;
+               }
+       }
 }