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 (' .
|
||||
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',
|
||||
]),
|
||||
$subscriber_ids
|
||||
@ -649,7 +649,7 @@ class Subscriber extends Model {
|
||||
SubscriberCustomField::deleteManySubscriberRelations($subscriber_ids);
|
||||
// delete subscribers (except WP Users)
|
||||
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)
|
||||
->deleteMany();
|
||||
});
|
||||
|
@ -673,6 +673,25 @@ class SubscriberTest extends \MailPoetTest {
|
||||
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() {
|
||||
$segment = Segment::createOrUpdate(
|
||||
[
|
||||
@ -704,11 +723,26 @@ class SubscriberTest extends \MailPoetTest {
|
||||
);
|
||||
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
|
||||
Subscriber::filter('bulkDelete');
|
||||
expect(SubscriberCustomField::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() {
|
||||
|
Reference in New Issue
Block a user