]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Config/PConfiguration.php
Merge pull request #7389 from MrPetovan/bug/7387-local_user-int
[friendica.git] / src / Core / Config / PConfiguration.php
index d3c848c9db4d33c2d79cf64674b513c545652998..badec9dfca094d5a60057065a919fc07ab9bb89e 100644 (file)
@@ -2,66 +2,70 @@
 
 namespace Friendica\Core\Config;
 
+use Friendica\Model;
+
 /**
  * This class is responsible for the user-specific configuration values in Friendica
- * The values are set through the Config-DB-Table (per Config-DB-adapter @see Adapter\IPConfigAdapter )
+ * The values are set through the Config-DB-Table (per Config-DB-model @see Model\Config\PConfig)
  *
- * The configuration cache (@see Cache\IPConfigCache ) is used for temporary caching of database calls. This will
+ * The configuration cache (@see Cache\PConfigCache ) is used for temporary caching of database calls. This will
  * increase the performance.
  */
-class PConfiguration
+abstract class PConfiguration
 {
        /**
-        * @var Cache\IPConfigCache
+        * @var Cache\PConfigCache
         */
-       private $configCache;
+       protected $configCache;
 
        /**
-        * @var Adapter\IPConfigAdapter
+        * @var Model\Config\PConfig
         */
-       private $configAdapter;
+       protected $configModel;
 
        /**
-        * @param Cache\IPConfigCache     $configCache   The configuration cache
-        * @param Adapter\IPConfigAdapter $configAdapter The configuration DB-backend
+        * @param Cache\PConfigCache   $configCache The configuration cache
+        * @param Model\Config\PConfig $configModel The configuration model
         */
-       public function __construct(Cache\IPConfigCache $configCache, Adapter\IPConfigAdapter $configAdapter)
+       public function __construct(Cache\PConfigCache $configCache, Model\Config\PConfig $configModel)
        {
                $this->configCache = $configCache;
-               $this->configAdapter = $configAdapter;
+               $this->configModel = $configModel;
+       }
+
+       /**
+        * Returns the Config Cache
+        *
+        * @return Cache\PConfigCache
+        */
+       public function getCache()
+       {
+               return $this->configCache;
        }
 
        /**
-        * @brief Loads all configuration values of a user's config family into a cached storage.
+        * Loads all configuration values of a user's config family into a cached storage.
         *
-        * All configuration values of the given user are stored with the $uid in
-        * the cache ( @see IPConfigCache )
+        * All configuration values of the given user are stored with the $uid in the cache
         *
-        * @param string $uid The user_id
+        * @param int $uid The user_id
         * @param string $cat The category of the configuration value
         *
         * @return void
+        * @see PConfigCache )
+        *
         */
-       public function load($uid, $cat = 'config')
-       {
-               // If not connected, do nothing
-               if (!$this->configAdapter->isConnected()) {
-                       return;
-               }
-
-               // load the whole category out of the DB into the cache
-               $this->configCache->loadP($uid, $this->configAdapter->load($uid, $cat));
-       }
+       abstract public function load(int $uid, string $cat = 'config');
 
        /**
-        * @brief Get a particular user's config variable given the category name
+        * Get a particular user's config variable given the category name
         * ($cat) and a key.
         *
         * Get a particular user's config value from the given category ($cat)
         * and the $key with the $uid from a cached storage either from the $this->configAdapter
-        * (@see IConfigAdapter ) or from the $this->configCache (@see IConfigCache ).
+        * (@see IConfigAdapter ) or from the $this->configCache (@see PConfigCache ).
         *
-        * @param string  $uid           The user_id
+        * @param int     $uid           The user_id
         * @param string  $cat           The category of the configuration value
         * @param string  $key           The configuration key to query
         * @param mixed   $default_value optional, The value to return if key is not set (default: null)
@@ -69,82 +73,37 @@ class PConfiguration
         *
         * @return mixed Stored value or null if it does not exist
         */
-       public function get($uid, $cat, $key, $default_value = null, $refresh = false)
-       {
-               // Return the value of the cache if found and no refresh is forced
-               if (!$refresh && $this->configCache->hasP($uid, $cat, $key)) {
-                       return $this->configCache->getP($uid, $cat, $key);
-               }
-
-               // if we don't find the value in the cache and the adapter isn't ready, return the default value
-               if (!$this->configAdapter->isConnected()) {
-                       return $default_value;
-               }
-
-               // load DB value to cache
-               $dbvalue = $this->configAdapter->get($uid, $cat, $key);
-
-               if ($dbvalue !== '!<unset>!') {
-                       $this->configCache->setP($uid, $cat, $key, $dbvalue);
-                       return $dbvalue;
-               } else {
-                       return $default_value;
-               }
-       }
+       abstract public function get(int $uid, string $cat, string $key, $default_value = null, bool $refresh = false);
 
        /**
-        * @brief Sets a configuration value for a user
+        * Sets a configuration value for a user
         *
         * Stores a config value ($value) in the category ($family) under the key ($key)
         * for the user_id $uid.
         *
         * @note  Please do not store booleans - convert to 0/1 integer values!
         *
-        * @param string $uid    The user_id
-        * @param string $cat    The category of the configuration value
-        * @param string $key    The configuration key to set
-        * @param mixed  $value  The value to store
+        * @param int    $uid   The user_id
+        * @param string $cat   The category of the configuration value
+        * @param string $key   The configuration key to set
+        * @param mixed  $value The value to store
         *
         * @return bool Operation success
         */
-       public function set($uid, $cat, $key, $value)
-       {
-               // set the cache first
-               $cached = $this->configCache->setP($uid, $cat, $key, $value);
-
-               // If there is no connected adapter, we're finished
-               if (!$this->configAdapter->isConnected()) {
-                       return $cached;
-               }
-
-               $stored = $this->configAdapter->set($uid, $cat, $key, $value);
-
-               return $cached && $stored;
-       }
+       abstract public function set(int $uid, string $cat, string $key, $value);
 
        /**
-        * @brief Deletes the given key from the users's configuration.
+        * Deletes the given key from the users's configuration.
         *
         * Removes the configured value from the stored cache in $this->configCache
         * (@see ConfigCache ) and removes it from the database (@see IConfigAdapter )
-        * with the given $uid.
+        *  with the given $uid.
         *
-        * @param string $uid The user_id
+        * @param int $uid The user_id
         * @param string $cat The category of the configuration value
         * @param string $key The configuration key to delete
         *
         * @return bool
         */
-       public function delete($uid, $cat, $key)
-       {
-               $cacheRemoved = $this->configCache->deleteP($uid, $cat, $key);
-
-               if (!$this->configAdapter->isConnected()) {
-                       return $cacheRemoved;
-               }
-
-               $storeRemoved = $this->configAdapter->delete($uid, $cat, $key);
-
-               return $cacheRemoved || $storeRemoved;
-       }
+       abstract public function delete(int $uid, string $cat, string $key);
 }