Allow unsubscribing from the WooCommerce segment [MAILPOET-1483]
This commit is contained in:
@@ -19,16 +19,13 @@ class SubscriberSegment extends Model {
|
|||||||
$subscriber->save();
|
$subscriber->save();
|
||||||
|
|
||||||
$wp_segment = Segment::getWPSegment();
|
$wp_segment = Segment::getWPSegment();
|
||||||
$wc_segment = Segment::getWooCommerceSegment();
|
|
||||||
|
|
||||||
if (!empty($segment_ids)) {
|
if (!empty($segment_ids)) {
|
||||||
// unsubscribe from segments
|
// unsubscribe from segments
|
||||||
foreach ($segment_ids as $segment_id) {
|
foreach ($segment_ids as $segment_id) {
|
||||||
|
|
||||||
// do not remove subscriptions to the WP Users or WooCommerce Customers segments
|
// do not remove subscriptions to the WP Users segment
|
||||||
if (($wp_segment !== false && (int)$wp_segment->id === (int)$segment_id)
|
if ($wp_segment !== false && (int)$wp_segment->id === (int)$segment_id) {
|
||||||
|| ($wc_segment !== false && (int)$wc_segment->id === (int)$segment_id)
|
|
||||||
) {
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,11 +46,6 @@ class SubscriberSegment extends Model {
|
|||||||
'segment_id', $wp_segment->id
|
'segment_id', $wp_segment->id
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if ($wc_segment !== false) {
|
|
||||||
$subscriptions = $subscriptions->whereNotEqual(
|
|
||||||
'segment_id', $wc_segment->id
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$subscriptions->findResultSet()
|
$subscriptions->findResultSet()
|
||||||
->set('status', Subscriber::STATUS_UNSUBSCRIBED)
|
->set('status', Subscriber::STATUS_UNSUBSCRIBED)
|
||||||
|
@@ -79,7 +79,7 @@ class SubscriberSegmentTest extends \MailPoetTest {
|
|||||||
expect($subscribed_segments[0]['name'])->equals($this->segment_2->name);
|
expect($subscribed_segments[0]['name'])->equals($this->segment_2->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItDoesNotUnsubscribeFromWPAndWooCommerceSegments() {
|
function testItDoesNotUnsubscribeFromWPSegment() {
|
||||||
$subscriber = $this->subscriber;
|
$subscriber = $this->subscriber;
|
||||||
$segment_1 = $this->segment_1;
|
$segment_1 = $this->segment_1;
|
||||||
$segment_1->type = Segment::TYPE_WP_USERS;
|
$segment_1->type = Segment::TYPE_WP_USERS;
|
||||||
@@ -126,7 +126,7 @@ class SubscriberSegmentTest extends \MailPoetTest {
|
|||||||
expect($subscriber->subscriptions[0]['segment_id'])->equals($segment_1->id);
|
expect($subscriber->subscriptions[0]['segment_id'])->equals($segment_1->id);
|
||||||
expect($subscriber->subscriptions[1]['status'])->equals(Subscriber::STATUS_UNSUBSCRIBED);
|
expect($subscriber->subscriptions[1]['status'])->equals(Subscriber::STATUS_UNSUBSCRIBED);
|
||||||
expect($subscriber->subscriptions[1]['segment_id'])->equals($segment_2->id);
|
expect($subscriber->subscriptions[1]['segment_id'])->equals($segment_2->id);
|
||||||
expect($subscriber->subscriptions[2]['status'])->equals(Subscriber::STATUS_SUBSCRIBED);
|
expect($subscriber->subscriptions[2]['status'])->equals(Subscriber::STATUS_UNSUBSCRIBED);
|
||||||
expect($subscriber->subscriptions[2]['segment_id'])->equals($segment_3->id);
|
expect($subscriber->subscriptions[2]['segment_id'])->equals($segment_3->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -301,9 +301,8 @@ class SubscriberSegmentTest extends \MailPoetTest {
|
|||||||
|
|
||||||
// the subscriber should still be subscribed to the WP segment
|
// the subscriber should still be subscribed to the WP segment
|
||||||
$subscribed_segments = $this->subscriber->segments()->findArray();
|
$subscribed_segments = $this->subscriber->segments()->findArray();
|
||||||
expect($subscribed_segments)->count(2);
|
expect($subscribed_segments)->count(1);
|
||||||
expect($subscribed_segments[0]['name'])->equals($this->wp_segment->name);
|
expect($subscribed_segments[0]['name'])->equals($this->wp_segment->name);
|
||||||
expect($subscribed_segments[1]['name'])->equals($this->wc_segment->name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCannotDeleteSubscriptionToWPAndWooCommerceSegments() {
|
function testItCannotDeleteSubscriptionToWPAndWooCommerceSegments() {
|
||||||
|
Reference in New Issue
Block a user