Mark spammy subscribers as unconfirmed
[MAILPOET-2150]
This commit is contained in:
@ -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));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
Reference in New Issue
Block a user