. * */ namespace Friendica\Core\Config\Model; use Friendica\Core\Config\Capability\IManageConfigValues; use Friendica\Core\Config\Util\ConfigFileManager; use Friendica\Core\Config\ValueObject\Cache; /** * Configuration model, which manages the whole system configuration */ class Config implements IManageConfigValues { /** * @var Cache */ protected $configCache; /** @var ConfigFileManager */ protected $configFileManager; /** * @param ConfigFileManager $configFileManager The configuration file manager to save back configs * @param Cache $configCache The configuration cache (based on the config-files) */ public function __construct(ConfigFileManager $configFileManager, Cache $configCache) { $this->configFileManager = $configFileManager; $this->configCache = $configCache; } /** * {@inheritDoc} */ public function getCache(): Cache { return $this->configCache; } public function save() { $this->configFileManager->saveData($this->configCache); } public function load(string $cat = 'config') { $configCache = new Cache(); $this->configFileManager->setupCache($configCache, $_SERVER); $this->configCache = $configCache; } public function get(string $cat, string $key, $default_value = null, bool $refresh = false) { return $this->configCache->get($cat, $key) ?? $default_value; } public function set(string $cat, string $key, $value, bool $autosave = true): bool { $stored = $this->configCache->set($cat, $key, $value, Cache::SOURCE_DATA); if ($stored && $autosave) { $this->save(); } return $stored; } public function delete(string $cat, string $key, bool $autosave = true): bool { $removed = $this->configCache->delete($cat, $key); if ($removed && $autosave) { $this->save(); } return $removed; } }