From 8a2fac65e8a02323f78815cdcac9720e82f41fc8 Mon Sep 17 00:00:00 2001 From: Fernando Jorge Mota Date: Mon, 8 May 2023 16:13:00 -0300 Subject: [PATCH 1/6] Transform is_current_user_guest in a static method --- includes/class-sensei-guest-user.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/includes/class-sensei-guest-user.php b/includes/class-sensei-guest-user.php index d95fae8a2c..141139e047 100644 --- a/includes/class-sensei-guest-user.php +++ b/includes/class-sensei-guest-user.php @@ -307,7 +307,7 @@ private function is_course_open_access( $course_id ) { * @since 4.11.0 * @access private */ - private function is_current_user_guest() { + private static function is_current_user_guest() { $user = wp_get_current_user(); return self::is_guest_user( $user ); } @@ -475,7 +475,7 @@ private function is_action( $field, $nonce ) { * @return boolean Whether to send the email. */ public function skip_sensei_email( $send_email ) { - return $this->is_current_user_guest() ? false : $send_email; + return self::is_current_user_guest() ? false : $send_email; } /** @@ -489,7 +489,7 @@ public function skip_sensei_email( $send_email ) { * @return bool|null Null if we should send the email, a boolean if not. */ public function skip_wp_mail( $return, $atts ) { - if ( $this->is_current_user_guest() ) { + if ( self::is_current_user_guest() ) { // If this e-mail is being dispatched while the current user is a guest, just... don't send it. return false; } From 95d3c123fc91f52ac3798c88ca98392dcf1359d1 Mon Sep 17 00:00:00 2001 From: Fernando Jorge Mota Date: Mon, 8 May 2023 16:14:10 -0300 Subject: [PATCH 2/6] Transform is_preview_user_active in a static method --- includes/class-sensei-preview-user.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/includes/class-sensei-preview-user.php b/includes/class-sensei-preview-user.php index 26ef11620f..51058ab927 100644 --- a/includes/class-sensei-preview-user.php +++ b/includes/class-sensei-preview-user.php @@ -103,7 +103,7 @@ public function init() { * @access private */ public function add_preview_user_filters() { - if ( $this->is_preview_user_active() ) { + if ( self::is_preview_user_active() ) { add_filter( 'map_meta_cap', [ $this, 'allow_post_preview' ], 10, 4 ); add_filter( 'pre_get_posts', [ $this, 'count_unpublished_lessons' ], 10 ); add_filter( 'sensei_notice', [ $this, 'hide_notices' ], 10, 1 ); @@ -195,7 +195,7 @@ public function add_user_switch_to_admin_bar( $wp_admin_bar ) { return; } - if ( $this->can_switch_to_preview_user( $course_id ) && ! $this->is_preview_user_active() ) { + if ( $this->can_switch_to_preview_user( $course_id ) && ! self::is_preview_user_active() ) { $wp_admin_bar->add_node( [ 'id' => self::SWITCH_ON_ACTION, @@ -209,7 +209,7 @@ public function add_user_switch_to_admin_bar( $wp_admin_bar ) { ); } - if ( $this->is_preview_user_active() ) { + if ( self::is_preview_user_active() ) { $wp_admin_bar->add_node( [ 'id' => self::SWITCH_OFF_ACTION, @@ -236,7 +236,7 @@ public function add_user_switch_to_admin_bar( $wp_admin_bar ) { * @return bool */ public function show_admin_bar_to_preview_user( $show ) { - if ( $this->is_preview_user_active() ) { + if ( self::is_preview_user_active() ) { return true; } @@ -265,7 +265,7 @@ private function can_switch_to_preview_user( $course_id ) { * @return bool|null Null if we should send the email, a boolean if not. */ public function skip_wp_mail( $return, $atts ) { - if ( $this->is_preview_user_active() ) { + if ( self::is_preview_user_active() ) { // If this e-mail is being dispatched while the current user is a previwe user, just... don't send it. return false; } @@ -481,7 +481,7 @@ private function set_preview_user( $preview_user_id ) { * * @return bool */ - private function is_preview_user_active() { + private static function is_preview_user_active() { $user = wp_get_current_user(); return self::is_preview_user( $user ); } From 980b2a6d922a24f4e50ea93cc4e2fc6c09bbebdd Mon Sep 17 00:00:00 2001 From: Fernando Jorge Mota Date: Mon, 8 May 2023 16:17:59 -0300 Subject: [PATCH 3/6] Remove pre_wp_mail filter from the init method of Sensei_Guest_User and Sensei_Preview_User --- includes/class-sensei-guest-user.php | 1 - includes/class-sensei-preview-user.php | 1 - 2 files changed, 2 deletions(-) diff --git a/includes/class-sensei-guest-user.php b/includes/class-sensei-guest-user.php index 141139e047..9d0fbd4a51 100644 --- a/includes/class-sensei-guest-user.php +++ b/includes/class-sensei-guest-user.php @@ -147,7 +147,6 @@ public function init() { add_action( 'sensei_can_access_course_content', [ $this, 'open_course_enable_course_access' ], 10, 2 ); add_action( 'sensei_can_user_manually_enrol', [ $this, 'open_course_user_can_manualy_enroll' ], 10, 2 ); add_filter( 'sensei_send_emails', [ $this, 'skip_sensei_email' ] ); - add_filter( 'pre_wp_mail', [ $this, 'skip_wp_mail' ], 10, 2 ); $this->create_guest_student_role_if_not_exists(); diff --git a/includes/class-sensei-preview-user.php b/includes/class-sensei-preview-user.php index 51058ab927..6c9af16d7a 100644 --- a/includes/class-sensei-preview-user.php +++ b/includes/class-sensei-preview-user.php @@ -92,7 +92,6 @@ public function init() { add_action( 'show_admin_bar', [ $this, 'show_admin_bar_to_preview_user' ], 90 ); add_action( 'admin_bar_menu', [ $this, 'add_user_switch_to_admin_bar' ], 90 ); add_filter( 'sensei_is_enrolled', [ $this, 'preview_user_always_enrolled' ], 90, 3 ); - add_filter( 'pre_wp_mail', [ $this, 'skip_wp_mail' ], 10, 2 ); $this->create_role(); } From 6bcd03a2eaa902a00107c0249264d6a3e543afc2 Mon Sep 17 00:00:00 2001 From: Fernando Jorge Mota Date: Mon, 8 May 2023 16:18:25 -0300 Subject: [PATCH 4/6] Transform skip_wp_mail in Sensei_Guest_User and Sensei_Preview_User in static methods --- includes/class-sensei-guest-user.php | 2 +- includes/class-sensei-preview-user.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/class-sensei-guest-user.php b/includes/class-sensei-guest-user.php index 9d0fbd4a51..f5b39e550b 100644 --- a/includes/class-sensei-guest-user.php +++ b/includes/class-sensei-guest-user.php @@ -487,7 +487,7 @@ public function skip_sensei_email( $send_email ) { * @param array $atts Email attributes. * @return bool|null Null if we should send the email, a boolean if not. */ - public function skip_wp_mail( $return, $atts ) { + public static function skip_wp_mail( $return, $atts ) { if ( self::is_current_user_guest() ) { // If this e-mail is being dispatched while the current user is a guest, just... don't send it. return false; diff --git a/includes/class-sensei-preview-user.php b/includes/class-sensei-preview-user.php index 6c9af16d7a..aa5d7ba89f 100644 --- a/includes/class-sensei-preview-user.php +++ b/includes/class-sensei-preview-user.php @@ -263,7 +263,7 @@ private function can_switch_to_preview_user( $course_id ) { * @param array $atts Email attributes. * @return bool|null Null if we should send the email, a boolean if not. */ - public function skip_wp_mail( $return, $atts ) { + public static function skip_wp_mail( $return, $atts ) { if ( self::is_preview_user_active() ) { // If this e-mail is being dispatched while the current user is a previwe user, just... don't send it. return false; From d3771e482570b2f5fe66ded53e3a4abcefa27a46 Mon Sep 17 00:00:00 2001 From: Fernando Jorge Mota Date: Mon, 8 May 2023 16:35:20 -0300 Subject: [PATCH 5/6] Add Sensei_Guest_User's and Sensei_Preview_User's skip_wp_mail filter in the Sensei_Temporary_User class --- includes/class-sensei-temporary-user.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/includes/class-sensei-temporary-user.php b/includes/class-sensei-temporary-user.php index 500689d63c..af83084082 100644 --- a/includes/class-sensei-temporary-user.php +++ b/includes/class-sensei-temporary-user.php @@ -35,6 +35,8 @@ public static function init() { add_filter( 'sensei_learners_query', [ static::class, 'filter_learners_query' ] ); add_filter( 'sensei_count_statuses_args', [ static::class, 'filter_count_statuses' ] ); add_filter( 'sensei_check_for_activity', [ static::class, 'filter_sensei_activity' ], 10, 2 ); + add_filter( 'pre_wp_mail', [ Sensei_Guest_User::class, 'skip_wp_mail' ], 10, 2 ); + add_filter( 'pre_wp_mail', [ Sensei_Preview_User::class, 'skip_wp_mail' ], 10, 2 ); } /** From 09fd44ed4d9062a4c386a73ca8293442375c0d3a Mon Sep 17 00:00:00 2001 From: Fernando Jorge Mota Date: Tue, 9 May 2023 16:27:39 -0300 Subject: [PATCH 6/6] Add changelog entry --- changelog/fix-wpmail-temporary-users | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 changelog/fix-wpmail-temporary-users diff --git a/changelog/fix-wpmail-temporary-users b/changelog/fix-wpmail-temporary-users new file mode 100644 index 0000000000..6cf02ff4f0 --- /dev/null +++ b/changelog/fix-wpmail-temporary-users @@ -0,0 +1,4 @@ +Significance: patch +Type: fixed + +Block triggering wp_mail for temporary users even on non-frontend context.