PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.9
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.9
4.4.9 4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.9.1 4.3.9 4.3.8 4.3.7 4.1.6.9 4.1.6.9.1 4.1.6.9.2 4.1.6.9.3 4.1.6.9.4 4.1.7 4.1.7.1 4.1.7.2 4.1.7.3 4.1.7.3.1 4.1.7.3.2 All 140 releases
← All changes | inc/emails/class-lp-email-hooks.php +77 -61 4.1.7.3.2 → 4.4.9 View file →
@@ -1,5 +1,9 @@
1 1 <?php
2 +
3 +use LearnPress\Background\LPBackgroundAjax;
4 +use LearnPress\Models\UserItems\UserCourseModel;
5 +
2 6 defined( 'ABSPATH' ) || exit();
3 7
4 8 if ( ! class_exists( 'LP_Email_Hooks' ) ) {
5 9
@@ -4,8 +8,16 @@
4 8 if ( ! class_exists( 'LP_Email_Hooks' ) ) {
5 9
6 10 /**
7 11 * Class LP_Email_Hooks
12 + *
13 + * @uses SendEmailAjax::send_mail_order_status_pending_to_processing
14 + * @uses SendEmailAjax::send_mail_order_status_pending_to_completed
15 + * @uses SendEmailAjax::send_mail_order_status_update_to_completed
16 + * @uses SendEmailAjax::send_mail_order_status_update_to_cancelled
17 + * @uses SendEmailAjax::send_mail_order_status_update_to_refunded
18 + * @uses SendEmailAjax::send_mail_order_refund_requested
19 + * @uses SendEmailAjax::send_mail_user_course_finished
8 20 */
9 21 class LP_Email_Hooks {
10 22 protected static $instance;
11 23 protected $actions;
@@ -12,9 +24,9 @@
12 24
13 25 protected function __construct() {
14 26 // Define class handle send email with hook corresponding
15 27 $this->actions = apply_filters(
16 - 'learn-press/email-actions',
28 + 'learn-press/email-actions-hooks',
17 29 [
18 30 // preview course
19 31 'learn_press_course_submit_rejected',
20 32 'learn_press_course_submit_approved',
@@ -20,71 +32,29 @@
20 32 'learn_press_course_submit_approved',
21 33 'learn_press_course_submit_for_reviewer',
22 34
23 35 // New order
24 - 'learn-press/order/status-pending-to-processing' => [
25 - LP_Email_New_Order_Admin::class => LP_PLUGIN_PATH . 'inc/emails/admin/class-lp-email-new-order-admin.php',
26 - LP_Email_New_Order_User::class => LP_PLUGIN_PATH . 'inc/emails/student/class-lp-email-new-order-user.php',
27 - LP_Email_New_Order_Instructor::class => LP_PLUGIN_PATH . 'inc/emails/instructor/class-lp-email-new-order-instructor.php',
28 - LP_Email_New_Order_Guest::class => LP_PLUGIN_PATH . 'inc/emails/guest/class-lp-email-new-order-guest.php',
29 - LP_Email_Processing_Order_User::class => LP_PLUGIN_PATH . 'inc/emails/student/class-lp-email-processing-order-user.php',
30 - LP_Email_Processing_Order_Guest::class => LP_PLUGIN_PATH . 'inc/emails/guest/class-lp-email-processing-order-guest.php',
31 - ],
32 - 'learn-press/order/status-pending-to-completed' => [
33 - LP_Email_New_Order_Admin::class => LP_PLUGIN_PATH . 'inc/emails/admin/class-lp-email-new-order-admin.php',
34 - LP_Email_New_Order_User::class => LP_PLUGIN_PATH . 'inc/emails/student/class-lp-email-new-order-user.php',
35 - LP_Email_New_Order_Instructor::class => LP_PLUGIN_PATH . 'inc/emails/instructor/class-lp-email-new-order-instructor.php',
36 - LP_Email_New_Order_Guest::class => LP_PLUGIN_PATH . 'inc/emails/guest/class-lp-email-new-order-guest.php',
37 - ],
38 -
36 + 'learn-press/order/status-pending-to-processing' => 'send_mail_order_status_pending_to_processing',
37 + 'learn-press/order/status-pending-to-completed' => 'send_mail_order_status_pending_to_completed',
39 38 // Completed order
40 - 'learn-press/order/status-completed' => [
41 - LP_Email_Completed_Order_User::class => LP_PLUGIN_PATH . 'inc/emails/student/class-lp-email-completed-order-user.php',
42 - LP_Email_Completed_Order_Admin::class => LP_PLUGIN_PATH . 'inc/emails/admin/class-lp-email-completed-order-admin.php',
43 - LP_Email_Completed_Order_Guest::class => LP_PLUGIN_PATH . 'inc/emails/guest/class-lp-email-completed-order-guest.php',
44 - ],
45 -
46 - // User enrolled course when order completed before
47 - 'learnpress/user/course-enrolled' => [
48 - LP_Email_Enrolled_Course_User::class => LP_PLUGIN_PATH . 'inc/emails/student/class-lp-email-enrolled-course-user.php',
49 - LP_Email_Enrolled_Course_Admin::class => LP_PLUGIN_PATH . 'inc/emails/admin/class-lp-email-enrolled-course-admin.php',
50 - LP_Email_Enrolled_Course_Instructor::class => LP_PLUGIN_PATH . 'inc/emails/instructor/class-lp-email-enrolled-course-instructor.php',
51 - ],
52 -
39 + 'learn-press/order/status-completed' => 'send_mail_order_status_update_to_completed',
53 40 // Cancelled order
54 - 'learn-press/order/status-cancelled' => [
55 - LP_Email_Cancelled_Order_User::class => LP_PLUGIN_PATH . 'inc/emails/student/class-lp-email-cancelled-order-user.php',
56 - LP_Email_Cancelled_Order_Admin::class => LP_PLUGIN_PATH . 'inc/emails/admin/class-lp-email-cancelled-order-admin.php',
57 - LP_Email_Cancelled_Order_Guest::class => LP_PLUGIN_PATH . 'inc/emails/instructor/class-lp-email-cancelled-order-guest.php',
58 - LP_Email_Cancelled_Order_Instructor::class => LP_PLUGIN_PATH . 'inc/emails/instructor/class-lp-email-cancelled-order-instructor.php',
59 - ],
60 -
41 + 'learn-press/order/status-cancelled' => 'send_mail_order_status_update_to_cancelled',
42 + // Refunded order
43 + 'learn-press/order/status-refunded' => 'send_mail_order_status_update_to_refunded',
44 + // Refund requested
45 + 'learn-press/order/refund-requested' => 'send_mail_order_refund_requested',
61 46 // Finished course
62 - 'learn-press/user-course-finished' => [
63 - LP_Email_Finished_Course_Admin::class => LP_PLUGIN_PATH . 'inc/emails/admin/class-lp-email-finished-course-admin.php',
64 - LP_Email_Finished_Course_User::class => LP_PLUGIN_PATH . 'inc/emails/student/class-lp-email-finished-course-user.php',
65 - LP_Email_Finished_Course_Instructor::class => LP_PLUGIN_PATH . 'inc/emails/instructor/class-lp-email-finished-course-instructor.php',
66 - ],
67 -
68 - // User become a teacher
69 - 'learn-press/become-a-teacher-sent' => [
70 - LP_Email_Become_An_Instructor::class => LP_PLUGIN_PATH . 'inc/emails/admin/class-lp-email-become-an-instructor.php',
71 - ],
72 - 'learn-press/user-become-a-teacher-accept' => [
73 - LP_Email_Instructor_Accepted::class => LP_PLUGIN_PATH . 'inc/emails/instructor/class-lp-email-instructor-accepted.php',
74 - ],
75 - 'learn-press/user-become-a-teacher-deny' => [
76 - LP_Email_Instructor_Denied::class => LP_PLUGIN_PATH . 'inc/emails/instructor/class-lp-email-instructor-denied.php',
77 - ],
47 + 'learn-press/user-course-finished' => 'send_mail_user_course_finished',
78 48 ]
79 49 );
80 50
81 51 foreach ( $this->actions as $tag_hook => $action ) {
82 - add_action( $tag_hook, array( $this, 'handle_send_email_on_background' ), 10, 10 );
52 + add_action( $tag_hook, array( $this, 'handle_send_email_on_background' ), 11, 10 );
83 53 }
84 - }
85 54
86 - protected function include() {
55 + // Override message change password
56 + add_filter( 'retrieve_password_notification_email', array( $this, 'retrieve_password_message' ), 11, 4 );
87 57 }
88 58
89 59 /**
90 60 * Call background email
@@ -95,19 +65,28 @@
95 65 * @version 1.0.0
96 66 */
97 67 public function handle_send_email_on_background() {
98 68 $args = func_get_args();
69 + $args = array_merge( $args, [ 'params_request' => $_REQUEST ] );
99 70 $email_bg = LP_Background_Single_Email::instance();
100 71 $current_filter = current_filter();
101 72
102 73 try {
103 - if ( isset( $this->actions[ $current_filter ] ) && is_array( $this->actions[ $current_filter ] ) ) {
104 - foreach ( $this->actions[ $current_filter ] as $class_email => $path_file ) {
74 + if ( isset( $this->actions[ $current_filter ] ) ) {
75 + if ( is_string( $this->actions[ $current_filter ] ) ) { // For new declaration, only string callback
105 76 $data_send = [
106 - 'params' => $args,
107 - 'class_name' => $class_email,
77 + 'params' => $args,
78 + 'lp-load-ajax' => $this->actions[ $current_filter ],
108 79 ];
109 - $email_bg->data( $data_send )->dispatch();
80 + LPBackgroundAjax::handle( $data_send );
81 + } elseif ( is_array( $this->actions[ $current_filter ] ) ) { // For old declaration, has array
82 + foreach ( $this->actions[ $current_filter ] as $class_email => $path_file ) {
83 + $data_send = [
84 + 'params' => $args,
85 + 'class_name' => $class_email,
86 + ];
87 + $email_bg->data( $data_send )->dispatch();
88 + }
110 89 }
111 90 }
112 91 } catch ( Throwable $e ) {
113 92 error_log( $e->getMessage() );
@@ -114,8 +93,46 @@
114 93 }
115 94 }
116 95
117 96 /**
97 + * Override message reset password
98 + *
99 + * @param array $data_mail
100 + * @param string $key
101 + * @param string $user_login
102 + * @param WP_User $user_data
103 + *
104 + * @return array
105 + * @version 1.0.1
106 + * @since 4.2.6.9
107 + */
108 + public function retrieve_password_message( $data_mail, $key, $user_login, $user_data ) {
109 + try {
110 + include_once LP_PLUGIN_PATH . 'inc/emails/types/class-lp-email-reset-password.php';
111 + $email_reset_pass = new LP_Email_Reset_Password();
112 + if ( ! $email_reset_pass->enable ) {
113 + return $data_mail;
114 + }
115 +
116 + $email_reset_pass = new LP_Email_Reset_Password();
117 + $params = [
118 + 'user_login' => $user_login,
119 + 'reset_key' => $key,
120 + ];
121 + $email_reset_pass->set_data_content( $params );
122 + $message = $email_reset_pass->get_content();
123 + $message = apply_filters( 'learn-press/email-content', $email_reset_pass->apply_style_inline( $message ), $this );
124 + $data_mail['message'] = $message;
125 + $data_mail['subject'] = $email_reset_pass->get_subject();
126 + $data_mail['headers'] = $email_reset_pass->get_headers();
127 + } catch ( Throwable $e ) {
128 + error_log( $e->getMessage() );
129 + }
130 +
131 + return $data_mail;
132 + }
133 +
134 + /**
118 135 * @return LP_Email_Hooks
119 136 */
120 137 public static function instance(): self {
121 138 if ( is_null( self::$instance ) ) {
@@ -127,5 +144,4 @@
127 144 }
128 145
129 146 LP_Email_Hooks::instance();
130 147 }
131 -