geno/wp-content/plugins/mailpoet/lib/Subscribers/SubscriberCustomFieldRepository.php
2024-02-01 11:54:18 +00:00

36 lines
1.3 KiB
PHP

<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing
namespace MailPoet\Subscribers;
if (!defined('ABSPATH')) exit;
use MailPoet\Doctrine\Repository;
use MailPoet\Entities\CustomFieldEntity;
use MailPoet\Entities\SubscriberCustomFieldEntity;
use MailPoet\Entities\SubscriberEntity;
/**
* @extends Repository<SubscriberCustomFieldEntity>
*/
class SubscriberCustomFieldRepository extends Repository {
protected function getEntityClassName() {
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);
$subscriber->getSubscriberCustomFields()->add($subscriberCustomField);
}
$this->entityManager->flush();
return $subscriberCustomField;
}
}