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 / Ajax / SendEmailAjax.php

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

452 lines 10.9 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_Email_Refund_Request_Order_Admin;
39 use LP_Email_Refunded_Order_Admin;
40 use LP_Email_Refunded_Order_Instructor;
41 use LP_Email_Refunded_Order_User;
42 use LP_Helper;
43 use LP_REST_Response;
44 use Throwable;
45
46 class SendEmailAjax extends AbstractAjax {
47 /**
48 * Send mail when order status update to complete
49 *
50 * @since 4.2.9.1
51 * @version 1.0.1
52 */
53 public function send_mail_order_status_pending_to_processing() {
54 $response = new LP_REST_Response();
55
56 try {
57 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
58
59 $email_classes = apply_filters(
60 'learn-press/order-status-pending-to-processing/send-mail',
61 [
62 LP_Email_New_Order_Admin::class,
63 LP_Email_New_Order_User::class,
64 LP_Email_New_Order_Instructor::class,
65 LP_Email_New_Order_Guest::class,
66 LP_Email_Processing_Order_User::class,
67 LP_Email_Processing_Order_Guest::class,
68 ]
69 );
70
71 foreach ( $email_classes as $email_class ) {
72 if ( class_exists( $email_class ) ) {
73 $email = new $email_class();
74 /** @var LP_Email $email */
75 $email->handle( $data_send );
76 }
77 }
78 } catch ( Throwable $e ) {
79 $response->status = 'error';
80 $response->message = $e->getMessage();
81 }
82
83 wp_send_json( $response );
84 }
85
86 /**
87 * Send mail when order status update to complete
88 *
89 * @since 4.2.9.1
90 * @version 1.0.1
91 */
92 public function send_mail_order_status_pending_to_completed() {
93 $response = new LP_REST_Response();
94
95 try {
96 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
97
98 $email_classes = apply_filters(
99 'learn-press/order-status-pending-to-completed/send-mail',
100 [
101 LP_Email_New_Order_Admin::class,
102 LP_Email_New_Order_User::class,
103 LP_Email_New_Order_Instructor::class,
104 LP_Email_New_Order_Guest::class,
105 ]
106 );
107
108 foreach ( $email_classes as $email_class ) {
109 if ( class_exists( $email_class ) ) {
110 $email = new $email_class();
111 /** @var LP_Email $email */
112 $email->handle( $data_send );
113 }
114 }
115 } catch ( Throwable $e ) {
116 $response->status = 'error';
117 $response->message = $e->getMessage();
118 }
119
120 wp_send_json( $response );
121 }
122
123 /**
124 * Send mail when order status update to complete
125 *
126 * @since 4.2.9.1
127 * @version 1.0.1
128 */
129 public function send_mail_order_status_update_to_completed() {
130 $response = new LP_REST_Response();
131
132 try {
133 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
134
135 $email_classes = apply_filters(
136 'learn-press/order-status-update-to-completed/send-mail',
137 [
138 LP_Email_Completed_Order_Admin::class,
139 LP_Email_Completed_Order_User::class,
140 LP_Email_Completed_Order_Guest::class,
141 ]
142 );
143
144 foreach ( $email_classes as $email_class ) {
145 if ( class_exists( $email_class ) ) {
146 $email = new $email_class();
147 /** @var LP_Email $email */
148 $email->handle( $data_send );
149 }
150 }
151 } catch ( Throwable $e ) {
152 $response->status = 'error';
153 $response->message = $e->getMessage();
154 }
155
156 wp_send_json( $response );
157 }
158
159 /**
160 * Send mail when order status update to cancel
161 *
162 * @since 4.2.9.1
163 * @version 1.0.1
164 */
165 public function send_mail_order_status_update_to_cancelled() {
166 $response = new LP_REST_Response();
167
168 try {
169 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
170
171 $email_classes = apply_filters(
172 'learn-press/order-status-update-to-cancelled/send-mail',
173 [
174 LP_Email_Cancelled_Order_User::class,
175 LP_Email_Cancelled_Order_Admin::class,
176 LP_Email_Cancelled_Order_Guest::class,
177 LP_Email_Cancelled_Order_Instructor::class,
178 ]
179 );
180
181 foreach ( $email_classes as $email_class ) {
182 if ( class_exists( $email_class ) ) {
183 $email = new $email_class();
184 /** @var LP_Email $email */
185 $email->handle( $data_send );
186 }
187 }
188 } catch ( Throwable $e ) {
189 $response->status = 'error';
190 $response->message = $e->getMessage();
191 }
192
193 wp_send_json( $response );
194 }
195
196 /**
197 * Send mail when order status update to refunded.
198 *
199 * @since 4.3.4
200 * @version 1.0.0
201 */
202 public function send_mail_order_status_update_to_refunded() {
203 $response = new LP_REST_Response();
204
205 try {
206 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
207
208 $email_classes = apply_filters(
209 'learn-press/order-status-update-to-refunded/send-mail',
210 [
211 LP_Email_Refunded_Order_User::class,
212 LP_Email_Refunded_Order_Admin::class,
213 LP_Email_Refunded_Order_Instructor::class,
214 ]
215 );
216
217 foreach ( $email_classes as $email_class ) {
218 if ( class_exists( $email_class ) ) {
219 $email = new $email_class();
220 /** @var LP_Email $email */
221 $email->handle( $data_send );
222 }
223 }
224 } catch ( Throwable $e ) {
225 $response->status = 'error';
226 $response->message = $e->getMessage();
227 }
228
229 wp_send_json( $response );
230 }
231
232 /**
233 * Send mail when order has a refund request from user.
234 *
235 * @since 4.3.4
236 * @version 1.0.0
237 */
238 public function send_mail_order_refund_requested() {
239 $response = new LP_REST_Response();
240
241 try {
242 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
243
244 $email_classes = apply_filters(
245 'learn-press/order-refund-requested/send-mail',
246 [
247 LP_Email_Refund_Request_Order_Admin::class,
248 ]
249 );
250
251 foreach ( $email_classes as $email_class ) {
252 if ( class_exists( $email_class ) ) {
253 $email = new $email_class();
254 /** @var LP_Email $email */
255 $email->handle( $data_send );
256 }
257 }
258 } catch ( Throwable $e ) {
259 $response->status = 'error';
260 $response->message = $e->getMessage();
261 }
262
263 wp_send_json( $response );
264 }
265
266 /**
267 * Send mails for case multiple users finish courses
268 * Order has many users, courses change status to completed
269 *
270 * @throws Exception
271 * @version 1.0.1
272 * @since 4.2.9.1
273 */
274 public function send_mail_users_enrolled_courses() {
275 $user_course_ids = LP_Helper::sanitize_params_submitted( $_POST['user_course_ids'] ?? [] );
276
277 $email_classes = apply_filters(
278 'learn-press/users-enrolled-courses/send-mail',
279 [
280 LP_Email_Enrolled_Course_User::class,
281 LP_Email_Enrolled_Course_Admin::class,
282 LP_Email_Enrolled_Course_Instructor::class,
283 ]
284 );
285
286 foreach ( $user_course_ids as $user_course_id ) {
287 $user_id = $user_course_id['user_id'] ?? 0;
288 $course_id = $user_course_id['course_id'] ?? 0;
289 $userCourseModel = UserCourseModel::find( $user_id, $course_id, true );
290 if ( ! $userCourseModel ) {
291 continue;
292 }
293
294 $data_send = [
295 $userCourseModel->ref_id,
296 $userCourseModel->item_id,
297 $userCourseModel->user_id,
298 ];
299
300 foreach ( $email_classes as $email_class ) {
301 if ( class_exists( $email_class ) ) {
302 $email = new $email_class();
303 /** @var LP_Email $email */
304 $email->handle( $data_send );
305 }
306 }
307 }
308 }
309
310 /**
311 * Send mail for case a user enrolled a course.
312 *
313 * @throws Exception
314 * @version 1.0.1
315 * @since 4.2.9.1
316 */
317 public function send_mail_user_enrolled_course() {
318 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
319
320 $email_classes = apply_filters(
321 'learn-press/user-enrolled-course/send-mail',
322 [
323 LP_Email_Enrolled_Course_User::class,
324 LP_Email_Enrolled_Course_Admin::class,
325 LP_Email_Enrolled_Course_Instructor::class,
326 ]
327 );
328
329 foreach ( $email_classes as $email_class ) {
330 if ( class_exists( $email_class ) ) {
331 $email = new $email_class();
332 /** @var LP_Email $email */
333 $email->handle( $data_send );
334 }
335 }
336 }
337
338 /**
339 * Send mail when user finish course
340 *
341 * @since 4.2.9.1
342 * @version 1.0.1
343 */
344 public function send_mail_user_course_finished() {
345 $response = new LP_REST_Response();
346
347 try {
348 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
349
350 $email_classes = apply_filters(
351 'learn-press/user-finished-course/send-mail',
352 [
353 LP_Email_Finished_Course_Admin::class,
354 LP_Email_Finished_Course_User::class,
355 LP_Email_Finished_Course_Instructor::class,
356 ]
357 );
358
359 foreach ( $email_classes as $email_class ) {
360 if ( class_exists( $email_class ) ) {
361 $email = new $email_class();
362 /** @var LP_Email $email */
363 $email->handle( $data_send );
364 }
365 }
366 } catch ( Throwable $e ) {
367 $response->status = 'error';
368 $response->message = $e->getMessage();
369 }
370
371 wp_send_json( $response );
372 }
373
374 /**
375 * Send mail when user request to become a teacher
376 *
377 * @since 4.2.9.1
378 * @version 1.0.0
379 */
380 public function send_mail_become_a_teacher_request() {
381 $response = new LP_REST_Response();
382
383 try {
384 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
385
386 $email = new LP_Email_Become_An_Instructor();
387 $email->handle( $data_send );
388 } catch ( Throwable $e ) {
389 $response->status = 'error';
390 $response->message = $e->getMessage();
391 }
392
393 wp_send_json( $response );
394 }
395
396 /**
397 * Send mail when admin accept user become a teacher
398 *
399 * @since 4.2.9.1
400 * @version 1.0.1
401 */
402 public function send_mail_become_a_teacher_accept() {
403 $response = new LP_REST_Response();
404
405 try {
406 // Check permission
407 if ( ! current_user_can( UserModel::ROLE_ADMINISTRATOR ) ) {
408 return;
409 }
410
411 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
412
413 $email = new LP_Email_Instructor_Accepted();
414 $email->handle( $data_send );
415 } catch ( Throwable $e ) {
416 $response->status = 'error';
417 $response->message = $e->getMessage();
418 LP_Debug::error_log( $e );
419 }
420
421 wp_send_json( $response );
422 }
423
424 /**
425 * Send mail when admin deny user become a teacher
426 *
427 * @since 4.2.9.1
428 * @version 1.0.0
429 */
430 public function send_mail_become_a_teacher_deny() {
431 $response = new LP_REST_Response();
432
433 try {
434 // Check permission
435 if ( ! current_user_can( UserModel::ROLE_ADMINISTRATOR ) ) {
436 return;
437 }
438
439 $data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
440
441 $email = new LP_Email_Instructor_Denied();
442 $email->handle( $data_send );
443 } catch ( Throwable $e ) {
444 $response->status = 'error';
445 $response->message = $e->getMessage();
446 LP_Debug::error_log( $e );
447 }
448
449 wp_send_json( $response );
450 }
451 }
452