X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=src%2FCore%2FConfig.php;h=6ceb637701a251506c4d32a09b9d52af2edcfa55;hb=741701d26f3f31613d76600764ce7de7a4057d46;hp=a07bbd31c9130fa76ad0bd9ae8dfe808ce191498;hpb=3bccaccede0c39b451e23bfdcdbdcadfd5368f53;p=friendica.git diff --git a/src/Core/Config.php b/src/Core/Config.php index a07bbd31c9..6ceb637701 100644 --- a/src/Core/Config.php +++ b/src/Core/Config.php @@ -8,11 +8,9 @@ */ namespace Friendica\Core; -use Friendica\App; -use Friendica\BaseObject; -use Friendica\Core\Config; - -require_once 'include/dba.php'; +use Friendica\Core\Config\ConfigCache; +use Friendica\Core\Config\IConfigAdapter; +use Friendica\Core\Config\IConfigCache; /** * @brief Arbitrary system configuration storage @@ -21,32 +19,42 @@ require_once 'include/dba.php'; * If we ever would decide to return exactly the variable type as entered, * we will have fun with the additional features. :-) */ -class Config extends BaseObject +class Config { /** - * @var Friendica\Core\Config\IConfigAdapter + * @var Config\IConfigAdapter + */ + private static $adapter; + + /** + * @var Config\IConfigCache */ - private static $adapter = null; + private static $cache; - public static function init() + /** + * Initialize the config with only the cache + * + * @param Config\IConfigCache $cache The configuration cache + */ + public static function init(Config\IConfigCache $cache) { - // Database isn't ready or populated yet - if (!self::getApp()->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) { - return; - } + self::$cache = $cache; + } - if (self::getApp()->getConfigValue('system', 'config_adapter') == 'preload') { - self::$adapter = new Config\PreloadConfigAdapter(); - } else { - self::$adapter = new Config\JITConfigAdapter(); - } + /** + * Add the adapter for DB-backend + * + * @param Config\IConfigAdapter $adapter + */ + public static function setAdapter(Config\IConfigAdapter $adapter) + { + self::$adapter = $adapter; } /** * @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 + * All configuration values of the system are stored in the cache ( @see IConfigCache ) * * @param string $family The category of the configuration value * @@ -54,15 +62,10 @@ class Config extends BaseObject */ public static function load($family = "config") { - // Database isn't ready or populated yet - if (!self::getApp()->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) { + if (!isset(self::$adapter)) { return; } - if (empty(self::$adapter)) { - self::init(); - } - self::$adapter->load($family); } @@ -71,12 +74,8 @@ class Config extends BaseObject * ($family) and a key. * * Get a particular config value from the given category ($family) - * and the $key from a cached storage in $a->config[$uid]. - * $instore is only used by the set_config function - * to determine if the key already exists in the DB - * If a key is found in the DB but doesn't exist in - * local config cache, pull it into the cache so we don't have - * to hit the DB again for this item. + * and the $key from a cached storage either from the self::$adapter + * (@see IConfigAdapter ) or from the static::$cache (@see IConfigCache ). * * @param string $family The category of the configuration value * @param string $key The configuration key to query @@ -87,13 +86,8 @@ class Config extends BaseObject */ public static function get($family, $key, $default_value = null, $refresh = false) { - // Database isn't ready or populated yet, fallback to file config - if (!self::getApp()->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) { - return self::getApp()->getConfigValue($family, $key, $default_value); - } - - if (empty(self::$adapter)) { - self::init(); + if (!isset(self::$adapter)) { + return self::$cache->get($family, $key, $default_value); } return self::$adapter->get($family, $key, $default_value, $refresh); @@ -103,7 +97,6 @@ class Config extends BaseObject * @brief Sets a configuration value for system config * * 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! * @@ -115,13 +108,9 @@ class Config extends BaseObject */ public static function set($family, $key, $value) { - // Database isn't ready or populated yet - if (!self::getApp()->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) { - return false; - } - - if (empty(self::$adapter)) { - self::init(); + if (!isset(self::$adapter)) { + self::$cache->set($family, $key, $value); + return true; } return self::$adapter->set($family, $key, $value); @@ -130,8 +119,8 @@ class Config extends BaseObject /** * @brief Deletes the given key from the system configuration. * - * Removes the configured value from the stored cache in $a->config - * and removes it from the database. + * Removes the configured value from the stored cache in self::$config + * (@see ConfigCache ) and removes it from the database (@see IConfigAdapter ). * * @param string $family The category of the configuration value * @param string $key The configuration key to delete @@ -140,13 +129,8 @@ class Config extends BaseObject */ public static function delete($family, $key) { - // Database isn't ready or populated yet - if (!self::getApp()->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) { - return false; - } - - if (empty(self::$adapter)) { - self::init(); + if (!isset(self::$adapter)) { + self::$cache->delete($family, $key); } return self::$adapter->delete($family, $key);