PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.0
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.0
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-finished-course.php

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

164 lines 4.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 use LearnPress\Models\CourseModel;
4 use LearnPress\Models\UserItems\UserCourseModel;
5 use LearnPress\Models\UserModel;
6
7 /**
8 * Class LP_Email_Type_Finished_Course
9 *
10 * @editor tungnx
11 * @modify 4.1.3
12 * @version 3.0.2
13 */
14 class LP_Email_Type_Finished_Course extends LP_Email {
15 /**
16 * @var int $course_id
17 */
18 public $course_id = 0;
19 /**
20 * @var int $course_id
21 */
22 public $user_id = 0;
23 /**
24 * @var CourseModel
25 */
26 public $courseModel;
27 /**
28 * @var UserModel
29 */
30 public $userModel;
31
32 /**
33 * LP_Email_Type_Finished_Course constructor.
34 */
35 public function __construct() {
36 parent::__construct();
37
38 $variable_on_email_support = apply_filters(
39 'lp/email/type-finished-course/variables-support',
40 [
41 '{{course_id}}',
42 '{{course_name}}',
43 '{{course_url}}',
44 '{{user_id}}',
45 '{{user_name}}',
46 '{{user_display_name}}',
47 '{{user_email}}',
48 '{{course_grade}}',
49 '{{course_result_percent}}',
50 ]
51 );
52
53 $this->support_variables = array_merge( $this->support_variables, $variable_on_email_support );
54 }
55
56 /**
57 * Check email enable option
58 * Check param valid: 3 params: $course_id, $user_id, $user_item_id
59 * Set values
60 *
61 * @param array $params
62 * @return bool
63 * @throws Exception
64 */
65 protected function check_and_set( array $params ): bool {
66 if ( ! $this->enable ) {
67 return false;
68 }
69
70 if ( count( $params ) < 2 ) {
71 return false;
72 }
73
74 $course_id = $params[0];
75 $user_id = $params[1];
76
77 $courseModel = CourseModel::find( $course_id, true );
78 $userModel = UserModel::find( $user_id, true );
79 if ( ! $courseModel || ! $userModel ) {
80 return false;
81 }
82
83 $this->course_id = $course_id;
84 $this->user_id = $user_id;
85 $this->courseModel = $courseModel;
86 $this->userModel = $userModel;
87
88 return true;
89 }
90
91 /**
92 * Trigger email.
93 * Receive 3 params: $course_id, $user_id, $user_item_id
94 *
95 * @param array $params
96 * @throws Exception
97 * @since 4.1.1
98 * @version 1.0.1
99 */
100 public function handle( array $params ) {
101 if ( ! $this->check_and_set( $params ) ) {
102 return;
103 }
104
105 $this->set_data_content();
106 if ( $this instanceof LP_Email_Finished_Course_Instructor ) {
107 $courseModel = $this->courseModel;
108 if ( $courseModel instanceof CourseModel ) {
109 $authorModel = $courseModel->get_author_model();
110 if ( $authorModel instanceof UserModel && ! empty( $authorModel->get_email() ) ) {
111 $this->set_receive( $authorModel->get_email() );
112 }
113 }
114 } elseif ( $this instanceof LP_Email_Finished_Course_User ) {
115 $userModel = $this->userModel;
116 if ( $userModel instanceof UserModel && ! empty( $userModel->get_email() ) ) {
117 $this->set_receive( $userModel->get_email() );
118 }
119 }
120
121 $this->send_email();
122 }
123
124 /**
125 * Set variables for content email.
126 * @editor tungnx
127 * @since 4.1.3
128 * @version 1.0.1
129 */
130 public function set_data_content() {
131 $courseModel = $this->courseModel;
132 $userModel = $this->userModel;
133 if ( ! $courseModel instanceof CourseModel
134 || ! $userModel instanceof UserModel ) {
135 return;
136 }
137
138 $userCourseModel = UserCourseModel::find( $userModel->get_id(), $courseModel->get_id(), true );
139 if ( ! $userCourseModel ) {
140 return;
141 }
142
143 $userCourseResult = $userCourseModel->calculate_course_results();
144
145 $this->variables = apply_filters(
146 'lp/email/type-finished-course/variables-mapper',
147 [
148 '{{course_id}}' => $courseModel->get_id(),
149 '{{course_name}}' => $courseModel->get_title(),
150 '{{course_url}}' => $courseModel->get_permalink(),
151 '{{user_id}}' => $userModel->get_id(),
152 '{{user_name}}' => $userModel->get_username(),
153 '{{user_display_name}}' => $userModel->get_display_name(),
154 '{{user_email}}' => $userModel->get_email(),
155 '{{course_grade}}' => $userCourseModel->get_string_i18n( $userCourseModel->get_graduation() ),
156 '{{course_result_percent}}' => $userCourseResult['result'],
157 ]
158 );
159
160 $variables_common = $this->get_common_variables( $this->email_format );
161 $this->variables = array_merge( $this->variables, $variables_common );
162 }
163 }
164