From 6419148b82b0e30b9a5366df6deb57ed3d3401ce Mon Sep 17 00:00:00 2001 From: Marc Egger <marc.egger@uzh.ch> Date: Mon, 12 Oct 2020 15:22:49 +0200 Subject: [PATCH] Config.php replace old style config variables when migrating to json --- extension/Classes/Core/Helper/OnArray.php | 19 +++++++++++++++++++ extension/Classes/Core/Store/Config.php | 9 +++++++++ 2 files changed, 28 insertions(+) diff --git a/extension/Classes/Core/Helper/OnArray.php b/extension/Classes/Core/Helper/OnArray.php index 18def73c2..5a13cee87 100644 --- a/extension/Classes/Core/Helper/OnArray.php +++ b/extension/Classes/Core/Helper/OnArray.php @@ -462,4 +462,23 @@ class OnArray { { return array_filter($keys, function($key) use ($array) {return !isset($array[$key]);}); } + + /** + * Rename keys according to the associative array given as first argument (only if the key exists). + * Return changed array. + * + * @param array $renameMap old-key => new-key + * @param array $array + * @param bool $overwrite overwrite value from existing new-key with value of old-key + * @return array + */ + public static function renameKeys(array $renameMap, array $array, bool $overwrite = false) { + foreach ($renameMap as $keyOld => $keyNew) { + if (isset($array[$keyOld]) && (!isset($array[$keyNew]) || $overwrite)) { + $array[$keyNew] = $array[$keyOld]; + unset($array[$keyOld]); + } + } + return $array; + } } \ No newline at end of file diff --git a/extension/Classes/Core/Store/Config.php b/extension/Classes/Core/Store/Config.php index a9139375a..79d14545b 100644 --- a/extension/Classes/Core/Store/Config.php +++ b/extension/Classes/Core/Store/Config.php @@ -11,6 +11,7 @@ namespace IMATHUZH\Qfq\Core\Store; use IMATHUZH\Qfq\Core\Exception\Thrower; use IMATHUZH\Qfq\Core\Helper\HelperFile; use IMATHUZH\Qfq\Core\Helper\Logger; +use IMATHUZH\Qfq\Core\Helper\OnArray; use IMATHUZH\Qfq\Core\Helper\Path; use IMATHUZH\Qfq\Core\Helper\Support; use IMATHUZH\Qfq\Core\Helper\OnString; @@ -172,6 +173,14 @@ class Config { HelperFile::enforce_writable($cwdToOldConfigFile); // so we can delete it. $config = include($cwdToOldConfigFile); + // In case the database credentials are given in the old style: rename the keys + $config = OnArray::renameKeys([ + SYSTEM_DB_USER => SYSTEM_DB_1_USER, + SYSTEM_DB_SERVER => SYSTEM_DB_1_SERVER, + SYSTEM_DB_PASSWORD => SYSTEM_DB_1_PASSWORD, + SYSTEM_DB_NAME => SYSTEM_DB_1_NAME + ], $config); + // write new qfq.config.json self::writeConfig($config); -- GitLab