*/
public function get($cat, $key, $default_value = null, $refresh = false)
{
- // Return the value of the cache if found and no refresh is forced
- if (!$refresh && $this->configCache->has($cat, $key)) {
- return $this->configCache->get($cat, $key);
+ // if the value isn't loaded or refresh is needed, load it to the cache
+ if ($this->configAdapter->isConnected() &&
+ (!$this->configAdapter->isLoaded($cat, $key) ||
+ $refresh)) {
+ $dbvalue = $this->configAdapter->get($cat, $key);
+
+ if ($dbvalue !== '!<unset>!') {
+ $this->configCache->set($cat, $key, $dbvalue);
+ return $dbvalue;
+ }
}
- // if we don't find the value in the cache and the adapter isn't ready, return the default value
- if (!$this->configAdapter->isConnected()) {
- return $default_value;
- }
-
- // load DB value to cache
- $dbvalue = $this->configAdapter->get($cat, $key);
-
- if ($dbvalue !== '!<unset>!') {
- $this->configCache->set($cat, $key, $dbvalue);
- return $dbvalue;
+ // use the config cache for return
+ if ($this->configCache->has($cat, $key)) {
+ return $this->configCache->get($cat, $key);
} else {
return $default_value;
}