<?php
/**
- * @copyright Copyright (C) 2010-2022, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
namespace Friendica\Core\Config\Capability;
use Friendica\Core\Config\Exception\ConfigPersistenceException;
+use Friendica\Core\Config\Util\ConfigFileManager;
use Friendica\Core\Config\ValueObject\Cache;
/**
interface IManageConfigValues
{
/**
- * Loads all configuration values of family into a cached storage.
+ * Reloads all configuration values (from filesystem and environment variables)
*
* All configuration values of the system are stored in the cache.
*
- * @param string $cat The category of the configuration value
- *
* @return void
*
* @throws ConfigPersistenceException In case the persistence layer throws errors
*/
- public function load(string $cat = 'config');
+ public function reload();
/**
* Get a particular user's config variable given the category name
* ($cat) and a $key.
*
* Get a particular config value from the given category ($cat)
- * and the $key from a cached storage either from the database or from the cache.
*
* @param string $cat The category of the configuration value
* @param string $key The configuration key to query
* @param mixed $default_value Deprecated, use `Config->get($cat, $key, null, $refresh) ?? $default_value` instead
- * @param boolean $refresh optional, If true the config is loaded from the db and not from the cache (default: false)
*
* @return mixed Stored value or null if it does not exist
*
* @throws ConfigPersistenceException In case the persistence layer throws errors
*
*/
- public function get(string $cat, string $key, $default_value = null, bool $refresh = false);
+ public function get(string $cat, string $key, $default_value = null);
+
+ /**
+ * Load all configuration values from a given cache and saves it back in the configuration node store
+ * @see ConfigFileManager::CONFIG_DATA_FILE
+ *
+ * All configuration values of the system are stored in the cache.
+ *
+ * @param Cache $cache a new cache
+ *
+ * @return void
+ *
+ * @throws ConfigPersistenceException In case the persistence layer throws errors
+ */
+ public function load(Cache $cache);
/**
* Sets a configuration value for system config
*/
public function set(string $cat, string $key, $value): bool;
+ /**
+ * Creates a transactional config value store, which is used to set a bunch of values at once
+ *
+ * It relies on the current instance, so after save(), the values of this config class will get altered at once too.
+ *
+ * @return ISetConfigValuesTransactionally
+ */
+ public function beginTransaction(): ISetConfigValuesTransactionally;
+
/**
* Deletes the given key from the system configuration.
*