Fix bulk trashing/deletion of subscribers with wp_user_id = 0 [MAILPOET-2489]
This commit is contained in:
@ -631,7 +631,7 @@ class Subscriber extends Model {
|
|||||||
'WHERE `id` IN (' .
|
'WHERE `id` IN (' .
|
||||||
rtrim(str_repeat('?,', count($subscriber_ids)), ',')
|
rtrim(str_repeat('?,', count($subscriber_ids)), ',')
|
||||||
. ')',
|
. ')',
|
||||||
'AND `wp_user_id` IS NULL',
|
'AND `wp_user_id` IS NULL OR `wp_user_id` = 0',
|
||||||
'AND `is_woocommerce_user` = 0',
|
'AND `is_woocommerce_user` = 0',
|
||||||
]),
|
]),
|
||||||
$subscriber_ids
|
$subscriber_ids
|
||||||
@ -649,7 +649,7 @@ class Subscriber extends Model {
|
|||||||
SubscriberCustomField::deleteManySubscriberRelations($subscriber_ids);
|
SubscriberCustomField::deleteManySubscriberRelations($subscriber_ids);
|
||||||
// delete subscribers (except WP Users)
|
// delete subscribers (except WP Users)
|
||||||
Subscriber::whereIn('id', $subscriber_ids)
|
Subscriber::whereIn('id', $subscriber_ids)
|
||||||
->whereNull('wp_user_id')
|
->whereRaw('`wp_user_id` IS NULL OR `wp_user_id` = 0')
|
||||||
->whereEqual('is_woocommerce_user', 0)
|
->whereEqual('is_woocommerce_user', 0)
|
||||||
->deleteMany();
|
->deleteMany();
|
||||||
});
|
});
|
||||||
|
@ -673,6 +673,25 @@ class SubscriberTest extends \MailPoetTest {
|
|||||||
expect($total)->equals(1);
|
expect($total)->equals(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testItBulkTrashesSubscribers() {
|
||||||
|
$subscriber_with_wp_user_id_zero = Subscriber::createOrUpdate([
|
||||||
|
'email' => 'some.wp.user0@mailpoet.com',
|
||||||
|
'first_name' => 'Some',
|
||||||
|
'last_name' => 'WP User',
|
||||||
|
'wp_user_id' => 0,
|
||||||
|
]);
|
||||||
|
$subscriber_with_wp_user_id = Subscriber::createOrUpdate([
|
||||||
|
'email' => 'some.wp.user@mailpoet.com',
|
||||||
|
'first_name' => 'Some',
|
||||||
|
'last_name' => 'WP User',
|
||||||
|
'wp_user_id' => 1,
|
||||||
|
]);
|
||||||
|
Subscriber::filter('bulkTrash');
|
||||||
|
$not_trashed_subscribers = Subscriber::whereNull('deleted_at')->findArray();
|
||||||
|
expect(count($not_trashed_subscribers))->equals(1);
|
||||||
|
expect($not_trashed_subscribers[0]['wp_user_id'])->equals(1);
|
||||||
|
}
|
||||||
|
|
||||||
function testItBulkDeletesSubscribers() {
|
function testItBulkDeletesSubscribers() {
|
||||||
$segment = Segment::createOrUpdate(
|
$segment = Segment::createOrUpdate(
|
||||||
[
|
[
|
||||||
@ -704,11 +723,26 @@ class SubscriberTest extends \MailPoetTest {
|
|||||||
);
|
);
|
||||||
expect(SubscriberSegment::findMany())->count(1);
|
expect(SubscriberSegment::findMany())->count(1);
|
||||||
|
|
||||||
|
$subscriber_with_wp_user_id_zero = Subscriber::createOrUpdate([
|
||||||
|
'email' => 'some.wp.user0@mailpoet.com',
|
||||||
|
'first_name' => 'Some',
|
||||||
|
'last_name' => 'WP User',
|
||||||
|
'wp_user_id' => 0,
|
||||||
|
]);
|
||||||
|
$subscriber_with_wp_user_id = Subscriber::createOrUpdate([
|
||||||
|
'email' => 'some.wp.user@mailpoet.com',
|
||||||
|
'first_name' => 'Some',
|
||||||
|
'last_name' => 'WP User',
|
||||||
|
'wp_user_id' => 1,
|
||||||
|
]);
|
||||||
|
|
||||||
// associated segments and custom fields should be deleted
|
// associated segments and custom fields should be deleted
|
||||||
Subscriber::filter('bulkDelete');
|
Subscriber::filter('bulkDelete');
|
||||||
expect(SubscriberCustomField::findArray())->isEmpty();
|
expect(SubscriberCustomField::findArray())->isEmpty();
|
||||||
expect(SubscriberSegment::findArray())->isEmpty();
|
expect(SubscriberSegment::findArray())->isEmpty();
|
||||||
expect(Subscriber::findArray())->isEmpty();
|
$not_deleted_subscribers = Subscriber::findArray();
|
||||||
|
expect(count($not_deleted_subscribers))->equals(1);
|
||||||
|
expect($not_deleted_subscribers[0]['wp_user_id'])->equals(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanFindSubscribersInSegments() {
|
function testItCanFindSubscribersInSegments() {
|
||||||
|
Reference in New Issue
Block a user