]> git.mxchange.org Git - friendica.git/commitdiff
2) Refactor App->config[] into Core\PConfig
authorPhilipp Holzer <admin@philipp.info>
Sun, 3 Feb 2019 18:04:41 +0000 (19:04 +0100)
committerPhilipp Holzer <admin@philipp.info>
Sun, 3 Feb 2019 18:04:41 +0000 (19:04 +0100)
src/App.php
src/Core/Config.php
src/Core/Config/IConfigAdapter.php
src/Core/Config/IPConfigAdapter.php
src/Core/Config/JITPConfigAdapter.php
src/Core/Config/PreloadPConfigAdapter.php
src/Core/PConfig.php

index db35c45c195c86f80cf8a1ced679789658ade159..5ebdbf92b87585d4af54a59c72a01f1cb2775a00 100644 (file)
@@ -30,7 +30,6 @@ class App
        public $module_loaded = false;
        public $module_class = null;
        public $query_string = '';
-       public $config = [];
        public $page = [];
        public $profile;
        public $profile_uid;
@@ -1217,67 +1216,6 @@ class App
                return true;
        }
 
-       /**
-        * Retrieves a value from the user config cache
-        *
-        * @param int    $uid     User Id
-        * @param string $cat     Config category
-        * @param string $k       Config key
-        * @param mixed  $default Default value if key isn't set
-        *
-        * @return string The value of the config entry
-        */
-       public function getPConfigValue($uid, $cat, $k, $default = null)
-       {
-               $return = $default;
-
-               if (isset($this->config[$uid][$cat][$k])) {
-                       $return = $this->config[$uid][$cat][$k];
-               }
-
-               return $return;
-       }
-
-       /**
-        * Sets a value in the user config cache
-        *
-        * Accepts raw output from the pconfig table
-        *
-        * @param int    $uid User Id
-        * @param string $cat Config category
-        * @param string $k   Config key
-        * @param mixed  $v   Value to set
-        */
-       public function setPConfigValue($uid, $cat, $k, $v)
-       {
-               // Only arrays are serialized in database, so we have to unserialize sparingly
-               $value = is_string($v) && preg_match("|^a:[0-9]+:{.*}$|s", $v) ? unserialize($v) : $v;
-
-               if (!isset($this->config[$uid]) || !is_array($this->config[$uid])) {
-                       $this->config[$uid] = [];
-               }
-
-               if (!isset($this->config[$uid][$cat]) || !is_array($this->config[$uid][$cat])) {
-                       $this->config[$uid][$cat] = [];
-               }
-
-               $this->config[$uid][$cat][$k] = $value;
-       }
-
-       /**
-        * Deletes a value from the user config cache
-        *
-        * @param int    $uid User Id
-        * @param string $cat Config category
-        * @param string $k   Config key
-        */
-       public function deletePConfigValue($uid, $cat, $k)
-       {
-               if (isset($this->config[$uid][$cat][$k])) {
-                       unset($this->config[$uid][$cat][$k]);
-               }
-       }
-
        /**
         * Generates the site's default sender email address
         *
index 2a719e8e41098e9a29cbe8777681c020933a3809..6b9015c2eb96634d6d09ddbea7ab319136d2432e 100644 (file)
@@ -45,7 +45,7 @@ class Config extends BaseObject
         * @brief Loads all configuration values of family into a cached storage.
         *
         * All configuration values of the system are stored in global cache
-        * which is available under the global variable $a->config
+        * which is available under the global variable self::$config
         *
         * @param string $family The category of the configuration value
         *
@@ -132,7 +132,7 @@ class Config extends BaseObject
        /**
         * @brief Deletes the given key from the system configuration.
         *
-        * Removes the configured value from the stored cache in $a->config
+        * Removes the configured value from the stored cache in Config::$config
         * and removes it from the database.
         *
         * @param string $family The category of the configuration value
index 5861b4c7e1627972b0049fbe972df8db19f1b200..5bbb61ae80119ff5d9e02cbe3b2b5f78fe1dc90b 100644 (file)
@@ -12,7 +12,7 @@ interface IConfigAdapter
         * @brief Loads all configuration values into a cached storage.
         *
         * All configuration values of the system are stored in global cache
-        * which is available under the global variable $a->config
+        * which is available under the global variable Config::$config
         *
         * @param string  $cat The category of the configuration values to load
         *
@@ -60,7 +60,7 @@ interface IConfigAdapter
        /**
         * @brief Deletes the given key from the system configuration.
         *
-        * Removes the configured value from the stored cache in $a->config
+        * Removes the configured value from the stored cache in Config::$config
         * and removes it from the database.
         *
         * @param string $cat The category of the configuration value
index b912418432e1eb86d15005a4da20911b3cd84bbd..f4ad392d7f3585b1c6f0f5853f397b9c76f8ea36 100644 (file)
@@ -18,7 +18,7 @@ interface IPConfigAdapter
         * @brief Loads all configuration values of a user's config family into a cached storage.
         *
         * All configuration values of the given user are stored in global cache
-        * which is available under the global variable $a->config[$uid].
+        * which is available under the global variable self::$config[$uid].
         *
         * @param string $uid The user_id
         * @param string $cat The category of the configuration value
@@ -32,7 +32,7 @@ interface IPConfigAdapter
         * ($family) and a key.
         *
         * Get a particular user's config value from the given category ($family)
-        * and the $key from a cached storage in $a->config[$uid].
+        * and the $key from a cached storage in self::$config[$uid].
         *
         * @param string  $uid           The user_id
         * @param string  $cat           The category of the configuration value
@@ -64,7 +64,7 @@ interface IPConfigAdapter
        /**
         * @brief Deletes the given key from the users's configuration.
         *
-        * Removes the configured value from the stored cache in $a->config[$uid]
+        * Removes the configured value from the stored cache in self::$config[$uid]
         * and removes it from the database.
         *
         * @param string $uid The user_id
index bdaca407ffa583f88aa0c5c36a2dcf0fb4275471..4992068f60cbe7662791b0b41e10f10f78c6ca8b 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 namespace Friendica\Core\Config;
 
-use Friendica\BaseObject;
+use Friendica\Core\PConfig;
 use Friendica\Database\DBA;
 
 /**
@@ -11,47 +11,43 @@ use Friendica\Database\DBA;
  *
  * @author Hypolite Petovan <hypolite@mrpetovan.com>
  */
-class JITPConfigAdapter extends BaseObject implements IPConfigAdapter
+class JITPConfigAdapter implements IPConfigAdapter
 {
        private $in_db;
 
        public function load($uid, $cat)
        {
-               $a = self::getApp();
-
                $pconfigs = DBA::select('pconfig', ['v', 'k'], ['cat' => $cat, 'uid' => $uid]);
                if (DBA::isResult($pconfigs)) {
                        while ($pconfig = DBA::fetch($pconfigs)) {
                                $k = $pconfig['k'];
 
-                               self::getApp()->setPConfigValue($uid, $cat, $k, $pconfig['v']);
+                               PConfig::setPConfigValue($uid, $cat, $k, $pconfig['v']);
 
                                $this->in_db[$uid][$cat][$k] = true;
                        }
                } else if ($cat != 'config') {
                        // Negative caching
-                       $a->config[$uid][$cat] = "!<unset>!";
+                       PConfig::setPConfigValue($uid, $cat, "!<unset>!");
                }
                DBA::close($pconfigs);
        }
 
        public function get($uid, $cat, $k, $default_value = null, $refresh = false)
        {
-               $a = self::getApp();
-
                if (!$refresh) {
                        // Looking if the whole family isn't set
-                       if (isset($a->config[$uid][$cat])) {
-                               if ($a->config[$uid][$cat] === '!<unset>!') {
+                       if (PConfig::getPConfigValue($uid, $cat) !== null) {
+                               if (PConfig::getPConfigValue($uid, $cat) === '!<unset>!') {
                                        return $default_value;
                                }
                        }
 
-                       if (isset($a->config[$uid][$cat][$k])) {
-                               if ($a->config[$uid][$cat][$k] === '!<unset>!') {
+                       if (PConfig::getPConfigValue($uid, $cat, $k) !== null) {
+                               if (PConfig::getPConfigValue($uid, $cat, $k) === '!<unset>!') {
                                        return $default_value;
                                }
-                               return $a->config[$uid][$cat][$k];
+                               return PConfig::getPConfigValue($uid, $cat, $k);
                        }
                }
 
@@ -59,13 +55,13 @@ class JITPConfigAdapter extends BaseObject implements IPConfigAdapter
                if (DBA::isResult($pconfig)) {
                        $val = (preg_match("|^a:[0-9]+:{.*}$|s", $pconfig['v']) ? unserialize($pconfig['v']) : $pconfig['v']);
 
-                       self::getApp()->setPConfigValue($uid, $cat, $k, $val);
+                       PConfig::setPConfigValue($uid, $cat, $k, $val);
 
                        $this->in_db[$uid][$cat][$k] = true;
 
                        return $val;
                } else {
-                       self::getApp()->setPConfigValue($uid, $cat, $k, '!<unset>!');
+                       PConfig::setPConfigValue($uid, $cat, $k, '!<unset>!');
 
                        $this->in_db[$uid][$cat][$k] = false;
 
@@ -86,7 +82,7 @@ class JITPConfigAdapter extends BaseObject implements IPConfigAdapter
                        return true;
                }
 
-               self::getApp()->setPConfigValue($uid, $cat, $k, $value);
+               PConfig::setPConfigValue($uid, $cat, $k, $value);
 
                // manage array value
                $dbvalue = (is_array($value) ? serialize($value) : $dbvalue);
@@ -102,7 +98,7 @@ class JITPConfigAdapter extends BaseObject implements IPConfigAdapter
 
        public function delete($uid, $cat, $k)
        {
-               self::getApp()->deletePConfigValue($uid, $cat, $k);
+               PConfig::deletePConfigValue($uid, $cat, $k);
 
                if (!empty($this->in_db[$uid][$cat][$k])) {
                        unset($this->in_db[$uid][$cat][$k]);
index 6658efa3f67f571e2d1c93f60aa17bb67392a8ba..88774f2979b81014502d6d2c55fa9d7daa96694a 100644 (file)
@@ -3,7 +3,7 @@
 namespace Friendica\Core\Config;
 
 use Exception;
-use Friendica\BaseObject;
+use Friendica\Core\PConfig;
 use Friendica\Database\DBA;
 
 /**
@@ -13,7 +13,7 @@ use Friendica\Database\DBA;
  *
  * @author Hypolite Petovan <hypolite@mrpetovan.com>
  */
-class PreloadPConfigAdapter extends BaseObject implements IPConfigAdapter
+class PreloadPConfigAdapter implements IPConfigAdapter
 {
        private $config_loaded = false;
 
@@ -34,7 +34,7 @@ class PreloadPConfigAdapter extends BaseObject implements IPConfigAdapter
 
                $pconfigs = DBA::select('pconfig', ['cat', 'v', 'k'], ['uid' => $uid]);
                while ($pconfig = DBA::fetch($pconfigs)) {
-                       self::getApp()->setPConfigValue($uid, $pconfig['cat'], $pconfig['k'], $pconfig['v']);
+                       PConfig::setPConfigValue($uid, $pconfig['cat'], $pconfig['k'], $pconfig['v']);
                }
                DBA::close($pconfigs);
 
@@ -50,13 +50,13 @@ class PreloadPConfigAdapter extends BaseObject implements IPConfigAdapter
                if ($refresh) {
                        $config = DBA::selectFirst('pconfig', ['v'], ['uid' => $uid, 'cat' => $cat, 'k' => $k]);
                        if (DBA::isResult($config)) {
-                               self::getApp()->setPConfigValue($uid, $cat, $k, $config['v']);
+                               PConfig::setPConfigValue($uid, $cat, $k, $config['v']);
                        } else {
-                               self::getApp()->deletePConfigValue($uid, $cat, $k);
+                               PConfig::deletePConfigValue($uid, $cat, $k);
                        }
                }
 
-               $return = self::getApp()->getPConfigValue($uid, $cat, $k, $default_value);
+               $return = PConfig::getPConfigValue($uid, $cat, $k, $default_value);
 
                return $return;
        }
@@ -71,11 +71,11 @@ class PreloadPConfigAdapter extends BaseObject implements IPConfigAdapter
                // The exception are array values.
                $compare_value = !is_array($value) ? (string)$value : $value;
 
-               if (self::getApp()->getPConfigValue($uid, $cat, $k) === $compare_value) {
+               if (PConfig::getPConfigValue($uid, $cat, $k) === $compare_value) {
                        return true;
                }
 
-               self::getApp()->setPConfigValue($uid, $cat, $k, $value);
+               PConfig::setPConfigValue($uid, $cat, $k, $value);
 
                // manage array value
                $dbvalue = is_array($value) ? serialize($value) : $value;
@@ -94,7 +94,7 @@ class PreloadPConfigAdapter extends BaseObject implements IPConfigAdapter
                        $this->load($uid, $cat);
                }
 
-               self::getApp()->deletePConfigValue($uid, $cat, $k);
+               PConfig::deletePConfigValue($uid, $cat, $k);
 
                $result = DBA::delete('pconfig', ['uid' => $uid, 'cat' => $cat, 'k' => $k]);
 
index ffd72f0a7f30c0bcf73c71a8a823c5d936ef874e..7104ce83dcfb77b6570cd3c6cc0bb67a648f19bb 100644 (file)
@@ -20,6 +20,8 @@ use Friendica\BaseObject;
  */
 class PConfig extends BaseObject
 {
+       private static $config;
+
        /**
         * @var \Friendica\Core\Config\IPConfigAdapter
         */
@@ -45,7 +47,7 @@ class PConfig extends BaseObject
         * @brief Loads all configuration values of a user's config family into a cached storage.
         *
         * All configuration values of the given user are stored in global cache
-        * which is available under the global variable $a->config[$uid].
+        * which is available under the global variable self::$config[$uid].
         *
         * @param string $uid    The user_id
         * @param string $family The category of the configuration value
@@ -72,7 +74,7 @@ class PConfig extends BaseObject
         * ($family) and a key.
         *
         * Get a particular user's config value from the given category ($family)
-        * and the $key from a cached storage in $a->config[$uid].
+        * and the $key from a cached storage in self::$config[$uid].
         *
         * @param string  $uid           The user_id
         * @param string  $family        The category of the configuration value
@@ -130,7 +132,7 @@ class PConfig extends BaseObject
        /**
         * @brief Deletes the given key from the users's configuration.
         *
-        * Removes the configured value from the stored cache in $a->config[$uid]
+        * Removes the configured value from the stored cache in self::$config[$uid]
         * and removes it from the database.
         *
         * @param string $uid    The user_id
@@ -153,4 +155,68 @@ class PConfig extends BaseObject
 
                return self::$adapter->delete($uid, $family, $key);
        }
+
+
+       /**
+        * Retrieves a value from the user config cache
+        *
+        * @param int    $uid     User Id
+        * @param string $cat     Config category
+        * @param string $k       Config key
+        * @param mixed  $default Default value if key isn't set
+        *
+        * @return string The value of the config entry
+        */
+       public static function getPConfigValue($uid, $cat, $k = null, $default = null)
+       {
+               $return = $default;
+
+               if (isset(self::$config[$uid][$cat][$k])) {
+                       $return = self::$config[$uid][$cat][$k];
+               } elseif ($k == null && isset(self::$config[$uid][$cat])) {
+                       $return = self::$config[$uid][$cat];
+               }
+
+               return $return;
+       }
+
+       /**
+        * Sets a value in the user config cache
+        *
+        * Accepts raw output from the pconfig table
+        *
+        * @param int    $uid User Id
+        * @param string $cat Config category
+        * @param string $k   Config key
+        * @param mixed  $v   Value to set
+        */
+       public static function setPConfigValue($uid, $cat, $k, $v)
+       {
+               // Only arrays are serialized in database, so we have to unserialize sparingly
+               $value = is_string($v) && preg_match("|^a:[0-9]+:{.*}$|s", $v) ? unserialize($v) : $v;
+
+               if (!isset(self::$config[$uid]) || !is_array(self::$config[$uid])) {
+                       self::$config[$uid] = [];
+               }
+
+               if (!isset(self::$config[$uid][$cat]) || !is_array(self::$config[$uid][$cat])) {
+                       self::$config[$uid][$cat] = [];
+               }
+
+               self::$config[$uid][$cat][$k] = $value;
+       }
+
+       /**
+        * Deletes a value from the user config cache
+        *
+        * @param int    $uid User Id
+        * @param string $cat Config category
+        * @param string $k   Config key
+        */
+       public static function deletePConfigValue($uid, $cat, $k)
+       {
+               if (isset(self::$config[$uid][$cat][$k])) {
+                       unset(self::$config[$uid][$cat][$k]);
+               }
+       }
 }