diff --git a/src/Core/Config/Adapter/JITConfigAdapter.php b/src/Core/Config/Adapter/JITConfigAdapter.php index 5a41463036..d125f7d400 100644 --- a/src/Core/Config/Adapter/JITConfigAdapter.php +++ b/src/Core/Config/Adapter/JITConfigAdapter.php @@ -67,7 +67,6 @@ class JITConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAdapte $config = DBA::selectFirst('config', ['v'], ['cat' => $cat, 'k' => $key]); if (DBA::isResult($config)) { - // manage array value $value = $this->toConfigValue($config['v']); // just return it in case it is set @@ -91,9 +90,8 @@ class JITConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAdapte // We store our setting values in a string variable. // So we have to do the conversion here so that the compare below works. // The exception are array values. - $dbvalue = (!is_array($value) ? (string)$value : $value); - - $stored = $this->get($cat, $key, false); + $compare_value = (!is_array($value) ? (string)$value : $value); + $stored_value = $this->get($cat, $key, false); if (!isset($this->in_db[$cat])) { $this->in_db[$cat] = []; @@ -102,11 +100,11 @@ class JITConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAdapte $this->in_db[$cat][$key] = false; } - if (isset($stored) && ($stored === $dbvalue) && $this->in_db[$cat][$key]) { + if (isset($stored_value) && ($stored_value === $compare_value) && $this->in_db[$cat][$key]) { return true; } - $dbvalue = $this->toDbValue($dbvalue); + $dbvalue = $this->toDbValue($value); $result = DBA::update('config', ['v' => $dbvalue], ['cat' => $cat, 'k' => $key], true); diff --git a/src/Core/Config/Adapter/JITPConfigAdapter.php b/src/Core/Config/Adapter/JITPConfigAdapter.php index 5c1627eba0..a0c6a9547f 100644 --- a/src/Core/Config/Adapter/JITPConfigAdapter.php +++ b/src/Core/Config/Adapter/JITPConfigAdapter.php @@ -88,9 +88,8 @@ class JITPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfigAdap // We store our setting values in a string variable. // So we have to do the conversion here so that the compare below works. // The exception are array values. - $dbvalue = (!is_array($value) ? (string)$value : $value); - - $stored = $this->get($uid, $cat, $key, false); + $compare_value = (!is_array($value) ? (string)$value : $value); + $stored_value = $this->get($uid, $cat, $key, false); if (!isset($this->in_db[$uid])) { $this->in_db[$uid] = []; @@ -102,12 +101,12 @@ class JITPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfigAdap $this->in_db[$uid][$cat][$key] = false; } - if (($stored === $dbvalue) && $this->in_db[$uid][$cat][$key]) { + if (isset($stored_value) && ($stored_value === $compare_value) && $this->in_db[$uid][$cat][$key]) { return true; } // manage array value - $dbvalue = (is_array($value) ? serialize($value) : $dbvalue); + $dbvalue = (is_array($value) ? serialize($value) : $value); $result = DBA::update('pconfig', ['v' => $dbvalue], ['uid' => $uid, 'cat' => $cat, 'k' => $key], true); diff --git a/src/Core/Config/Adapter/PreloadConfigAdapter.php b/src/Core/Config/Adapter/PreloadConfigAdapter.php index d9f7b132d3..c691c88bc5 100644 --- a/src/Core/Config/Adapter/PreloadConfigAdapter.php +++ b/src/Core/Config/Adapter/PreloadConfigAdapter.php @@ -32,7 +32,7 @@ class PreloadConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAd $configs = DBA::select('config', ['cat', 'v', 'k']); while ($config = DBA::fetch($configs)) { - $value = $config['v']; + $value = $this->toConfigValue($config['v']); if (isset($value)) { $return[$config['cat']][$config['k']] = $value; } @@ -55,8 +55,7 @@ class PreloadConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAd $config = DBA::selectFirst('config', ['v'], ['cat' => $cat, 'k' => $key]); if (DBA::isResult($config)) { - // manage array value - $value = (preg_match("|^a:[0-9]+:{.*}$|s", $config['v']) ? unserialize($config['v']) : $config['v']); + $value = $this->toConfigValue($config['v']); if (isset($value)) { return $value; @@ -79,13 +78,13 @@ class PreloadConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAd // So we have to do the conversion here so that the compare below works. // The exception are array values. $compare_value = !is_array($value) ? (string)$value : $value; + $stored_value = $this->get($cat, $key); - if ($this->get($cat, $key) === $compare_value) { + if (isset($stored_value) && $stored_value === $compare_value) { return true; } - // manage array value - $dbvalue = is_array($value) ? serialize($value) : $value; + $dbvalue = $this->toDbValue($value); return DBA::update('config', ['v' => $dbvalue], ['cat' => $cat, 'k' => $key], true); } diff --git a/src/Core/Config/Adapter/PreloadPConfigAdapter.php b/src/Core/Config/Adapter/PreloadPConfigAdapter.php index 1af526b7c1..838f3763df 100644 --- a/src/Core/Config/Adapter/PreloadPConfigAdapter.php +++ b/src/Core/Config/Adapter/PreloadPConfigAdapter.php @@ -49,7 +49,7 @@ class PreloadPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfig $pconfigs = DBA::select('pconfig', ['cat', 'v', 'k'], ['uid' => $uid]); while ($pconfig = DBA::fetch($pconfigs)) { - $value = $pconfig['v']; + $value = $this->toConfigValue($pconfig['v']); if (isset($value)) { $return[$pconfig['cat']][$pconfig['k']] = $value; } @@ -76,8 +76,7 @@ class PreloadPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfig $config = DBA::selectFirst('pconfig', ['v'], ['uid' => $uid, 'cat' => $cat, 'k' => $key]); if (DBA::isResult($config)) { - // manage array value - $value = (preg_match("|^a:[0-9]+:{.*}$|s", $config['v']) ? unserialize($config['v']) : $config['v']); + $value = $this->toConfigValue($config['v']); if (isset($value)) { return $value; @@ -102,13 +101,13 @@ class PreloadPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfig // So we have to do the conversion here so that the compare below works. // The exception are array values. $compare_value = !is_array($value) ? (string)$value : $value; + $stored_value = $this->get($uid, $cat, $key); - if ($this->get($uid, $cat, $key) === $compare_value) { + if (isset($stored_value) && $stored_value === $compare_value) { return true; } - // manage array value - $dbvalue = is_array($value) ? serialize($value) : $value; + $dbvalue = $this->toDbValue($value); return DBA::update('pconfig', ['v' => $dbvalue], ['uid' => $uid, 'cat' => $cat, 'k' => $key], true); }