diff --git a/lib/Subscribers/SubscriberSaveController.php b/lib/Subscribers/SubscriberSaveController.php index aa5cc15bce..8d40cf38f7 100644 --- a/lib/Subscribers/SubscriberSaveController.php +++ b/lib/Subscribers/SubscriberSaveController.php @@ -12,6 +12,7 @@ use MailPoet\Settings\SettingsController; use MailPoet\Statistics\Track\Unsubscribes; use MailPoet\Util\Security; use MailPoet\WP\Functions as WPFunctions; +use MailPoetVendor\Carbon\Carbon; class SubscriberSaveController { /** @var CustomFieldsRepository */ @@ -165,6 +166,13 @@ class SubscriberSaveController { if (isset($data['last_name'])) $subscriber->setLastName($data['last_name']); if (isset($data['status'])) $subscriber->setStatus($data['status']); if (isset($data['source'])) $subscriber->setSource($data['source']); + if (isset($data['wp_user_id'])) $subscriber->setWpUserId($data['wp_user_id']); + if (isset($data['subscribed_ip'])) $subscriber->setSubscribedIp($data['subscribed_ip']); + if (isset($data['confirmed_ip'])) $subscriber->setConfirmedIp($data['confirmed_ip']); + $createdAt = isset($data['created_at']) ? Carbon::createFromFormat('Y-m-d H:i:s', $data['created_at']) : null; + if ($createdAt) $subscriber->setCreatedAt($createdAt); + $confirmedAt = isset($data['confirmed_at']) ? Carbon::createFromFormat('Y-m-d H:i:s', $data['confirmed_at']) : null; + if ($confirmedAt) $subscriber->setConfirmedAt($confirmedAt); $this->subscribersRepository->persist($subscriber); $this->subscribersRepository->flush(); diff --git a/tests/integration/Subscribers/SubscriberSaveControllerTest.php b/tests/integration/Subscribers/SubscriberSaveControllerTest.php index 68efde49e5..a652f8dce5 100644 --- a/tests/integration/Subscribers/SubscriberSaveControllerTest.php +++ b/tests/integration/Subscribers/SubscriberSaveControllerTest.php @@ -6,6 +6,7 @@ use MailPoet\Entities\SegmentEntity; use MailPoet\Entities\SubscriberEntity; use MailPoet\Entities\SubscriberSegmentEntity; use MailPoet\Segments\SegmentsRepository; +use MailPoetVendor\Carbon\Carbon; class SubscriberSaveControllerTest extends \MailPoetTest { /** @var SubscriberSaveController */ @@ -33,6 +34,11 @@ class SubscriberSaveControllerTest extends \MailPoetTest { $segmentOne->getId(), $segmentTwo->getId(), ], + 'created_at' => '2020-04-30 13:14:15', + 'confirmed_at' => '2020-04-31 13:14:15', + 'confirmed_ip' => '192.168.1.32', + 'subscribed_ip' => '192.168.1.16', + 'wp_user_id' => 7, ]; $subscriber = $this->saveController->save($data); @@ -40,6 +46,11 @@ class SubscriberSaveControllerTest extends \MailPoetTest { expect($subscriber->getStatus())->equals($data['status']); expect($subscriber->getFirstName())->equals($data['first_name']); expect($subscriber->getLastName())->equals($data['last_name']); + expect($subscriber->getCreatedAt())->equals(Carbon::createFromFormat('Y-m-d H:i:s', $data['created_at'])); + expect($subscriber->getConfirmedAt())->equals(Carbon::createFromFormat('Y-m-d H:i:s', $data['confirmed_at'])); + expect($subscriber->getConfirmedIp())->equals($data['confirmed_ip']); + expect($subscriber->getSubscribedIp())->equals($data['subscribed_ip']); + expect($subscriber->getWpUserId())->equals($data['wp_user_id']); expect($subscriber->getUnsubscribeToken())->notNull(); expect($subscriber->getLinkToken())->notNull(); expect($subscriber->getId())->notNull();