}
}
+ /**
+ * Remove a config element from the config file.
+ *
+ * @param string $setting Asked setting, keys separated with dots.
+ * @param bool $write Write the new setting in the config file, default false.
+ * @param bool $isLoggedIn User login state, default false.
+ *
+ * @throws \Exception Invalid
+ */
+ public function remove($setting, $write = false, $isLoggedIn = false)
+ {
+ if (empty($setting) || ! is_string($setting)) {
+ throw new \Exception(t('Invalid setting key parameter. String expected, got: '). gettype($setting));
+ }
+
+ // During the ConfigIO transition, map legacy settings to the new ones.
+ if ($this->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.
*
*
* @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.
*/
$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.
*/
$this->setEmpty('general.enabled_plugins', self::$DEFAULT_PLUGINS);
$this->setEmpty('general.default_note_title', 'Note: ');
+ $this->setEmpty('thumbnails.enabled', true);
+ $this->setEmpty('thumbnails.width', 120);
+ $this->setEmpty('thumbnails.height', 120);
+
$this->setEmpty('updates.check_updates', false);
$this->setEmpty('updates.check_updates_branch', 'stable');
$this->setEmpty('updates.check_updates_interval', 86400);