+ $this->linkDB->savedb($this->conf->get('resource.page_cache'));
+ return true;
+ }
+
+ /**
+ * Move old configuration in PHP to the new config system in JSON format.
+ *
+ * Will rename 'config.php' into 'config.save.php' and create 'config.json.php'.
+ * It will also convert legacy setting keys to the new ones.
+ */
+ public function updateMethodConfigToJson()
+ {
+ // JSON config already exists, nothing to do.
+ if ($this->conf->getConfigIO() instanceof ConfigJson) {
+ return true;
+ }
+
+ $configPhp = new ConfigPhp();
+ $configJson = new ConfigJson();
+ $oldConfig = $configPhp->read($this->conf->getConfigFile() . '.php');
+ rename($this->conf->getConfigFileExt(), $this->conf->getConfigFile() . '.save.php');
+ $this->conf->setConfigIO($configJson);
+ $this->conf->reload();
+
+ $legacyMap = array_flip(ConfigPhp::$LEGACY_KEYS_MAPPING);
+ foreach (ConfigPhp::$ROOT_KEYS as $key) {
+ $this->conf->set($legacyMap[$key], $oldConfig[$key]);
+ }
+
+ // Set sub config keys (config and plugins)
+ $subConfig = array('config', 'plugins');
+ foreach ($subConfig as $sub) {
+ foreach ($oldConfig[$sub] as $key => $value) {
+ if (isset($legacyMap[$sub .'.'. $key])) {
+ $configKey = $legacyMap[$sub .'.'. $key];
+ } else {
+ $configKey = $sub .'.'. $key;
+ }
+ $this->conf->set($configKey, $value);
+ }
+ }
+
+ try{
+ $this->conf->write($this->isLoggedIn);
+ return true;
+ } catch (IOException $e) {
+ error_log($e->getMessage());
+ return false;
+ }
+ }
+
+ /**
+ * Escape settings which have been manually escaped in every request in previous versions:
+ * - general.title
+ * - general.header_link
+ * - redirector.url
+ *
+ * @return bool true if the update is successful, false otherwise.
+ */
+ public function updateMethodEscapeUnescapedConfig()
+ {
+ try {
+ $this->conf->set('general.title', escape($this->conf->get('general.title')));
+ $this->conf->set('general.header_link', escape($this->conf->get('general.header_link')));
+ $this->conf->set('redirector.url', escape($this->conf->get('redirector.url')));
+ $this->conf->write($this->isLoggedIn);
+ } catch (Exception $e) {
+ error_log($e->getMessage());
+ return false;
+ }