namespace Friendica\Core\Config;
+use Friendica\Model;
+
/**
* This class is responsible for all system-wide configuration values in Friendica
* There are two types of storage
- * - The Config-Files (loaded into the FileCache @see Cache\IConfigCache )
- * - The Config-DB-Table (per Config-DB-adapter @see Adapter\IConfigAdapter )
+ * - The Config-Files (loaded into the FileCache @see Cache\ConfigCache)
+ * - The Config-DB-Table (per Config-DB-model @see Model\Config\Config)
*/
-class Configuration
+abstract class Configuration
{
/**
- * @var Cache\IConfigCache
+ * @var Cache\ConfigCache
*/
- private $configCache;
+ protected $configCache;
/**
- * @var Adapter\IConfigAdapter
+ * @var Model\Config\Config
*/
- private $configAdapter;
+ protected $configModel;
/**
- * @param Cache\IConfigCache $configCache The configuration cache (based on the config-files)
- * @param Adapter\IConfigAdapter $configAdapter The configuration DB-backend
+ * @param Cache\ConfigCache $configCache The configuration cache (based on the config-files)
+ * @param Model\Config\Config $configModel The configuration model
*/
- public function __construct(Cache\IConfigCache $configCache, Adapter\IConfigAdapter $configAdapter)
+ public function __construct(Cache\ConfigCache $configCache, Model\Config\Config $configModel)
{
$this->configCache = $configCache;
- $this->configAdapter = $configAdapter;
-
- $this->load();
+ $this->configModel = $configModel;
}
/**
* Returns the Config Cache
*
- * @return Cache\IConfigCache
+ * @return Cache\ConfigCache
*/
public function getCache()
{
/**
* @brief Loads all configuration values of family into a cached storage.
*
- * All configuration values of the system are stored in the cache ( @see IConfigCache )
+ * All configuration values of the system are stored in the cache ( @see ConfigCache )
*
* @param string $cat The category of the configuration value
*
* @return void
*/
- public function load($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->load($this->configAdapter->load($cat), true);
- }
+ abstract public function load(string $cat = 'config');
/**
* @brief Get a particular user's config variable given the category name
*
* Get a particular config value from the given category ($cat)
* and the $key 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 ConfigCache).
*
* @param string $cat The category of the configuration value
* @param string $key The configuration key to query
*
* @return mixed Stored value or null if it does not exist
*/
- public function get($cat, $key, $default_value = null, $refresh = false)
- {
- // if the value isn't loaded or refresh is needed, load it to the cache
- if ($this->configAdapter->isConnected() &&
- (!$this->configAdapter->isLoaded($cat, $key) ||
- $refresh)) {
-
- $dbvalue = $this->configAdapter->get($cat, $key);
-
- if (isset($dbvalue)) {
- $this->configCache->set($cat, $key, $dbvalue);
- return $dbvalue;
- }
- }
-
- // use the config cache for return
- $result = $this->configCache->get($cat, $key);
-
- return (isset($result)) ? $result : $default_value;
- }
+ abstract public function get(string $cat, string $key, $default_value = null, bool $refresh = false);
/**
* @brief Sets a configuration value for system config
*
* @return bool Operation success
*/
- public function set($cat, $key, $value)
- {
- // set the cache first
- $cached = $this->configCache->set($cat, $key, $value);
-
- // If there is no connected adapter, we're finished
- if (!$this->configAdapter->isConnected()) {
- return $cached;
- }
-
- $stored = $this->configAdapter->set($cat, $key, $value);
-
- return $cached && $stored;
- }
+ abstract public function set(string $cat, string $key, $value);
/**
* @brief Deletes the given key from the system configuration.
*
* Removes the configured value from the stored cache in $this->configCache
- * (@see ConfigCache ) and removes it from the database (@see IConfigAdapter ).
+ * (@see ConfigCache) and removes it from the database (@see IConfigAdapter).
*
* @param string $cat The category of the configuration value
* @param string $key The configuration key to delete
*
* @return bool
*/
- public function delete($cat, $key)
- {
- $cacheRemoved = $this->configCache->delete($cat, $key);
-
- if (!$this->configAdapter->isConnected()) {
- return $cacheRemoved;
- }
-
- $storeRemoved = $this->configAdapter->delete($cat, $key);
-
- return $cacheRemoved || $storeRemoved;
- }
+ abstract public function delete(string $cat, string $key);
}