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