Fix default status for new subscriber

[MAILPOET-3032]
This commit is contained in:
Jan Lysý
2021-03-30 18:58:00 +02:00
committed by Veljko V
parent 69d5eb42f7
commit ce6c38cfd3

View File

@ -120,6 +120,26 @@ class SubscriberSaveController {
return $subscriber; return $subscriber;
} }
public function filterOutReservedColumns(array $subscriberData): array {
$reservedColumns = [
'id',
'wp_user_id',
'is_woocommerce_user',
'status',
'subscribed_ip',
'confirmed_ip',
'confirmed_at',
'created_at',
'updated_at',
'deleted_at',
'unconfirmed_data',
];
return array_diff_key(
$subscriberData,
array_flip($reservedColumns)
);
}
private function getNonDefaultSubscribedSegments(array $data): array { private function getNonDefaultSubscribedSegments(array $data): array {
if (!isset($data['id']) || (int)$data['id'] <= 0) { if (!isset($data['id']) || (int)$data['id'] <= 0) {
return []; return [];
@ -155,7 +175,7 @@ class SubscriberSaveController {
return array_diff($data['segments'], $oldSegmentIds); return array_diff($data['segments'], $oldSegmentIds);
} }
private function createOrUpdate(array $data, ?SubscriberEntity $subscriber): SubscriberEntity { public function createOrUpdate(array $data, ?SubscriberEntity $subscriber): SubscriberEntity {
if (!$subscriber) { if (!$subscriber) {
$subscriber = $this->createSubscriber(); $subscriber = $this->createSubscriber();
if (!isset($data['source'])) $data['source'] = Source::ADMINISTRATOR; if (!isset($data['source'])) $data['source'] = Source::ADMINISTRATOR;
@ -184,7 +204,7 @@ class SubscriberSaveController {
$subscriber = new SubscriberEntity(); $subscriber = new SubscriberEntity();
$subscriber->setUnsubscribeToken($this->security->generateUnsubscribeTokenByEntity($subscriber)); $subscriber->setUnsubscribeToken($this->security->generateUnsubscribeTokenByEntity($subscriber));
$subscriber->setLinkToken(Security::generateHash(SubscriberEntity::LINK_TOKEN_LENGTH)); $subscriber->setLinkToken(Security::generateHash(SubscriberEntity::LINK_TOKEN_LENGTH));
$subscriber->setStatus($this->settings->get('signup_confirmation.enabled') ? SubscriberEntity::STATUS_SUBSCRIBED : SubscriberEntity::STATUS_UNCONFIRMED); $subscriber->setStatus(!$this->settings->get('signup_confirmation.enabled') ? SubscriberEntity::STATUS_SUBSCRIBED : SubscriberEntity::STATUS_UNCONFIRMED);
return $subscriber; return $subscriber;
} }