From 1bc55d06a3c07e334bb617255a6ea2a81827315a Mon Sep 17 00:00:00 2001 From: r-a-y Date: Mon, 27 Feb 2023 14:16:49 -0800 Subject: [PATCH 1/4] Do not mark main site as spam when using 'wp user spam'. --- src/User_Command.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/User_Command.php b/src/User_Command.php index d77774680..ea1e720eb 100644 --- a/src/User_Command.php +++ b/src/User_Command.php @@ -1253,8 +1253,8 @@ private function update_msuser_status( $user_ids, $pref, $value ) { foreach ( $blogs as $details ) { $site = $this->sitefetcher->get_check( $details->site_id ); - // Main blog shouldn't a spam ! - if ( $details->userblog_id !== $site->blog_id ) { + // Only mark site as spam if not main site. + if ( ! is_main_site( $details->userblog_id ) ) { update_blog_status( $details->userblog_id, $pref, $value ); } } From 5f4b7e19b543b1e2937be4127c5b7b46212c5c18 Mon Sep 17 00:00:00 2001 From: r-a-y Date: Mon, 27 Feb 2023 14:20:07 -0800 Subject: [PATCH 2/4] Remove unnecessary use of WP_CLI\Fetchers\Site. --- src/User_Command.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/User_Command.php b/src/User_Command.php index ea1e720eb..ecab71d88 100644 --- a/src/User_Command.php +++ b/src/User_Command.php @@ -2,7 +2,6 @@ use WP_CLI\CommandWithDBObject; use WP_CLI\Entity\Utils as EntityUtils; -use WP_CLI\Fetchers\Site as SiteFetcher; use WP_CLI\Fetchers\User as UserFetcher; use WP_CLI\Formatter; use WP_CLI\Iterators\CSV as CsvIterator; @@ -51,8 +50,7 @@ class User_Command extends CommandWithDBObject { ]; public function __construct() { - $this->fetcher = new UserFetcher(); - $this->sitefetcher = new SiteFetcher(); + $this->fetcher = new UserFetcher(); } /** @@ -1251,8 +1249,6 @@ private function update_msuser_status( $user_ids, $pref, $value ) { // Make that user's blog as spam too. $blogs = (array) get_blogs_of_user( $user_id, true ); foreach ( $blogs as $details ) { - $site = $this->sitefetcher->get_check( $details->site_id ); - // Only mark site as spam if not main site. if ( ! is_main_site( $details->userblog_id ) ) { update_blog_status( $details->userblog_id, $pref, $value ); From 39547a8638c3fe51dd869d306e6f0a5f84939ce3 Mon Sep 17 00:00:00 2001 From: r-a-y Date: Mon, 27 Feb 2023 17:04:28 -0800 Subject: [PATCH 3/4] Pass network ID to is_main_site() check in 'wp user spam' command. Addendum to commit 1bc55d0. --- src/User_Command.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/User_Command.php b/src/User_Command.php index ecab71d88..8165c9e64 100644 --- a/src/User_Command.php +++ b/src/User_Command.php @@ -1250,7 +1250,7 @@ private function update_msuser_status( $user_ids, $pref, $value ) { $blogs = (array) get_blogs_of_user( $user_id, true ); foreach ( $blogs as $details ) { // Only mark site as spam if not main site. - if ( ! is_main_site( $details->userblog_id ) ) { + if ( ! is_main_site( $details->userblog_id, $details->site_id ) ) { update_blog_status( $details->userblog_id, $pref, $value ); } } From b6556fbca0e2e4106eac4ddf7631165a57bd2279 Mon Sep 17 00:00:00 2001 From: Daniel Bachhuber Date: Wed, 15 Mar 2023 09:48:28 -0700 Subject: [PATCH 4/4] Add tests for blog spam/unspam behaviors --- features/user.feature | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/features/user.feature b/features/user.feature index 1c554fa31..855f962b4 100644 --- a/features/user.feature +++ b/features/user.feature @@ -435,6 +435,15 @@ Feature: Manage WordPress users And I run `wp user get oprime` Then STDOUT should not be empty + When I run `wp site create --slug=foo --porcelain` + Then save STDOUT as {SPAM_SITE_ID} + + When I run `wp --url=example.com/foo user set-role {BBEE_ID} administrator` + Then STDOUT should contain: + """ + Success: + """ + When I run `wp user spam {BBEE_ID}` Then STDOUT should be: """ @@ -453,6 +462,18 @@ Feature: Manage WordPress users """ And the return code should be 0 + When I run `wp site list --site__in=1 --field=spam` + Then STDOUT should be: + """ + 0 + """ + + When I run `wp site list --site__in={SPAM_SITE_ID} --field=spam` + Then STDOUT should be: + """ + 1 + """ + When I try `wp user spam {OP_ID} 9999` Then STDOUT should be: """ @@ -466,6 +487,24 @@ Feature: Manage WordPress users """ And the return code should be 1 + When I run `wp user unspam {BBEE_ID}` + Then STDOUT should contain: + """ + Success: + """ + + When I run `wp site list --site__in=1 --field=spam` + Then STDOUT should be: + """ + 0 + """ + + When I run `wp site list --site__in={SPAM_SITE_ID} --field=spam` + Then STDOUT should be: + """ + 0 + """ + @require-wp-4.3 Scenario: Sending emails on update Given a WP install