X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=application%2Fconfig%2FConfigManager.php;h=a0acc94d7d6f19e7bd1f3ee20e0bd3e2422e6283;hb=53054b2bf6a919fd4ff9b44b6ad1986f21f488b6;hp=0fc5a5c7f2b319401fe698c77a88b1fcb0786f62;hpb=e8cef3ac43d5a50485c72ea2e8267e92b00be609;p=github%2Fshaarli%2FShaarli.git diff --git a/application/config/ConfigManager.php b/application/config/ConfigManager.php index 0fc5a5c7..a0acc94d 100644 --- a/application/config/ConfigManager.php +++ b/application/config/ConfigManager.php @@ -1,8 +1,10 @@ configIO instanceof ConfigPhp && isset(ConfigPhp::$LEGACY_KEYS_MAPPING[$setting])) { + $setting = ConfigPhp::$LEGACY_KEYS_MAPPING[$setting]; + } + + $settings = explode('.', $setting); + self::removeConfig($settings, $this->loadedConfig); + if ($write) { + $this->write($isLoggedIn); + } + } + /** * Check if a settings exists. * @@ -180,12 +209,12 @@ 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 \Shaarli\Exceptions\IOException: an error occurred while writing the new config file. */ public function write($isLoggedIn) { // These fields are required in configuration. - $mandatoryFields = array( + $mandatoryFields = [ 'credentials.login', 'credentials.hash', 'credentials.salt', @@ -194,8 +223,7 @@ class ConfigManager 'general.title', 'general.header_link', 'privacy.default_private_links', - 'redirector.url', - ); + ]; // Only logged in user can alter config. if (is_file($this->getConfigFileExt()) && !$isLoggedIn) { @@ -272,7 +300,7 @@ class ConfigManager * * @param array $settings Ordered array which contains keys to find. * @param mixed $value - * @param array $conf Loaded settings, then sub-array. + * @param array $conf Loaded settings, then sub-array. * * @return mixed Found setting or NOT_FOUND flag. */ @@ -289,6 +317,27 @@ class ConfigManager $conf[$setting] = $value; } + /** + * Recursive function which find asked setting in the loaded config and deletes it. + * + * @param array $settings Ordered array which contains keys to find. + * @param array $conf Loaded settings, then sub-array. + * + * @return mixed Found setting or NOT_FOUND flag. + */ + protected static function removeConfig($settings, &$conf) + { + if (!is_array($settings) || count($settings) == 0) { + return self::$NOT_FOUND; + } + + $setting = array_shift($settings); + if (count($settings) > 0) { + return self::removeConfig($settings, $conf[$setting]); + } + unset($conf[$setting]); + } + /** * Set a bunch of default values allowing Shaarli to start without a config file. */ @@ -314,9 +363,13 @@ class ConfigManager $this->setEmpty('security.open_shaarli', false); $this->setEmpty('security.allowed_protocols', ['ftp', 'ftps', 'magnet']); - $this->setEmpty('general.header_link', '?'); + $this->setEmpty('general.header_link', '/'); $this->setEmpty('general.links_per_page', 20); $this->setEmpty('general.enabled_plugins', self::$DEFAULT_PLUGINS); + $this->setEmpty('general.default_note_title', 'Note: '); + $this->setEmpty('general.retrieve_description', true); + $this->setEmpty('general.enable_async_metadata', true); + $this->setEmpty('general.tags_separator', ' '); $this->setEmpty('updates.check_updates', false); $this->setEmpty('updates.check_updates_branch', 'stable'); @@ -327,15 +380,22 @@ class ConfigManager $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('thumbnails.mode', Thumbnailer::MODE_ALL); + $this->setEmpty('thumbnails.width', '125'); + $this->setEmpty('thumbnails.height', '90'); - $this->setEmpty('thumbnail.enable_thumbnails', true); - $this->setEmpty('thumbnail.enable_localcache', true); + $this->setEmpty('translation.language', 'auto'); + $this->setEmpty('translation.mode', 'php'); + $this->setEmpty('translation.extensions', []); - $this->setEmpty('redirector.url', ''); - $this->setEmpty('redirector.encode_url', true); + $this->setEmpty('plugins', []); - $this->setEmpty('plugins', array()); + $this->setEmpty('formatter', 'markdown'); } /**