Make feature flags controller return default feature value in case table doesn't exists

[MAILPOET-2373]
This commit is contained in:
Rostislav Wolny
2019-09-19 15:10:28 +02:00
committed by Jack Kitterhing
parent b2649ad635
commit 0daf7e8855

View File

@@ -2,6 +2,8 @@
namespace MailPoet\Features;
use MailPoetVendor\Doctrine\DBAL\Exception\TableNotFoundException;
class FeaturesController {
// Define features below in the following form:
@@ -33,7 +35,12 @@ class FeaturesController {
if (!$this->exists($feature)) {
throw new \RuntimeException("Unknown feature '$feature'");
}
$this->ensureFlagsLoaded();
// ensure controller works even if used before migrator, return default value in such case
try {
$this->ensureFlagsLoaded();
} catch (TableNotFoundException $e) {
return $this->defaults[$feature];
}
return $this->flags[$feature];
}
@@ -58,8 +65,8 @@ class FeaturesController {
return;
}
$this->flags = [];
$flagsMap = $this->getValueMap();
$this->flags = [];
foreach ($this->defaults as $name => $default) {
$this->flags[$name] = isset($flagsMap[$name]) ? $flagsMap[$name] : $default;
}