Synchronise guest woocommerce users as unconfirmed
[MAILPOET-2799]
This commit is contained in:
@ -80,8 +80,14 @@ class WooCommerce {
|
||||
$wcSegment = Segment::getWooCommerceSegment();
|
||||
|
||||
if ($wcOrder === false or $wcSegment === false) return;
|
||||
$signupConfirmation = $this->settings->get('signup_confirmation');
|
||||
$status = Subscriber::STATUS_UNCONFIRMED;
|
||||
if ((bool)$signupConfirmation['enabled'] === false) {
|
||||
$status = Subscriber::STATUS_SUBSCRIBED;
|
||||
}
|
||||
|
||||
$insertedEmails = $this->insertSubscribersFromOrders($orderId, $status);
|
||||
|
||||
$insertedEmails = $this->insertSubscribersFromOrders($orderId);
|
||||
if (empty($insertedEmails[0]['email'])) {
|
||||
return false;
|
||||
}
|
||||
@ -151,7 +157,7 @@ class WooCommerce {
|
||||
', $subscribersTable, $wpdb->users, $wpdb->usermeta, Source::WOOCOMMERCE_USER));
|
||||
}
|
||||
|
||||
private function insertSubscribersFromOrders($orderId = null) {
|
||||
private function insertSubscribersFromOrders($orderId = null, $status = Subscriber::STATUS_SUBSCRIBED) {
|
||||
global $wpdb;
|
||||
$subscribersTable = Subscriber::$_table;
|
||||
$orderId = !is_null($orderId) ? (int)$orderId : null;
|
||||
@ -170,7 +176,7 @@ class WooCommerce {
|
||||
WHERE wppm.meta_key = "_billing_email" AND wppm.meta_value != ""
|
||||
' . ($orderId ? ' AND p.ID = "' . $orderId . '"' : '') . '
|
||||
ON DUPLICATE KEY UPDATE is_woocommerce_user = 1
|
||||
', $subscribersTable, Subscriber::STATUS_SUBSCRIBED, Source::WOOCOMMERCE_USER));
|
||||
', $subscribersTable, $status, Source::WOOCOMMERCE_USER));
|
||||
|
||||
return $insertedUsersEmails;
|
||||
}
|
||||
|
@ -108,6 +108,7 @@ class WooCommerceTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
public function testItSynchronizesNewGuestCustomer() {
|
||||
$this->settings->set('signup_confirmation', ['enabled' => true]);
|
||||
$guest = $this->insertGuestCustomer();
|
||||
$hook = 'woocommerce_checkout_update_order_meta';
|
||||
$this->woocommerceSegment->synchronizeGuestCustomer($guest['order_id'], $hook);
|
||||
@ -117,15 +118,33 @@ class WooCommerceTest extends \MailPoetTest {
|
||||
expect($subscriber)->notEmpty();
|
||||
expect($subscriber->isWoocommerceUser)->equals(1);
|
||||
expect($subscriber->source)->equals(Source::WOOCOMMERCE_USER);
|
||||
expect($subscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
|
||||
}
|
||||
|
||||
public function testItSynchronizesNewGuestCustomerWithDoubleOptinDisabled() {
|
||||
$this->settings->set('signup_confirmation', ['enabled' => false]);
|
||||
$this->settings->resetCache();
|
||||
$guest = $this->insertGuestCustomer();
|
||||
$hook = 'woocommerce_checkout_update_order_meta';
|
||||
$this->woocommerceSegment->synchronizeGuestCustomer($guest['order_id'], $hook);
|
||||
$subscriber = Segment::getWooCommerceSegment()->subscribers()
|
||||
->where('email', $guest['email'])
|
||||
->findOne();
|
||||
expect($subscriber)->notEmpty();
|
||||
expect($subscriber->isWoocommerceUser)->equals(1);
|
||||
expect($subscriber->source)->equals(Source::WOOCOMMERCE_USER);
|
||||
expect($subscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED);
|
||||
}
|
||||
|
||||
public function testItSynchronizesCustomers() {
|
||||
$this->settings->set('signup_confirmation', ['enabled' => true]);
|
||||
$this->settings->set('mailpoet_subscribe_old_woocommerce_customers', ['dummy' => '1', 'enabled' => '1']);
|
||||
$user = $this->insertRegisteredCustomer();
|
||||
$guest = $this->insertGuestCustomer();
|
||||
$this->woocommerceSegment->synchronizeCustomers();
|
||||
$subscribersCount = $this->getSubscribersCount();
|
||||
expect($subscribersCount)->equals(2);
|
||||
|
||||
$subscriber = Subscriber::where('email', $user->user_email)->findOne(); // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps
|
||||
expect($subscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
|
||||
expect($subscriber->source)->equals(Source::WOOCOMMERCE_USER);
|
||||
|
Reference in New Issue
Block a user