From 09690df739770a781d599f9f3e37ee4b9710db12 Mon Sep 17 00:00:00 2001 From: deepench Date: Tue, 29 Sep 2026 09:31:23 +0100 Subject: [PATCH] Fix unbounded get_users() full-table scan in theme-switch notice cleanup --- .../class-radiate-theme-review-notice.php | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/inc/admin/class-radiate-theme-review-notice.php b/inc/admin/class-radiate-theme-review-notice.php index 0c85571..7e58dd2 100644 --- a/inc/admin/class-radiate-theme-review-notice.php +++ b/inc/admin/class-radiate-theme-review-notice.php @@ -181,7 +181,6 @@ public function ignore_theme_review_notice_partially() { * Remove the data set after the theme has been switched to other theme. */ public function review_notice_data_remove() { - $get_all_users = get_users(); $theme_installed_time = get_option( 'radiate_theme_installed_time' ); // Delete options data. @@ -189,20 +188,22 @@ public function review_notice_data_remove() { delete_option( 'radiate_theme_installed_time' ); } - // Delete user meta data for theme review notice. - foreach ( $get_all_users as $user ) { - $ignored_notice = get_user_meta( $user->ID, 'radiate_ignore_theme_review_notice', true ); - $ignored_notice_partially = get_user_meta( $user->ID, 'nag_radiate_ignore_theme_review_notice_partially', true ); - - // Delete permanent notice remove data. - if ( $ignored_notice ) { - delete_user_meta( $user->ID, 'radiate_ignore_theme_review_notice' ); - } + // Only load users who actually have one of these notice-dismissal flags set. + $user_ids = get_users( + array( + 'meta_query' => array( + 'relation' => 'OR', + array( 'key' => 'radiate_ignore_theme_review_notice' ), + array( 'key' => 'nag_radiate_ignore_theme_review_notice_partially' ), + ), + 'fields' => 'ID', + ) + ); - // Delete partial notice remove data. - if ( $ignored_notice_partially ) { - delete_user_meta( $user->ID, 'nag_radiate_ignore_theme_review_notice_partially' ); - } + // Delete user meta data for theme review notice. + foreach ( $user_ids as $user_id ) { + delete_user_meta( $user_id, 'radiate_ignore_theme_review_notice' ); + delete_user_meta( $user_id, 'nag_radiate_ignore_theme_review_notice_partially' ); } } }