From 7a3ac1af74b8470fe6f370b66a04070169f497a4 Mon Sep 17 00:00:00 2001 From: Pavel Dohnal Date: Tue, 20 Aug 2019 15:57:58 +0200 Subject: [PATCH] Use Doctrine to create new User Flags [MAILPOET-2219] --- lib/Features/FeatureFlagsController.php | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/lib/Features/FeatureFlagsController.php b/lib/Features/FeatureFlagsController.php index 2d585dfe09..77d3a80458 100644 --- a/lib/Features/FeatureFlagsController.php +++ b/lib/Features/FeatureFlagsController.php @@ -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''"); } }