Fixing initial load config
This commit is contained in:
parent
6c68b8359d
commit
6801e8b5ab
2 changed files with 25 additions and 20 deletions
|
@ -13,8 +13,10 @@ use Friendica\Model;
|
||||||
*/
|
*/
|
||||||
class JitConfiguration extends Configuration
|
class JitConfiguration extends Configuration
|
||||||
{
|
{
|
||||||
/** @var array */
|
/**
|
||||||
private $in_db;
|
* @var array Array of already loaded db values (even if there was no value)
|
||||||
|
*/
|
||||||
|
private $db_loaded;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Cache\ConfigCache $configCache The configuration cache (based on the config-files)
|
* @param Cache\ConfigCache $configCache The configuration cache (based on the config-files)
|
||||||
|
@ -23,17 +25,7 @@ class JitConfiguration extends Configuration
|
||||||
public function __construct(Cache\ConfigCache $configCache, Model\Config\Config $configModel)
|
public function __construct(Cache\ConfigCache $configCache, Model\Config\Config $configModel)
|
||||||
{
|
{
|
||||||
parent::__construct($configCache, $configModel);
|
parent::__construct($configCache, $configModel);
|
||||||
$this->in_db = [];
|
$this->db_loaded = [];
|
||||||
|
|
||||||
// take the values of the given cache instead of loading them from the model again
|
|
||||||
$preSet = $configCache->getAll();
|
|
||||||
if (!empty($preSet)) {
|
|
||||||
foreach ($preSet as $cat => $data) {
|
|
||||||
foreach ($data as $key => $value) {
|
|
||||||
$this->in_db[$cat][$key] = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->load();
|
$this->load();
|
||||||
}
|
}
|
||||||
|
@ -53,7 +45,7 @@ class JitConfiguration extends Configuration
|
||||||
|
|
||||||
if (!empty($config[$cat])) {
|
if (!empty($config[$cat])) {
|
||||||
foreach ($config[$cat] as $key => $value) {
|
foreach ($config[$cat] as $key => $value) {
|
||||||
$this->in_db[$cat][$key] = true;
|
$this->db_loaded[$cat][$key] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +60,7 @@ class JitConfiguration extends Configuration
|
||||||
{
|
{
|
||||||
// if the value isn't loaded or refresh is needed, load it to the cache
|
// if the value isn't loaded or refresh is needed, load it to the cache
|
||||||
if ($this->configModel->isConnected() &&
|
if ($this->configModel->isConnected() &&
|
||||||
(empty($this->in_db[$cat][$key]) ||
|
(empty($this->db_loaded[$cat][$key]) ||
|
||||||
$refresh)) {
|
$refresh)) {
|
||||||
|
|
||||||
$dbvalue = $this->configModel->get($cat, $key);
|
$dbvalue = $this->configModel->get($cat, $key);
|
||||||
|
@ -76,8 +68,9 @@ class JitConfiguration extends Configuration
|
||||||
if (isset($dbvalue)) {
|
if (isset($dbvalue)) {
|
||||||
$this->configCache->set($cat, $key, $dbvalue);
|
$this->configCache->set($cat, $key, $dbvalue);
|
||||||
unset($dbvalue);
|
unset($dbvalue);
|
||||||
$this->in_db[$cat][$key] = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->db_loaded[$cat][$key] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// use the config cache for return
|
// use the config cache for return
|
||||||
|
@ -101,7 +94,7 @@ class JitConfiguration extends Configuration
|
||||||
|
|
||||||
$stored = $this->configModel->set($cat, $key, $value);
|
$stored = $this->configModel->set($cat, $key, $value);
|
||||||
|
|
||||||
$this->in_db[$cat][$key] = $stored;
|
$this->db_loaded[$cat][$key] = $stored;
|
||||||
|
|
||||||
return $cached && $stored;
|
return $cached && $stored;
|
||||||
}
|
}
|
||||||
|
@ -113,8 +106,8 @@ class JitConfiguration extends Configuration
|
||||||
{
|
{
|
||||||
$cacheRemoved = $this->configCache->delete($cat, $key);
|
$cacheRemoved = $this->configCache->delete($cat, $key);
|
||||||
|
|
||||||
if (isset($this->in_db[$cat][$key])) {
|
if (isset($this->db_loaded[$cat][$key])) {
|
||||||
unset($this->in_db[$cat][$key]);
|
unset($this->db_loaded[$cat][$key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$this->configModel->isConnected()) {
|
if (!$this->configModel->isConnected()) {
|
||||||
|
|
|
@ -114,7 +114,13 @@ class JitConfigurationTest extends ConfigurationTest
|
||||||
->andReturn(['config' => []])
|
->andReturn(['config' => []])
|
||||||
->once();
|
->once();
|
||||||
|
|
||||||
// mocking one get
|
// mocking one get without result
|
||||||
|
$this->configModel->shouldReceive('get')
|
||||||
|
->with('test', 'it')
|
||||||
|
->andReturn(null)
|
||||||
|
->once();
|
||||||
|
|
||||||
|
// mocking the data get
|
||||||
$this->configModel->shouldReceive('get')
|
$this->configModel->shouldReceive('get')
|
||||||
->with('test', 'it')
|
->with('test', 'it')
|
||||||
->andReturn($data)
|
->andReturn($data)
|
||||||
|
@ -162,6 +168,12 @@ class JitConfigurationTest extends ConfigurationTest
|
||||||
->andReturn(['config' => []])
|
->andReturn(['config' => []])
|
||||||
->once();
|
->once();
|
||||||
|
|
||||||
|
// mocking one get without result
|
||||||
|
$this->configModel->shouldReceive('get')
|
||||||
|
->with('test', 'it')
|
||||||
|
->andReturn(null)
|
||||||
|
->once();
|
||||||
|
|
||||||
parent::testDeleteWithDB();
|
parent::testDeleteWithDB();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue