| 1 |
<?php |
| 2 |
defined( 'ABSPATH' ) || exit(); |
| 3 |
|
| 4 |
if ( ! class_exists( 'LP_Email_Hooks' ) ) { |
| 5 |
|
| 6 |
/** |
| 7 |
* Class LP_Email_Hooks |
| 8 |
*/ |
| 9 |
class LP_Email_Hooks { |
| 10 |
protected static $instance; |
| 11 |
protected $actions; |
| 12 |
|
| 13 |
protected function __construct() { |
| 14 |
// Define class handle send email with hook corresponding |
| 15 |
$this->actions = apply_filters( |
| 16 |
'learn-press/email-actions', |
| 17 |
[ |
| 18 |
// preview course |
| 19 |
'learn_press_course_submit_rejected', |
| 20 |
'learn_press_course_submit_approved', |
| 21 |
'learn_press_course_submit_for_reviewer', |
| 22 |
|
| 23 |
// 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 |
|
| 39 |
// 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 |
|
| 53 |
// 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 |
|
| 61 |
// 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 |
], |
| 78 |
] |
| 79 |
); |
| 80 |
|
| 81 |
foreach ( $this->actions as $tag_hook => $action ) { |
| 82 |
add_action( $tag_hook, array( $this, 'handle_send_email_on_background' ), 10, 10 ); |
| 83 |
} |
| 84 |
} |
| 85 |
|
| 86 |
protected function include() { |
| 87 |
} |
| 88 |
|
| 89 |
/** |
| 90 |
* Call background email |
| 91 |
* Check hook and call class email corresponding |
| 92 |
* |
| 93 |
* @author tungnx |
| 94 |
* @since 4.1.1 |
| 95 |
* @version 1.0.0 |
| 96 |
*/ |
| 97 |
public function handle_send_email_on_background() { |
| 98 |
$args = func_get_args(); |
| 99 |
$email_bg = LP_Background_Single_Email::instance(); |
| 100 |
$current_filter = current_filter(); |
| 101 |
|
| 102 |
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 ) { |
| 105 |
$data_send = [ |
| 106 |
'params' => $args, |
| 107 |
'class_name' => $class_email, |
| 108 |
]; |
| 109 |
$email_bg->data( $data_send )->dispatch(); |
| 110 |
} |
| 111 |
} |
| 112 |
} catch ( Throwable $e ) { |
| 113 |
error_log( $e->getMessage() ); |
| 114 |
} |
| 115 |
} |
| 116 |
|
| 117 |
/** |
| 118 |
* @return LP_Email_Hooks |
| 119 |
*/ |
| 120 |
public static function instance(): self { |
| 121 |
if ( is_null( self::$instance ) ) { |
| 122 |
self::$instance = new self(); |
| 123 |
} |
| 124 |
|
| 125 |
return self::$instance; |
| 126 |
} |
| 127 |
} |
| 128 |
|
| 129 |
LP_Email_Hooks::instance(); |
| 130 |
} |
| 131 |
|
| 132 |
|