diff --git a/src/Core/Config/Adapter/JITConfigAdapter.php b/src/Core/Config/Adapter/JITConfigAdapter.php index 5d06dc2b3..c0d680d2c 100644 --- a/src/Core/Config/Adapter/JITConfigAdapter.php +++ b/src/Core/Config/Adapter/JITConfigAdapter.php @@ -33,10 +33,13 @@ class JITConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAdapte $configs = DBA::select('config', ['v', 'k'], ['cat' => $cat]); while ($config = DBA::fetch($configs)) { - $key = $config['k']; + $key = $config['k']; + $value = $config['v']; - $return[$key] = $config['v']; - $this->in_db[$cat][$key] = true; + if (isset($value) && $value !== '') { + $return[$key] = $value; + $this->in_db[$cat][$key] = true; + } } DBA::close($configs); diff --git a/src/Core/Config/Adapter/JITPConfigAdapter.php b/src/Core/Config/Adapter/JITPConfigAdapter.php index d3c38623b..4485ee5df 100644 --- a/src/Core/Config/Adapter/JITPConfigAdapter.php +++ b/src/Core/Config/Adapter/JITPConfigAdapter.php @@ -29,10 +29,12 @@ class JITPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfigAdap if (DBA::isResult($pconfigs)) { while ($pconfig = DBA::fetch($pconfigs)) { $key = $pconfig['k']; + $value = $pconfig['v']; - $return[$key] = $pconfig['v']; - - $this->in_db[$uid][$cat][$key] = true; + if (isset($value) && $value !== '') { + $return[$key] = $value; + $this->in_db[$uid][$cat][$key] = true; + } } } else if ($cat != 'config') { // Negative caching diff --git a/src/Core/Config/Adapter/PreloadConfigAdapter.php b/src/Core/Config/Adapter/PreloadConfigAdapter.php index b1866a259..218648cbd 100644 --- a/src/Core/Config/Adapter/PreloadConfigAdapter.php +++ b/src/Core/Config/Adapter/PreloadConfigAdapter.php @@ -32,7 +32,12 @@ class PreloadConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAd $configs = DBA::select('config', ['cat', 'v', 'k']); while ($config = DBA::fetch($configs)) { - $return[$config['cat']][$config['k']] = $config['v']; + $value = $config['v']; + if (isset($value) && $value !== '') { + $return[$config['cat']][$config['k']] = $value; + } else { + $return[$config['cat']][$config['k']] = '!!'; + } } DBA::close($configs); diff --git a/src/Core/Config/Adapter/PreloadPConfigAdapter.php b/src/Core/Config/Adapter/PreloadPConfigAdapter.php index 857f2b176..12e25df9f 100644 --- a/src/Core/Config/Adapter/PreloadPConfigAdapter.php +++ b/src/Core/Config/Adapter/PreloadPConfigAdapter.php @@ -13,7 +13,10 @@ use Friendica\Database\DBA; */ class PreloadPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfigAdapter { - private $config_loaded = false; + /** + * @var array true if config for user is loaded + */ + private $config_loaded; /** * @param int $uid The UID of the current user @@ -22,6 +25,8 @@ class PreloadPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfig { parent::__construct(); + $this->config_loaded = []; + if (isset($uid)) { $this->load($uid, 'config'); } @@ -34,21 +39,26 @@ class PreloadPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfig { $return = []; - if ($this->config_loaded) { + if (empty($uid)) { return $return; } - if (empty($uid)) { + if (!$this->isLoaded($uid, $cat, null)) { return $return; } $pconfigs = DBA::select('pconfig', ['cat', 'v', 'k'], ['uid' => $uid]); while ($pconfig = DBA::fetch($pconfigs)) { - $return[$pconfig['cat']][$pconfig['k']] = $pconfig['v']; + $value = $pconfig['v']; + if (isset($value) && $value !== '') { + $return[$pconfig['cat']][$pconfig['k']] = $value; + } else { + $return[$pconfig['cat']][$pconfig['k']] = '!!'; + } } DBA::close($pconfigs); - $this->config_loaded = true; + $this->config_loaded[$uid] = true; return $return; } @@ -62,7 +72,7 @@ class PreloadPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfig return '!!'; } - if (!$this->config_loaded) { + if (!$this->isLoaded($uid, $cat, $key)) { $this->load($uid, $cat); } @@ -87,7 +97,7 @@ class PreloadPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfig return false; } - if (!$this->config_loaded) { + if (!$this->isLoaded($uid, $cat, $key)) { $this->load($uid, $cat); } // We store our setting values as strings. @@ -116,7 +126,7 @@ class PreloadPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfig return false; } - if (!$this->config_loaded) { + if (!$this->isLoaded($uid, $cat, $key)) { $this->load($uid, $cat); } @@ -134,6 +144,6 @@ class PreloadPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfig return false; } - return $this->config_loaded; + return isset($this->config_loaded[$uid]) && $this->config_loaded[$uid]; } } diff --git a/src/Core/Config/Cache/ConfigCache.php b/src/Core/Config/Cache/ConfigCache.php index 54da327db..4ebcc8748 100644 --- a/src/Core/Config/Cache/ConfigCache.php +++ b/src/Core/Config/Cache/ConfigCache.php @@ -36,11 +36,12 @@ class ConfigCache implements IConfigCache, IPConfigCache $keys = array_keys($config[$category]); foreach ($keys as $key) { - if (isset($config[$category][$key])) { + $value = $config[$category][$key]; + if (isset($value) && $value !== '!!') { if ($overwrite) { - $this->set($category, $key, $config[$category][$key]); + $this->set($category, $key, $value); } else { - $this->setDefault($category, $key, $config[$category][$key]); + $this->setDefault($category, $key, $value); } } } @@ -132,9 +133,19 @@ class ConfigCache implements IConfigCache, IPConfigCache */ public function loadP($uid, array $config) { - foreach ($config as $category => $values) { - foreach ($values as $key => $value) { - $this->setP($uid, $category, $key, $value); + $categories = array_keys($config); + + foreach ($categories as $category) { + if (isset($config[$category]) && is_array($config[$category])) { + + $keys = array_keys($config[$category]); + + foreach ($keys as $key) { + $value = $config[$category][$key]; + if (isset($value) && $value !== '!!') { + $this->setP($uid, $category, $key, $value); + } + } } } } diff --git a/view/theme/frio/style.php b/view/theme/frio/style.php index d8bffa9c6..5fada9dd4 100644 --- a/view/theme/frio/style.php +++ b/view/theme/frio/style.php @@ -2,9 +2,9 @@ /** * @file view/theme/frio/style.php */ + use Friendica\Core\Config; use Friendica\Core\PConfig; -use Friendica\Model\Profile; require_once 'view/theme/frio/php/PHPColors/Color.php';