Skip to content

Commit f520b8c

Browse files
committed
= 4.3.2.9 =
~ Fixed: security. ~ Check permission: QuestionAnswerModel delete. ~ Check permission become a teach send mail accept/deny.
1 parent 57adce4 commit f520b8c

File tree

6 files changed

+55
-10
lines changed

6 files changed

+55
-10
lines changed

inc/Ajax/SendEmailAjax.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
use Exception;
1212
use LearnPress\Models\UserItems\UserCourseModel;
13+
use LearnPress\Models\UserModel;
14+
use LP_Debug;
1315
use LP_Email;
1416
use LP_Email_Become_An_Instructor;
1517
use LP_Email_Cancelled_Order_Admin;
@@ -321,19 +323,25 @@ public function send_mail_become_a_teacher_request() {
321323
* Send mail when admin accept user become a teacher
322324
*
323325
* @since 4.2.9.1
324-
* @version 1.0.0
326+
* @version 1.0.1
325327
*/
326328
public function send_mail_become_a_teacher_accept() {
327329
$response = new LP_REST_Response();
328330

329331
try {
332+
// Check permission
333+
if ( ! current_user_can( UserModel::ROLE_ADMINISTRATOR ) ) {
334+
return;
335+
}
336+
330337
$data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
331338

332339
$email = new LP_Email_Instructor_Accepted();
333340
$email->handle( $data_send );
334341
} catch ( Throwable $e ) {
335342
$response->status = 'error';
336343
$response->message = $e->getMessage();
344+
LP_Debug::error_log( $e );
337345
}
338346

339347
wp_send_json( $response );
@@ -349,13 +357,19 @@ public function send_mail_become_a_teacher_deny() {
349357
$response = new LP_REST_Response();
350358

351359
try {
360+
// Check permission
361+
if ( ! current_user_can( UserModel::ROLE_ADMINISTRATOR ) ) {
362+
return;
363+
}
364+
352365
$data_send = LP_Helper::sanitize_params_submitted( $_POST['params'] ?? [] );
353366

354367
$email = new LP_Email_Instructor_Denied();
355368
$email->handle( $data_send );
356369
} catch ( Throwable $e ) {
357370
$response->status = 'error';
358371
$response->message = $e->getMessage();
372+
LP_Debug::error_log( $e );
359373
}
360374

361375
wp_send_json( $response );

inc/Models/Question/QuestionAnswerModel.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,13 +216,18 @@ public function save() {
216216

217217
/**
218218
* @throws Exception
219+
*
220+
* @since 4.2.9
221+
* @version 1.0.1
219222
*/
220223
public function check_valid_before_delete() {
221224
$questionPostModel = $this->get_question_post_model();
222225
if ( ! $questionPostModel ) {
223226
throw new Exception( __( 'Question not found', 'learnpress' ) );
224227
}
225228

229+
$this->check_capabilities_update();
230+
226231
if ( $questionPostModel->get_type() === 'single_choice' || $questionPostModel->get_type() === 'multi_choice' ) {
227232
// For single choice and multiple choice, at least two answer is required.
228233
$filter = new QuestionAnswersFilter();

inc/admin/class-lp-admin.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
* @version 1.0.2
66
*/
77

8+
use LearnPress\Background\LPBackgroundAjax;
89
use LearnPress\Models\CourseModel;
910

1011
defined( 'ABSPATH' ) || exit;
@@ -549,10 +550,30 @@ public function filter_users( $action ) {
549550
$be_teacher = new WP_User( $user_id );
550551
$be_teacher->set_role( LP_TEACHER_ROLE );
551552

553+
/**
554+
* Send email to user when admin accept user become a teacher
555+
* @use SendEmailAjax::send_mail_become_a_teacher_accept
556+
*/
557+
$data_send = [
558+
'params' => [ $user_data->user_email ],
559+
'lp-load-ajax' => 'send_mail_become_a_teacher_accept',
560+
];
561+
LPBackgroundAjax::handle( $data_send );
562+
552563
do_action( 'learn-press/user-become-a-teacher-accept', $user_data->user_email );
553564
wp_redirect( admin_url( 'users.php?lp-action=accepted-request&user_id=' . $user_id ) );
554565
exit();
555566
case 'deny-request':
567+
/**
568+
* Send email to user when admin accept user become a teacher
569+
* @use SendEmailAjax::send_mail_become_a_teacher_deny
570+
*/
571+
$data_send = [
572+
'params' => [ $user_data->user_email ],
573+
'lp-load-ajax' => 'send_mail_become_a_teacher_deny',
574+
];
575+
LPBackgroundAjax::handle( $data_send );
576+
556577
do_action( 'learn-press/user-become-a-teacher-deny', $user_data->user_email );
557578
wp_redirect( admin_url( 'users.php?lp-action=denied-request&user_id=' . $user_id ) );
558579
exit();

inc/class-lp-forms-handler.php

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<?php
22

3+
use LearnPress\Background\LPBackgroundAjax;
4+
35
/**
46
* Class LP_Forms_Handler
57
*
@@ -54,6 +56,17 @@ public static function process_become_teacher() {
5456
$user = get_user_by( 'email', $args['bat_email'] );
5557

5658
update_user_meta( $user->ID, '_requested_become_teacher', 'yes' );
59+
60+
/**
61+
* Send email to admin when user request to become a teacher
62+
* @use SendEmailAjax::send_mail_become_a_teacher_request
63+
*/
64+
$data_send = [
65+
'params' => [ $args ],
66+
'lp-load-ajax' => 'send_mail_become_a_teacher_request',
67+
];
68+
LPBackgroundAjax::handle( $data_send );
69+
5770
do_action( 'learn-press/become-a-teacher-sent', $args );
5871
}
5972

@@ -490,4 +503,3 @@ public static function init() {
490503
self::process_register();
491504
}
492505
}
493-

inc/emails/class-lp-email-hooks.php

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@
1515
* @uses SendEmailAjax::send_mail_order_status_update_to_completed
1616
* @uses SendEmailAjax::send_mail_order_status_update_to_cancelled
1717
* @uses SendEmailAjax::send_mail_user_course_finished
18-
* @uses SendEmailAjax::send_mail_become_a_teacher_request
19-
* @uses SendEmailAjax::send_mail_become_a_teacher_accept
20-
* @uses SendEmailAjax::send_mail_become_a_teacher_deny
2118
*/
2219
class LP_Email_Hooks {
2320
protected static $instance;
@@ -42,10 +39,6 @@ protected function __construct() {
4239
'learn-press/order/status-cancelled' => 'send_mail_order_status_update_to_cancelled',
4340
// Finished course
4441
'learn-press/user-course-finished' => 'send_mail_user_course_finished',
45-
// User become a teacher
46-
'learn-press/become-a-teacher-sent' => 'send_mail_become_a_teacher_request',
47-
'learn-press/user-become-a-teacher-accept' => 'send_mail_become_a_teacher_accept',
48-
'learn-press/user-become-a-teacher-deny' => 'send_mail_become_a_teacher_deny',
4942
]
5043
);
5144

learnpress.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* Plugin URI: https://thimpress.com/learnpress
55
* Description: LearnPress is a WordPress complete solution for creating a Learning Management System (LMS). It can help you to create courses, lessons and quizzes.
66
* Author: ThimPress
7-
* Version: 4.3.2.8
7+
* Version: 4.3.2.9-beta.1
88
* Author URI: http://thimpress.com
99
* Requires at least: 6.0
1010
* Requires PHP: 7.4

0 commit comments

Comments
 (0)