PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.9
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.9
4.4.9 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 All 140 releases
← All changes | inc/rest-api/v1/admin/class-lp-admin-rest-course-controller.php +41 -9 4.1.7.2 → 4.4.9 View file →
@@ -22,9 +22,9 @@
22 22 'get_final_quiz' => array(
23 23 array(
24 24 'methods' => WP_REST_Server::CREATABLE,
25 25 'callback' => array( $this, 'get_final_quiz' ),
26 - 'permission_callback' => function() {
26 + 'permission_callback' => function () {
27 27 return current_user_can( 'edit_posts' );
28 28 },
29 29 ),
30 30 ),
@@ -38,13 +38,14 @@
38 38 *
39 39 * @return void
40 40 */
41 41 public function get_final_quiz( WP_REST_Request $request ) {
42 - $params = $request->get_params();
43 - $course_id = $params['courseId'] ?? false;
44 - $response = new LP_REST_Response();
45 - $response->data = '';
46 - $final_quiz = '';
42 + $params = $request->get_params();
43 + $course_id = $params['courseId'] ?? false;
44 + $is_course_builder = ! empty( $params['is_course_builder'] ) || ! empty( $params['isCourseBuilder'] );
45 + $response = new LP_REST_Response();
46 + $response->data = '';
47 + $final_quiz = '';
47 48
48 49 try {
49 50 if ( empty( $course_id ) ) {
50 51 throw new Exception( esc_html__( 'No Course ID available!', 'learnpress' ) );
@@ -68,12 +69,18 @@
68 69
69 70 if ( ! empty( $final_quiz ) ) {
70 71 update_post_meta( $course_id, '_lp_final_quiz', $final_quiz );
71 72 $passing_grade = get_post_meta( $final_quiz, '_lp_passing_grade', true );
73 + if ( '' === (string) $passing_grade ) {
74 + $quiz_model = \LearnPress\Models\QuizPostModel::find( absint( $final_quiz ), true );
75 + if ( $quiz_model ) {
76 + $passing_grade = $quiz_model->get_passing_grade();
77 + } else {
78 + $passing_grade = 80;
79 + }
80 + }
81 + $url = $this->get_final_quiz_edit_link( $final_quiz, $course_id, $is_course_builder );
72 82
73 - $post_type_object = get_post_type_object( LP_QUIZ_CPT );
74 - $url = admin_url( sprintf( $post_type_object->_edit_link . '&action=edit#_lp_passing_grade', $final_quiz ) );
75 -
76 83 ob_start();
77 84 ?>
78 85 <div class="lp-metabox-evaluate-final_quiz__message">
79 86 <?php printf( esc_html__( 'Passing Grade: %s', 'learpress' ), $passing_grade . '%' ); ?>
@@ -91,6 +98,31 @@
91 98 $response->message = $e->getMessage();
92 99 }
93 100
94 101 return rest_ensure_response( $response );
102 + }
103 +
104 + /**
105 + * Build edit link for final quiz in course settings.
106 + *
107 + * @param int $final_quiz_id
108 + * @param int $course_id
109 + * @param bool $is_course_builder
110 + *
111 + * @return string
112 + */
113 + protected function get_final_quiz_edit_link( int $final_quiz_id, int $course_id, bool $is_course_builder = false ): string {
114 + $post_type_object = get_post_type_object( LP_QUIZ_CPT );
115 + $url = admin_url( sprintf( $post_type_object->_edit_link . '&action=edit#_lp_passing_grade', $final_quiz_id ) );
116 +
117 + if ( $is_course_builder && class_exists( '\LearnPress\CourseBuilder\CourseBuilder' ) ) {
118 + $url = \LearnPress\CourseBuilder\CourseBuilder::get_tab_link( 'quizzes', absint( $final_quiz_id ), 'settings' ) . '#_lp_passing_grade';
119 + }
120 +
121 + return apply_filters(
122 + 'learn-press/course/meta-box/assessment/final-quiz/edit-link',
123 + $url,
124 + $final_quiz_id,
125 + $course_id
126 + );
95 127 }
96 128 }