Use Doctrine to create new User Flags

[MAILPOET-2219]
This commit is contained in:
Pavel Dohnal
2019-08-20 15:57:58 +02:00
committed by M. Shull
parent 10476ebd8f
commit 7a3ac1af74

View File

@ -2,15 +2,21 @@
namespace MailPoet\Features;
use MailPoet\Models\FeatureFlag;
use MailPoet\Entities\FeatureFlagEntity;
use MailPoet\Settings\FeatureFlagsRepository;
use function MailPoet\Util\array_column;
class FeatureFlagsController {
/** @var FeaturesController */
private $features_controller;
function __construct(FeaturesController $features_controller) {
/** @var FeatureFlagsRepository */
private $feature_flags_repository;
function __construct(FeaturesController $features_controller, FeatureFlagsRepository $feature_flags_repository) {
$this->features_controller = $features_controller;
$this->feature_flags_repository = $feature_flags_repository;
}
function set($name, $value) {
@ -18,12 +24,18 @@ class FeatureFlagsController {
throw new \RuntimeException("Feature '$name' does not exist'");
}
$result = FeatureFlag::createOrUpdate([
$feature_flag = $this->feature_flags_repository->findOneBy([
'name' => $name,
'value' => $value ,
]);
if (!$feature_flag) {
$feature_flag = new FeatureFlagEntity($name);
$this->feature_flags_repository->persist($feature_flag);
}
$feature_flag->setValue($value);
if ($result->getErrors()) {
try {
$this->feature_flags_repository->flush();
} catch (\Exception $e) {
throw new \RuntimeException("Error when saving feature '$name''");
}
}