X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=application%2Fconfig%2FConfigManager.php;h=f5f753f8fb55853688824327cb19ea5669dcead8;hb=7af9a41881ed0b9d44d18a0ce03a123a8441adf5;hp=c0482cf3b819fb5ac8c9432ccd72983dbf0762a9;hpb=7f179985b497053c59338667fe49c390aa626ab7;p=github%2Fshaarli%2FShaarli.git diff --git a/application/config/ConfigManager.php b/application/config/ConfigManager.php index c0482cf3..f5f753f8 100644 --- a/application/config/ConfigManager.php +++ b/application/config/ConfigManager.php @@ -2,13 +2,13 @@ // FIXME! Namespaces... require_once 'ConfigIO.php'; -require_once 'ConfigPhp.php'; require_once 'ConfigJson.php'; +require_once 'ConfigPhp.php'; /** * Class ConfigManager * - * Singleton, manages all Shaarli's settings. + * Manages all Shaarli's settings. * See the documentation for more information on settings: * - doc/Shaarli-configuration.html * - https://github.com/shaarli/Shaarli/wiki/Shaarli-configuration @@ -16,19 +16,14 @@ require_once 'ConfigJson.php'; class ConfigManager { /** - * @var ConfigManager instance. + * @var string Flag telling a setting is not found. */ - protected static $instance = null; + protected static $NOT_FOUND = 'NOT_FOUND'; /** * @var string Config folder. */ - public static $CONFIG_FILE = 'data/config'; - - /** - * @var string Flag telling a setting is not found. - */ - protected static $NOT_FOUND = 'NOT_FOUND'; + protected $configFile; /** * @var array Loaded config array. @@ -41,37 +36,22 @@ class ConfigManager protected $configIO; /** - * Private constructor: new instances not allowed. - */ - private function __construct() {} - - /** - * Cloning isn't allowed either. - */ - private function __clone() {} - - /** - * Return existing instance of PluginManager, or create it. + * Constructor. * - * @return ConfigManager instance. + * @param string $configFile Configuration file path without extension. */ - public static function getInstance() + public function __construct($configFile = 'data/config') { - if (!(self::$instance instanceof self)) { - self::$instance = new self(); - self::$instance->initialize(); - } - - return self::$instance; + $this->configFile = $configFile; + $this->initialize(); } /** * Reset the ConfigManager instance. */ - public static function reset() + public function reset() { - self::$instance = null; - return self::getInstance(); + $this->initialize(); } /** @@ -87,10 +67,10 @@ class ConfigManager */ protected function initialize() { - if (! file_exists(self::$CONFIG_FILE .'.php')) { - $this->configIO = new ConfigJson(); - } else { + if (file_exists($this->configFile . '.php')) { $this->configIO = new ConfigPhp(); + } else { + $this->configIO = new ConfigJson(); } $this->load(); } @@ -100,7 +80,7 @@ class ConfigManager */ protected function load() { - $this->loadedConfig = $this->configIO->read($this->getConfigFile()); + $this->loadedConfig = $this->configIO->read($this->getConfigFileExt()); $this->setDefaultValues(); } @@ -208,12 +188,12 @@ class ConfigManager 'general.timezone', 'general.title', 'general.header_link', - 'general.default_private_links', - 'extras.redirector', + 'privacy.default_private_links', + 'redirector.url', ); // Only logged in user can alter config. - if (is_file(self::$CONFIG_FILE) && !$isLoggedIn) { + if (is_file($this->getConfigFileExt()) && !$isLoggedIn) { throw new UnauthorizedConfigException(); } @@ -224,17 +204,37 @@ class ConfigManager } } - return $this->configIO->write($this->getConfigFile(), $this->loadedConfig); + return $this->configIO->write($this->getConfigFileExt(), $this->loadedConfig); } /** - * Get the configuration file path. + * Set the config file path (without extension). * - * @return string Config file path. + * @param string $configFile File path. + */ + public function setConfigFile($configFile) + { + $this->configFile = $configFile; + } + + /** + * Return the configuration file path (without extension). + * + * @return string Config path. */ public function getConfigFile() { - return self::$CONFIG_FILE . $this->configIO->getExtension(); + return $this->configFile; + } + + /** + * Get the configuration file path with its extension. + * + * @return string Config file path. + */ + public function getConfigFileExt() + { + return $this->configFile . $this->configIO->getExtension(); } /** @@ -289,39 +289,43 @@ class ConfigManager */ protected function setDefaultValues() { - $this->setEmpty('path.data_dir', 'data'); - $this->setEmpty('path.config', 'data/config.php'); - $this->setEmpty('path.datastore', 'data/datastore.php'); - $this->setEmpty('path.ban_file', 'data/ipbans.php'); - $this->setEmpty('path.updates', 'data/updates.txt'); - $this->setEmpty('path.log', 'data/log.txt'); - $this->setEmpty('path.update_check', 'data/lastupdatecheck.txt'); - $this->setEmpty('path.raintpl_tpl', 'tpl/'); - $this->setEmpty('path.raintpl_tmp', 'tmp/'); - $this->setEmpty('path.thumbnails_cache', 'cache'); - $this->setEmpty('path.page_cache', 'pagecache'); + $this->setEmpty('resource.data_dir', 'data'); + $this->setEmpty('resource.config', 'data/config.php'); + $this->setEmpty('resource.datastore', 'data/datastore.php'); + $this->setEmpty('resource.ban_file', 'data/ipbans.php'); + $this->setEmpty('resource.updates', 'data/updates.txt'); + $this->setEmpty('resource.log', 'data/log.txt'); + $this->setEmpty('resource.update_check', 'data/lastupdatecheck.txt'); + $this->setEmpty('resource.raintpl_tpl', 'tpl/'); + $this->setEmpty('resource.raintpl_tmp', 'tmp/'); + $this->setEmpty('resource.thumbnails_cache', 'cache'); + $this->setEmpty('resource.page_cache', 'pagecache'); $this->setEmpty('security.ban_after', 4); - $this->setEmpty('security.ban_after', 1800); + $this->setEmpty('security.ban_duration', 1800); $this->setEmpty('security.session_protection_disabled', false); + $this->setEmpty('security.open_shaarli', false); - $this->setEmpty('general.check_updates', false); - $this->setEmpty('general.rss_permalinks', true); - $this->setEmpty('general.links_per_page', 20); - $this->setEmpty('general.default_private_links', false); - $this->setEmpty('general.enable_thumbnails', true); - $this->setEmpty('general.enable_localcache', true); - $this->setEmpty('general.check_updates_branch', 'stable'); - $this->setEmpty('general.check_updates_interval', 86400); $this->setEmpty('general.header_link', '?'); + $this->setEmpty('general.links_per_page', 20); $this->setEmpty('general.enabled_plugins', array('qrcode')); - $this->setEmpty('extras.show_atom', false); - $this->setEmpty('extras.hide_public_links', false); - $this->setEmpty('extras.hide_timestamps', false); - $this->setEmpty('extras.open_shaarli', false); - $this->setEmpty('extras.redirector', ''); - $this->setEmpty('extras.redirector_encode_url', true); + $this->setEmpty('updates.check_updates', false); + $this->setEmpty('updates.check_updates_branch', 'stable'); + $this->setEmpty('updates.check_updates_interval', 86400); + + $this->setEmpty('feed.rss_permalinks', true); + $this->setEmpty('feed.show_atom', false); + + $this->setEmpty('privacy.default_private_links', false); + $this->setEmpty('privacy.hide_public_links', false); + $this->setEmpty('privacy.hide_timestamps', false); + + $this->setEmpty('thumbnail.enable_thumbnails', true); + $this->setEmpty('thumbnail.enable_localcache', true); + + $this->setEmpty('redirector.url', ''); + $this->setEmpty('redirector.encode_url', true); $this->setEmpty('plugins', array()); }