Rewrite UserFlags data factory to create-or-update logic
[MAILPOET-2302]
This commit is contained in:
@ -169,7 +169,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
||||
$container->autowire(\MailPoet\Settings\SettingsController::class)->setPublic(true);
|
||||
// User Flags
|
||||
$container->autowire(\MailPoet\Settings\UserFlagsController::class);
|
||||
$container->autowire(\MailPoet\Settings\UserFlagsRepository::class);
|
||||
$container->autowire(\MailPoet\Settings\UserFlagsRepository::class)->setPublic(true);
|
||||
// Subscription
|
||||
$container->autowire(\MailPoet\Subscription\Captcha::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Subscription\CaptchaRenderer::class)->setPublic(true);
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace MailPoet\Test\DataFactories;
|
||||
|
||||
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
||||
use MailPoet\Settings\UserFlagsRepository;
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Entities\UserFlagEntity;
|
||||
|
||||
@ -10,12 +10,12 @@ class UserFlags {
|
||||
/** @var int */
|
||||
private $user_id;
|
||||
|
||||
/** @var EntityManager */
|
||||
private $entity_manager;
|
||||
/** @var UserFlagsRepository */
|
||||
private $user_flags_repository;
|
||||
|
||||
function __construct($user_id) {
|
||||
$this->user_id = $user_id;
|
||||
$this->entity_manager = ContainerWrapper::getInstance()->get(EntityManager::class);
|
||||
$this->user_flags_repository = ContainerWrapper::getInstance()->get(UserFlagsRepository::class);
|
||||
}
|
||||
|
||||
function withDefaultFlags() {
|
||||
@ -28,12 +28,21 @@ class UserFlags {
|
||||
}
|
||||
|
||||
function withFlag($name, $value) {
|
||||
$user_flag = $this->user_flags_repository->findOneBy([
|
||||
'user_id' => $this->user_id,
|
||||
'name' => $name,
|
||||
]);
|
||||
|
||||
if (!$user_flag) {
|
||||
$user_flag = new UserFlagEntity();
|
||||
$user_flag->setUserId($this->user_id);
|
||||
$user_flag->setName($name);
|
||||
$this->user_flags_repository->persist($user_flag);
|
||||
}
|
||||
|
||||
$user_flag->setValue($value);
|
||||
$this->entity_manager->persist($user_flag);
|
||||
$this->entity_manager->flush();
|
||||
$this->user_flags_repository->persist($user_flag);
|
||||
$this->user_flags_repository->flush();
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user