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
← All changes | inc/rest-api/v1/admin/class-lp-admin-rest-course-controller.php +128 -128 4.3.9 → 4.4.8 View file →
@@ -1,128 +1,128 @@
1 -<?php
2 -
3 -/**
4 - * Class LP_REST_Users_Controller
5 - *
6 - * @since 3.3.0
7 - */
8 -class LP_REST_Admin_Course_Controller extends LP_Abstract_REST_Controller {
9 -
10 - public function __construct() {
11 - $this->namespace = 'lp/v1/admin';
12 - $this->rest_base = 'course';
13 -
14 - parent::__construct();
15 - }
16 -
17 - /**
18 - * Register rest routes.
19 - */
20 - public function register_routes() {
21 - $this->routes = array(
22 - 'get_final_quiz' => array(
23 - array(
24 - 'methods' => WP_REST_Server::CREATABLE,
25 - 'callback' => array( $this, 'get_final_quiz' ),
26 - 'permission_callback' => function () {
27 - return current_user_can( 'edit_posts' );
28 - },
29 - ),
30 - ),
31 - );
32 -
33 - parent::register_routes();
34 - }
35 -
36 - /**
37 - * Get Final Quiz in Course Settings.
38 - *
39 - * @return void
40 - */
41 - public function get_final_quiz( WP_REST_Request $request ) {
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 = '';
48 -
49 - try {
50 - if ( empty( $course_id ) ) {
51 - throw new Exception( esc_html__( 'No Course ID available!', 'learnpress' ) );
52 - }
53 -
54 - $course = learn_press_get_course( $course_id );
55 -
56 - if ( ! $course ) {
57 - throw new Exception( esc_html__( 'No Course available!', 'learnpress' ) );
58 - }
59 -
60 - $items = $course->get_item_ids();
61 -
62 - if ( $items ) {
63 - foreach ( $items as $item ) {
64 - if ( learn_press_get_post_type( $item ) === LP_QUIZ_CPT ) {
65 - $final_quiz = $item;
66 - }
67 - }
68 - }
69 -
70 - if ( ! empty( $final_quiz ) ) {
71 - update_post_meta( $course_id, '_lp_final_quiz', $final_quiz );
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 );
82 -
83 - ob_start();
84 - ?>
85 - <div class="lp-metabox-evaluate-final_quiz__message">
86 - <?php printf( esc_html__( 'Passing Grade: %s', 'learpress' ), $passing_grade . '%' ); ?>
87 - -
88 - <?php printf( esc_html__( 'Edit: %s', 'learnpress' ), '<a href="' . esc_url_raw( $url ) . '">' . get_the_title( $final_quiz ) . '</a>' ); ?>
89 - </div>
90 - <?php
91 - $response->status = 'success';
92 - $response->data = ob_get_clean();
93 - } else {
94 - delete_post_meta( $course_id, '_lp_final_quiz' );
95 - $response->data = '<div class="lp-metabox-evaluate-final_quiz__message lp-metabox-evaluate-final_quiz__message-error">' . esc_html__( 'No Quiz in this course!', 'learnpress' ) . '</div>';
96 - }
97 - } catch ( Exception $e ) {
98 - $response->message = $e->getMessage();
99 - }
100 -
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 - );
127 - }
128 -}
1 +<?php
2 +
3 +/**
4 + * Class LP_REST_Users_Controller
5 + *
6 + * @since 3.3.0
7 + */
8 +class LP_REST_Admin_Course_Controller extends LP_Abstract_REST_Controller {
9 +
10 + public function __construct() {
11 + $this->namespace = 'lp/v1/admin';
12 + $this->rest_base = 'course';
13 +
14 + parent::__construct();
15 + }
16 +
17 + /**
18 + * Register rest routes.
19 + */
20 + public function register_routes() {
21 + $this->routes = array(
22 + 'get_final_quiz' => array(
23 + array(
24 + 'methods' => WP_REST_Server::CREATABLE,
25 + 'callback' => array( $this, 'get_final_quiz' ),
26 + 'permission_callback' => function () {
27 + return current_user_can( 'edit_posts' );
28 + },
29 + ),
30 + ),
31 + );
32 +
33 + parent::register_routes();
34 + }
35 +
36 + /**
37 + * Get Final Quiz in Course Settings.
38 + *
39 + * @return void
40 + */
41 + public function get_final_quiz( WP_REST_Request $request ) {
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 = '';
48 +
49 + try {
50 + if ( empty( $course_id ) ) {
51 + throw new Exception( esc_html__( 'No Course ID available!', 'learnpress' ) );
52 + }
53 +
54 + $course = learn_press_get_course( $course_id );
55 +
56 + if ( ! $course ) {
57 + throw new Exception( esc_html__( 'No Course available!', 'learnpress' ) );
58 + }
59 +
60 + $items = $course->get_item_ids();
61 +
62 + if ( $items ) {
63 + foreach ( $items as $item ) {
64 + if ( learn_press_get_post_type( $item ) === LP_QUIZ_CPT ) {
65 + $final_quiz = $item;
66 + }
67 + }
68 + }
69 +
70 + if ( ! empty( $final_quiz ) ) {
71 + update_post_meta( $course_id, '_lp_final_quiz', $final_quiz );
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 );
82 +
83 + ob_start();
84 + ?>
85 + <div class="lp-metabox-evaluate-final_quiz__message">
86 + <?php printf( esc_html__( 'Passing Grade: %s', 'learpress' ), $passing_grade . '%' ); ?>
87 + -
88 + <?php printf( esc_html__( 'Edit: %s', 'learnpress' ), '<a href="' . esc_url_raw( $url ) . '">' . get_the_title( $final_quiz ) . '</a>' ); ?>
89 + </div>
90 + <?php
91 + $response->status = 'success';
92 + $response->data = ob_get_clean();
93 + } else {
94 + delete_post_meta( $course_id, '_lp_final_quiz' );
95 + $response->data = '<div class="lp-metabox-evaluate-final_quiz__message lp-metabox-evaluate-final_quiz__message-error">' . esc_html__( 'No Quiz in this course!', 'learnpress' ) . '</div>';
96 + }
97 + } catch ( Exception $e ) {
98 + $response->message = $e->getMessage();
99 + }
100 +
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 + );
127 + }
128 +}