PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.3.9.1
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.3.9.1
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 / Ajax / SendEmailAjax.php

SendEmailAjax.php in LearnPress – WordPress LMS Plugin for Create and Sell Online Courses 4.3.9.1, at inc/Ajax/SendEmailAjax.php

378 lines 9.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * class SendEmailAjax
4 *
5 * @since 4.2.9.1
6 * @version 1.0.0
7 */
8
9 namespace LearnPress\Ajax;
10
11 use Exception;
12 use LearnPress\Models\UserItems\UserCourseModel;
13 use LearnPress\Models\UserModel;
14 use LP_Debug;
15 use LP_Email;
16 use LP_Email_Become_An_Instructor;
17 use LP_Email_Cancelled_Order_Admin;
18 use LP_Email_Cancelled_Order_Guest;
19 use LP_Email_Cancelled_Order_Instructor;
20 use LP_Email_Cancelled_Order_User;
21 use LP_Email_Completed_Order_Admin;
22 use LP_Email_Completed_Order_Guest;
23 use LP_Email_Completed_Order_User;
24 use LP_Email_Enrolled_Course_Admin;
25 use LP_Email_Enrolled_Course_Instructor;
26 use LP_Email_Enrolled_Course_User;
27 use LP_Email_Finished_Course_Admin;
28 use LP_Email_Finished_Course_Instructor;
29 use LP_Email_Finished_Course_User;
30 use LP_Email_Instructor_Accepted;
31 use LP_Email_Instructor_Denied;
32 use LP_Email_New_Order_Admin;
33 use LP_Email_New_Order_Guest;
34 use LP_Email_New_Order_Instructor;
35 use LP_Email_New_Order_User;
36 use LP_Email_Processing_Order_Guest;
37 use LP_Email_Processing_Order_User;
38 use LP_Helper;
39 use LP_REST_Response;
40 use Throwable;
41
42 class SendEmailAjax extends AbstractAjax {
43 /**
44 * Send mail when order status update to complete
45 *
46 * @since 4.2.9.1
47 * @version 1.0.1
48 */
49 public function send_mail_order_status_pending_to_processing() {
50 $response = new LP_REST_Response();
51
52 try {
53 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
54
55 $email_classes = apply_filters(
56 'learn-press/order-status-pending-to-processing/send-mail',
57 [
58 LP_Email_New_Order_Admin::class,
59 LP_Email_New_Order_User::class,
60 LP_Email_New_Order_Instructor::class,
61 LP_Email_New_Order_Guest::class,
62 LP_Email_Processing_Order_User::class,
63 LP_Email_Processing_Order_Guest::class,
64 ]
65 );
66
67 foreach ( $email_classes as $email_class ) {
68 if ( class_exists( $email_class ) ) {
69 $email = new $email_class();
70 /** @var LP_Email $email */
71 $email->handle( $data_send );
72 }
73 }
74 } catch ( Throwable $e ) {
75 $response->status = 'error';
76 $response->message = $e->getMessage();
77 }
78
79 wp_send_json( $response );
80 }
81
82 /**
83 * Send mail when order status update to complete
84 *
85 * @since 4.2.9.1
86 * @version 1.0.1
87 */
88 public function send_mail_order_status_pending_to_completed() {
89 $response = new LP_REST_Response();
90
91 try {
92 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
93
94 $email_classes = apply_filters(
95 'learn-press/order-status-pending-to-completed/send-mail',
96 [
97 LP_Email_New_Order_Admin::class,
98 LP_Email_New_Order_User::class,
99 LP_Email_New_Order_Instructor::class,
100 LP_Email_New_Order_Guest::class,
101 ]
102 );
103
104 foreach ( $email_classes as $email_class ) {
105 if ( class_exists( $email_class ) ) {
106 $email = new $email_class();
107 /** @var LP_Email $email */
108 $email->handle( $data_send );
109 }
110 }
111 } catch ( Throwable $e ) {
112 $response->status = 'error';
113 $response->message = $e->getMessage();
114 }
115
116 wp_send_json( $response );
117 }
118
119 /**
120 * Send mail when order status update to complete
121 *
122 * @since 4.2.9.1
123 * @version 1.0.1
124 */
125 public function send_mail_order_status_update_to_completed() {
126 $response = new LP_REST_Response();
127
128 try {
129 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
130
131 $email_classes = apply_filters(
132 'learn-press/order-status-update-to-completed/send-mail',
133 [
134 LP_Email_Completed_Order_Admin::class,
135 LP_Email_Completed_Order_User::class,
136 LP_Email_Completed_Order_Guest::class,
137 ]
138 );
139
140 foreach ( $email_classes as $email_class ) {
141 if ( class_exists( $email_class ) ) {
142 $email = new $email_class();
143 /** @var LP_Email $email */
144 $email->handle( $data_send );
145 }
146 }
147 } catch ( Throwable $e ) {
148 $response->status = 'error';
149 $response->message = $e->getMessage();
150 }
151
152 wp_send_json( $response );
153 }
154
155 /**
156 * Send mail when order status update to cancel
157 *
158 * @since 4.2.9.1
159 * @version 1.0.1
160 */
161 public function send_mail_order_status_update_to_cancelled() {
162 $response = new LP_REST_Response();
163
164 try {
165 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
166
167 $email_classes = apply_filters(
168 'learn-press/order-status-update-to-cancelled/send-mail',
169 [
170 LP_Email_Cancelled_Order_User::class,
171 LP_Email_Cancelled_Order_Admin::class,
172 LP_Email_Cancelled_Order_Guest::class,
173 LP_Email_Cancelled_Order_Instructor::class,
174 ]
175 );
176
177 foreach ( $email_classes as $email_class ) {
178 if ( class_exists( $email_class ) ) {
179 $email = new $email_class();
180 /** @var LP_Email $email */
181 $email->handle( $data_send );
182 }
183 }
184 } catch ( Throwable $e ) {
185 $response->status = 'error';
186 $response->message = $e->getMessage();
187 }
188
189 wp_send_json( $response );
190 }
191
192 /**
193 * Send mails for case multiple users finish courses
194 * Order has many users, courses change status to completed
195 *
196 * @throws Exception
197 * @version 1.0.1
198 * @since 4.2.9.1
199 */
200 public function send_mail_users_enrolled_courses() {
201 $user_course_ids = LP_Helper::sanitize_params_submitted( $_POST['user_course_ids'] ?? [] );
202
203 $email_classes = apply_filters(
204 'learn-press/users-enrolled-courses/send-mail',
205 [
206 LP_Email_Enrolled_Course_User::class,
207 LP_Email_Enrolled_Course_Admin::class,
208 LP_Email_Enrolled_Course_Instructor::class,
209 ]
210 );
211
212 foreach ( $user_course_ids as $user_course_id ) {
213 $user_id = $user_course_id['user_id'] ?? 0;
214 $course_id = $user_course_id['course_id'] ?? 0;
215 $userCourseModel = UserCourseModel::find( $user_id, $course_id, true );
216 if ( ! $userCourseModel ) {
217 continue;
218 }
219
220 $data_send = [
221 $userCourseModel->ref_id,
222 $userCourseModel->item_id,
223 $userCourseModel->user_id,
224 ];
225
226 foreach ( $email_classes as $email_class ) {
227 if ( class_exists( $email_class ) ) {
228 $email = new $email_class();
229 /** @var LP_Email $email */
230 $email->handle( $data_send );
231 }
232 }
233 }
234 }
235
236 /**
237 * Send mail for case a user enrolled a course.
238 *
239 * @throws Exception
240 * @version 1.0.1
241 * @since 4.2.9.1
242 */
243 public function send_mail_user_enrolled_course() {
244 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
245
246 $email_classes = apply_filters(
247 'learn-press/user-enrolled-course/send-mail',
248 [
249 LP_Email_Enrolled_Course_User::class,
250 LP_Email_Enrolled_Course_Admin::class,
251 LP_Email_Enrolled_Course_Instructor::class,
252 ]
253 );
254
255 foreach ( $email_classes as $email_class ) {
256 if ( class_exists( $email_class ) ) {
257 $email = new $email_class();
258 /** @var LP_Email $email */
259 $email->handle( $data_send );
260 }
261 }
262 }
263
264 /**
265 * Send mail when user finish course
266 *
267 * @since 4.2.9.1
268 * @version 1.0.1
269 */
270 public function send_mail_user_course_finished() {
271 $response = new LP_REST_Response();
272
273 try {
274 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
275
276 $email_classes = apply_filters(
277 'learn-press/user-finished-course/send-mail',
278 [
279 LP_Email_Finished_Course_Admin::class,
280 LP_Email_Finished_Course_User::class,
281 LP_Email_Finished_Course_Instructor::class,
282 ]
283 );
284
285 foreach ( $email_classes as $email_class ) {
286 if ( class_exists( $email_class ) ) {
287 $email = new $email_class();
288 /** @var LP_Email $email */
289 $email->handle( $data_send );
290 }
291 }
292 } catch ( Throwable $e ) {
293 $response->status = 'error';
294 $response->message = $e->getMessage();
295 }
296
297 wp_send_json( $response );
298 }
299
300 /**
301 * Send mail when user request to become a teacher
302 *
303 * @since 4.2.9.1
304 * @version 1.0.0
305 */
306 public function send_mail_become_a_teacher_request() {
307 $response = new LP_REST_Response();
308
309 try {
310 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
311
312 $email = new LP_Email_Become_An_Instructor();
313 $email->handle( $data_send );
314 } catch ( Throwable $e ) {
315 $response->status = 'error';
316 $response->message = $e->getMessage();
317 }
318
319 wp_send_json( $response );
320 }
321
322 /**
323 * Send mail when admin accept user become a teacher
324 *
325 * @since 4.2.9.1
326 * @version 1.0.1
327 */
328 public function send_mail_become_a_teacher_accept() {
329 $response = new LP_REST_Response();
330
331 try {
332 // Check permission
333 if ( ! current_user_can( UserModel::ROLE_ADMINISTRATOR ) ) {
334 return;
335 }
336
337 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
338
339 $email = new LP_Email_Instructor_Accepted();
340 $email->handle( $data_send );
341 } catch ( Throwable $e ) {
342 $response->status = 'error';
343 $response->message = $e->getMessage();
344 LP_Debug::error_log( $e );
345 }
346
347 wp_send_json( $response );
348 }
349
350 /**
351 * Send mail when admin deny user become a teacher
352 *
353 * @since 4.2.9.1
354 * @version 1.0.0
355 */
356 public function send_mail_become_a_teacher_deny() {
357 $response = new LP_REST_Response();
358
359 try {
360 // Check permission
361 if ( ! current_user_can( UserModel::ROLE_ADMINISTRATOR ) ) {
362 return;
363 }
364
365 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
366
367 $email = new LP_Email_Instructor_Denied();
368 $email->handle( $data_send );
369 } catch ( Throwable $e ) {
370 $response->status = 'error';
371 $response->message = $e->getMessage();
372 LP_Debug::error_log( $e );
373 }
374
375 wp_send_json( $response );
376 }
377 }
378