Mark spammy subscribers as unconfirmed

[MAILPOET-2150]
This commit is contained in:
Pavel Dohnal
2019-07-08 16:44:36 +02:00
committed by M. Shull
parent d579c68d74
commit ba5b1e9ee2
2 changed files with 30 additions and 0 deletions

View File

@ -235,5 +235,18 @@ class WP {
WHERE `wp_user_id` IS NOT NULL AND `status` = "subscribed" AND `confirmed_at` IS NULL AND clicks.id IS NULL AND opens.id IS NULL WHERE `wp_user_id` IS NOT NULL AND `status` = "subscribed" AND `confirmed_at` IS NULL AND clicks.id IS NULL AND opens.id IS NULL
'; ';
$wpdb->query(sprintf($query, Subscriber::$_table, StatisticsClicks::$_table, StatisticsOpens::$_table, $wpdb->usermeta)); $wpdb->query(sprintf($query, Subscriber::$_table, StatisticsClicks::$_table, StatisticsOpens::$_table, $wpdb->usermeta));
$column_exists = $wpdb->query(sprintf('SHOW COLUMNS FROM `%s` LIKE "user_status"', $wpdb->users));
if ($column_exists) {
$query = '
UPDATE %s as subscribers
JOIN %s as users ON users.ID=subscribers.wp_user_id
SET `status` = "unconfirmed"
WHERE `status` = "subscribed" AND users.user_status = 2
';
$wpdb->query(sprintf($query, Subscriber::$_table, $wpdb->users));
}
} }
} }

View File

@ -282,6 +282,23 @@ class WPTest extends \MailPoetTest {
expect($db_subscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED); expect($db_subscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
} }
function testItMarksSpammySubscribersWithUserStatus2AsUnconfirmed() {
global $wpdb;
$random_number = rand();
$id = $this->insertUser($random_number);
$subscriber = Subscriber::createOrUpdate([
'email' => 'user-sync-test' . $random_number . '@example.com',
'status' => Subscriber::STATUS_SUBSCRIBED,
'wp_user_id' => $id,
]);
wp_update_user(['ID' => $id, 'user_status' => 2]);
$db = \ORM::getDb();
$db->exec(sprintf('UPDATE %s SET `user_status` = 2 WHERE ID = %s', $wpdb->users, $id));
WP::synchronizeUsers();
$db_subscriber = Subscriber::findOne($subscriber->id);
expect($db_subscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
}
function _before() { function _before() {
parent::_before(); parent::_before();
$this->cleanData(); $this->cleanData();