Browse Source

Merge pull request #6688 from nupplaphil/preload_adapter_fix

Preload adapter fix
pull/6694/head
Michael Vogel 3 years ago
committed by GitHub
parent
commit
e32ef66f68
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      src/Core/Config/Adapter/JITConfigAdapter.php
  2. 8
      src/Core/Config/Adapter/JITPConfigAdapter.php
  3. 7
      src/Core/Config/Adapter/PreloadConfigAdapter.php
  4. 28
      src/Core/Config/Adapter/PreloadPConfigAdapter.php
  5. 23
      src/Core/Config/Cache/ConfigCache.php
  6. 2
      view/theme/frio/style.php

9
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);

8
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

7
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']] = '!<unset>!';
}
}
DBA::close($configs);

28
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']] = '!<unset>!';
}
}
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 '!<unset>!';
}
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];
}
}

23
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 !== '!<unset>!') {
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 !== '!<unset>!') {
$this->setP($uid, $category, $key, $value);
}
}
}
}
}

2
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';

Loading…
Cancel
Save