PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.8
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.8
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 4.2.0 All 139 releases
learnpress / inc / emails / types / class-lp-email-type-enrolled-course.php

class-lp-email-type-enrolled-course.php in LearnPress – WordPress LMS Plugin for Create and Sell Online Courses 4.4.8, at inc/emails/types/class-lp-email-type-enrolled-course.php

139 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * LP_Email_Type_Enrolled_Course.
4 *
5 * @author ThimPress
6 * @package Learnpress/Classes
7 * @extends LP_Email
8 * @version 3.1.0
9 * @editor tungnx
10 * @modify 4.1.3 - send email on background
11 */
12
13 /**
14 * Prevent loading this file directly
15 */
16
17 use LearnPress\Models\UserItems\UserCourseModel;
18 use LearnPress\Models\UserModel;
19
20 defined( 'ABSPATH' ) || exit();
21
22 class LP_Email_Type_Enrolled_Course extends LP_Email {
23 /**
24 * @var LP_Order
25 */
26 protected $_order;
27 /**
28 * @var LP_Course
29 */
30 protected $_course;
31 /**
32 * @var UserModel|false
33 */
34 protected $_user;
35
36 /**
37 * LP_Email_Type_Enrolled_Course constructor.
38 */
39 public function __construct() {
40 parent::__construct();
41
42 $variable_on_email_support = apply_filters(
43 'lp/email/enrolled-course/variables-support',
44 [
45 '{{course_id}}',
46 '{{course_name}}',
47 '{{course_url}}',
48 '{{user_id}}',
49 '{{user_name}}',
50 '{{user_email}}',
51 '{{user_display_name}}',
52 ]
53 );
54
55 $this->support_variables = array_merge( $this->support_variables, $variable_on_email_support );
56 }
57
58 /**
59 * Check email enable option
60 * Check param valid: 3 params: order_id, course_id, user_id
61 * Return Order
62 *
63 * @param array $params
64 * @return bool
65 */
66 final public function check_and_set( array $params ): bool {
67 try {
68 if ( count( $params ) < 3 ) {
69 return false;
70 }
71
72 if ( ! $this->enable ) {
73 return false;
74 }
75
76 $order_id = $params[0] ?? 0;
77 $course_id = $params[1] ?? 0;
78 $user_id = $params[2] ?? 0;
79
80 $user = UserModel::find( $user_id, true );
81
82 $filter = new LP_User_Items_Filter();
83 $filter->user_id = $user_id;
84 $filter->item_id = $course_id;
85 $filter->item_type = LP_COURSE_CPT;
86 $filter->ref_type = LP_ORDER_CPT;
87 $filter->ref_id = $order_id;
88 $userCourse = UserCourseModel::get_user_item_model_from_db( $filter );
89
90 if ( LP_COURSE_ENROLLED != $userCourse->status ) {
91 throw new Exception( 'User not enrolled course' );
92 }
93
94 $this->_order = new LP_Order( $order_id );
95 $this->_user = $user;
96 $this->_course = learn_press_get_course( $course_id );
97 } catch ( Throwable $e ) {
98 return false;
99 }
100
101 return true;
102 }
103
104 /**
105 * Set variables for content email.
106 * @editor tungnx
107 * @since 4.1.1
108 */
109 protected function set_data_content() {
110 $username = '';
111 $user_id = 0;
112 $user_display_name = '';
113 if ( ! $this->_user ) {
114 $user_email = $this->_order->get_user_email();
115 } else {
116 $user_id = $this->_user->get_id();
117 $username = $this->_user->get_username();
118 $user_email = $this->_user->get_email();
119 $user_display_name = $this->_user->get_display_name();
120 }
121
122 $this->variables = apply_filters(
123 'lp/email/type-enrolled-course/variables-mapper',
124 [
125 '{{course_id}}' => $this->_course->get_id(),
126 '{{course_name}}' => $this->_course->get_title(),
127 '{{course_url}}' => $this->_course->get_permalink(),
128 '{{user_id}}' => $user_id,
129 '{{user_name}}' => $username,
130 '{{user_email}}' => $user_email,
131 '{{user_display_name}}' => $user_display_name,
132 ]
133 );
134
135 $variables_common = $this->get_common_variables( $this->email_format );
136 $this->variables = array_merge( $this->variables, $variables_common );
137 }
138 }
139