From ce6c38cfd3a306c4abbb5402c1625a6a33392f76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lys=C3=BD?= Date: Tue, 30 Mar 2021 18:58:00 +0200 Subject: [PATCH] Fix default status for new subscriber [MAILPOET-3032] --- lib/Subscribers/SubscriberSaveController.php | 24 ++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/Subscribers/SubscriberSaveController.php b/lib/Subscribers/SubscriberSaveController.php index 8d40cf38f7..5c866c54ec 100644 --- a/lib/Subscribers/SubscriberSaveController.php +++ b/lib/Subscribers/SubscriberSaveController.php @@ -120,6 +120,26 @@ class SubscriberSaveController { 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 { if (!isset($data['id']) || (int)$data['id'] <= 0) { return []; @@ -155,7 +175,7 @@ class SubscriberSaveController { return array_diff($data['segments'], $oldSegmentIds); } - private function createOrUpdate(array $data, ?SubscriberEntity $subscriber): SubscriberEntity { + public function createOrUpdate(array $data, ?SubscriberEntity $subscriber): SubscriberEntity { if (!$subscriber) { $subscriber = $this->createSubscriber(); if (!isset($data['source'])) $data['source'] = Source::ADMINISTRATOR; @@ -184,7 +204,7 @@ class SubscriberSaveController { $subscriber = new SubscriberEntity(); $subscriber->setUnsubscribeToken($this->security->generateUnsubscribeTokenByEntity($subscriber)); $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; }