X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=application%2Fconfig%2FConfigManager.php;h=32f6ef6db5418044a12fd92959e19a2d7634a029;hb=a59bbf50d7530d7e82a91896a210b9da49cb1568;hp=5aafc89d30d4e662511e46a6917d1943624f6b30;hpb=278d9ee2836df7d805845077f26f8cecd16f0f4f;p=github%2Fshaarli%2FShaarli.git diff --git a/application/config/ConfigManager.php b/application/config/ConfigManager.php index 5aafc89d..32f6ef6d 100644 --- a/application/config/ConfigManager.php +++ b/application/config/ConfigManager.php @@ -1,17 +1,16 @@ loadedConfig = $this->configIO->read($this->getConfigFileExt()); + try { + $this->loadedConfig = $this->configIO->read($this->getConfigFileExt()); + } catch (\Exception $e) { + die($e->getMessage()); + } $this->setDefaultValues(); } @@ -120,12 +127,12 @@ class ConfigManager * @param bool $write Write the new setting in the config file, default false. * @param bool $isLoggedIn User login state, default false. * - * @throws Exception Invalid + * @throws \Exception Invalid */ public function set($setting, $value, $write = false, $isLoggedIn = false) { if (empty($setting) || ! is_string($setting)) { - throw new Exception('Invalid setting key parameter. String expected, got: '. gettype($setting)); + throw new \Exception('Invalid setting key parameter. String expected, got: '. gettype($setting)); } // During the ConfigIO transition, map legacy settings to the new ones. @@ -173,7 +180,7 @@ class ConfigManager * * @throws MissingFieldConfigException: a mandatory field has not been provided in $conf. * @throws UnauthorizedConfigException: user is not authorize to change configuration. - * @throws IOException: an error occurred while writing the new config file. + * @throws \IOException: an error occurred while writing the new config file. */ public function write($isLoggedIn) { @@ -186,8 +193,8 @@ 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. @@ -287,39 +294,49 @@ 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.history', 'data/history.php'); + $this->setEmpty('resource.raintpl_tpl', 'tpl/'); + $this->setEmpty('resource.theme', 'default'); + $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_duration', 1800); $this->setEmpty('security.session_protection_disabled', false); + $this->setEmpty('security.open_shaarli', false); + $this->setEmpty('security.allowed_protocols', ['ftp', 'ftps', 'magnet']); - $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.enabled_plugins', array('qrcode')); + $this->setEmpty('general.links_per_page', 20); + $this->setEmpty('general.enabled_plugins', self::$DEFAULT_PLUGINS); + + $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', true); + + $this->setEmpty('privacy.default_private_links', false); + $this->setEmpty('privacy.hide_public_links', false); + $this->setEmpty('privacy.force_login', false); + $this->setEmpty('privacy.hide_timestamps', false); + // default state of the 'remember me' checkbox of the login form + $this->setEmpty('privacy.remember_user_default', true); - $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('thumbnail.enable_thumbnails', true); + $this->setEmpty('thumbnail.enable_localcache', true); + + $this->setEmpty('redirector.url', ''); + $this->setEmpty('redirector.encode_url', true); $this->setEmpty('plugins', array()); } @@ -353,36 +370,3 @@ class ConfigManager $this->configIO = $configIO; } } - -/** - * Exception used if a mandatory field is missing in given configuration. - */ -class MissingFieldConfigException extends Exception -{ - public $field; - - /** - * Construct exception. - * - * @param string $field field name missing. - */ - public function __construct($field) - { - $this->field = $field; - $this->message = 'Configuration value is required for '. $this->field; - } -} - -/** - * Exception used if an unauthorized attempt to edit configuration has been made. - */ -class UnauthorizedConfigException extends Exception -{ - /** - * Construct exception. - */ - public function __construct() - { - $this->message = 'You are not authorized to alter config.'; - } -}