Add createOrUpdate for SubscriberCustomField

[MAILPOET-3031]
This commit is contained in:
Jan Lysý
2021-03-24 10:12:47 +01:00
committed by Veljko V
parent d7648bbda0
commit 761d587573

View File

@ -3,7 +3,9 @@
namespace MailPoet\Subscribers; namespace MailPoet\Subscribers;
use MailPoet\Doctrine\Repository; use MailPoet\Doctrine\Repository;
use MailPoet\Entities\CustomFieldEntity;
use MailPoet\Entities\SubscriberCustomFieldEntity; use MailPoet\Entities\SubscriberCustomFieldEntity;
use MailPoet\Entities\SubscriberEntity;
/** /**
* @extends Repository<SubscriberCustomFieldEntity> * @extends Repository<SubscriberCustomFieldEntity>
@ -12,4 +14,19 @@ class SubscriberCustomFieldRepository extends Repository {
protected function getEntityClassName() { protected function getEntityClassName() {
return SubscriberCustomFieldEntity::class; return SubscriberCustomFieldEntity::class;
} }
/**
* @param string|array|null $value
*/
public function createOrUpdate(SubscriberEntity $subscriber, CustomFieldEntity $customField, $value): SubscriberCustomFieldEntity {
$subscriberCustomField = $this->findOneBy(['subscriber' => $subscriber, 'customField' => $customField]);
if ($subscriberCustomField instanceof SubscriberCustomFieldEntity) {
$subscriberCustomField->setValue($value);
} else {
$subscriberCustomField = new SubscriberCustomFieldEntity($subscriber, $customField, $value);
$this->entityManager->persist($subscriberCustomField);
}
$this->entityManager->flush();
return $subscriberCustomField;
}
} }