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-reset-data-controller.php +219 -219 4.3.9 → 4.4.9 View file →
@@ -1,219 +1,219 @@
1 -<?php
2 -
3 -/**
4 - * Class LP_REST_Users_Controller
5 - * in LearnPres > Tool
6 - *
7 - * @since 4.0.4
8 - * @author Nhamdv <[email protected]>
9 - */
10 -class LP_REST_Admin_Reset_Data_Controller extends LP_Abstract_REST_Controller {
11 -
12 - public function __construct() {
13 - $this->namespace = 'lp/v1/admin/tools';
14 - $this->rest_base = 'reset-data';
15 -
16 - parent::__construct();
17 - }
18 -
19 - /**
20 - * Register rest routes.
21 - */
22 - public function register_routes() {
23 - $this->routes = array(
24 - 'search-courses' => array(
25 - array(
26 - 'methods' => WP_REST_Server::READABLE,
27 - 'callback' => array( $this, 'search_courses' ),
28 - 'permission_callback' => array( $this, 'check_admin_permission' ),
29 - ),
30 - ),
31 - 'reset-courses' => array(
32 - array(
33 - 'methods' => WP_REST_Server::READABLE,
34 - 'callback' => array( $this, 'reset_courses' ),
35 - 'permission_callback' => array( $this, 'check_admin_permission' ),
36 - ),
37 - ),
38 - );
39 -
40 - parent::register_routes();
41 - }
42 -
43 - public function check_admin_permission() {
44 - return LP_Abstract_API::check_admin_permission();
45 - }
46 -
47 - /**
48 - * Search Course for Reset Course
49 - *
50 - * @param WP_REST_Request $request
51 - * @return void
52 - */
53 - public function search_courses( $request ) {
54 - $params = $request->get_params();
55 - $s = ! empty( $params['s'] ) ? $params['s'] : '';
56 -
57 - // Response.
58 - $response = new LP_REST_Response();
59 - $response->data = '';
60 -
61 - try {
62 - global $wpdb;
63 -
64 - $query = $wpdb->prepare(
65 - "SELECT ID as id, post_title AS title, 'students', '' AS status
66 - FROM {$wpdb->posts}
67 - WHERE post_type = %s AND post_title LIKE %s",
68 - LP_COURSE_CPT,
69 - '%' . $wpdb->esc_like( $s ) . '%'
70 - );
71 -
72 - $courses = array();
73 - $rows = $wpdb->get_results( $query );
74 -
75 - if ( $rows ) {
76 - $course_ids = wp_list_pluck( $rows, 'id' );
77 - $format = array_fill( 0, count( $course_ids ), '%d' );
78 - $args = $course_ids;
79 - $args[] = LP_COURSE_CPT;
80 - $query = $wpdb->prepare( "SELECT item_id FROM {$wpdb->learnpress_user_items} WHERE item_id IN(" . implode( ',', $format ) . ') AND item_type = %s', $args );
81 -
82 - $item_ids = $wpdb->get_col( $query );
83 -
84 - if ( $item_ids ) {
85 - for ( $n = count( $rows ), $i = $n - 1; $i >= 0; $i -- ) {
86 - if ( ! in_array( $rows[ $i ]->id, $item_ids ) ) {
87 - unset( $rows[ $i ] );
88 - }
89 - }
90 - } else {
91 - throw new Exception( esc_html__( 'No items available!', 'learnpress' ) );
92 - }
93 -
94 - if ( $rows ) {
95 - foreach ( $rows as $k => $row ) {
96 - $course = learn_press_get_course( $row->id );
97 - $row->students = $course->get_total_user_enrolled_or_purchased();
98 -
99 - if ( $row->students ) {
100 - $courses[] = $row;
101 - }
102 - }
103 - }
104 - } else {
105 - throw new Exception( esc_html__( 'No courses available!', 'learnpress' ) );
106 - }
107 -
108 - $response->status = 'success';
109 - $response->data = $courses;
110 - } catch ( Exception $e ) {
111 - $response->message = $e->getMessage();
112 - }
113 -
114 - return rest_ensure_response( $response );
115 - }
116 -
117 - /**
118 - * Get Final Quiz in Course Settings.
119 - *
120 - * @return void
121 - */
122 - public function reset_courses( WP_REST_Request $request ) {
123 - $params = $request->get_params();
124 - $course_id = isset( $params['courseId'] ) ? $params['courseId'] : false;
125 -
126 - // Responsive.
127 - $response = new LP_REST_Response();
128 - $response->data = '';
129 -
130 - try {
131 - if ( empty( $course_id ) ) {
132 - throw new Exception( esc_html__( 'No course ID available', 'learnpress' ) );
133 - }
134 -
135 - global $wpdb;
136 -
137 - // GET list user_item_id child of parent course ids.
138 - $child_user_item_ids = $wpdb->get_col(
139 - $wpdb->prepare(
140 - "SELECT user_item_id FROM $wpdb->learnpress_user_items
141 - WHERE ref_id=%d
142 - ",
143 - $course_id
144 - )
145 - );
146 -
147 - // DELETE course_item ( lesson, quiz ) by course id in table user_items.
148 - $wpdb->delete(
149 - $wpdb->learnpress_user_items,
150 - array(
151 - 'ref_id' => $course_id,
152 - ),
153 - array( '%d' )
154 - );
155 -
156 - // DELETE user_itemmeta for ( lesson, quiz... )
157 - if ( ! empty( $child_user_item_ids ) ) {
158 - foreach ( $child_user_item_ids as $child_user_item_id ) {
159 - $wpdb->delete(
160 - $wpdb->learnpress_user_itemmeta,
161 - array(
162 - 'learnpress_user_item_id' => absint( $child_user_item_id ),
163 - ),
164 - array( '%d' )
165 - );
166 -
167 - LP_User_Items_Result_DB::instance()->delete( absint( $child_user_item_id ) );
168 - }
169 - }
170 -
171 - // Change status, graduation... by course id
172 - $wpdb->update(
173 - $wpdb->learnpress_user_items,
174 - array(
175 - 'status' => LP_COURSE_ENROLLED,
176 - 'graduation' => 'in-progress',
177 - 'start_time' => current_time( 'mysql', 1 ),
178 - 'end_time' => null,
179 - ),
180 - array(
181 - 'item_id' => $course_id,
182 - ),
183 - array( '%s', '%s', '%s', null ),
184 - array( '%d' )
185 - );
186 -
187 - // GET all user_item_ids by course ids
188 - $user_item_ids = $wpdb->get_col(
189 - $wpdb->prepare(
190 - "SELECT user_item_id FROM $wpdb->learnpress_user_items
191 - WHERE item_id=%d
192 - ",
193 - $course_id
194 - )
195 - );
196 -
197 - // DELETE user_itemmeta course by course id.
198 - if ( ! empty( $user_item_ids ) ) {
199 - foreach ( $user_item_ids as $user_item_id ) {
200 - $wpdb->delete(
201 - $wpdb->learnpress_user_itemmeta,
202 - array(
203 - 'learnpress_user_item_id' => absint( $user_item_id ),
204 - ),
205 - array( '%d' )
206 - );
207 -
208 - LP_User_Items_Result_DB::instance()->delete( absint( $user_item_id ) );
209 - }
210 - }
211 -
212 - $response->status = 'success';
213 - } catch ( Exception $e ) {
214 - $response->message = $e->getMessage();
215 - }
216 -
217 - return rest_ensure_response( $response );
218 - }
219 -}
1 +<?php
2 +
3 +/**
4 + * Class LP_REST_Users_Controller
5 + * in LearnPres > Tool
6 + *
7 + * @since 4.0.4
8 + * @author Nhamdv <[email protected]>
9 + */
10 +class LP_REST_Admin_Reset_Data_Controller extends LP_Abstract_REST_Controller {
11 +
12 + public function __construct() {
13 + $this->namespace = 'lp/v1/admin/tools';
14 + $this->rest_base = 'reset-data';
15 +
16 + parent::__construct();
17 + }
18 +
19 + /**
20 + * Register rest routes.
21 + */
22 + public function register_routes() {
23 + $this->routes = array(
24 + 'search-courses' => array(
25 + array(
26 + 'methods' => WP_REST_Server::READABLE,
27 + 'callback' => array( $this, 'search_courses' ),
28 + 'permission_callback' => array( $this, 'check_admin_permission' ),
29 + ),
30 + ),
31 + 'reset-courses' => array(
32 + array(
33 + 'methods' => WP_REST_Server::READABLE,
34 + 'callback' => array( $this, 'reset_courses' ),
35 + 'permission_callback' => array( $this, 'check_admin_permission' ),
36 + ),
37 + ),
38 + );
39 +
40 + parent::register_routes();
41 + }
42 +
43 + public function check_admin_permission() {
44 + return LP_Abstract_API::check_admin_permission();
45 + }
46 +
47 + /**
48 + * Search Course for Reset Course
49 + *
50 + * @param WP_REST_Request $request
51 + * @return void
52 + */
53 + public function search_courses( $request ) {
54 + $params = $request->get_params();
55 + $s = ! empty( $params['s'] ) ? $params['s'] : '';
56 +
57 + // Response.
58 + $response = new LP_REST_Response();
59 + $response->data = '';
60 +
61 + try {
62 + global $wpdb;
63 +
64 + $query = $wpdb->prepare(
65 + "SELECT ID as id, post_title AS title, 'students', '' AS status
66 + FROM {$wpdb->posts}
67 + WHERE post_type = %s AND post_title LIKE %s",
68 + LP_COURSE_CPT,
69 + '%' . $wpdb->esc_like( $s ) . '%'
70 + );
71 +
72 + $courses = array();
73 + $rows = $wpdb->get_results( $query );
74 +
75 + if ( $rows ) {
76 + $course_ids = wp_list_pluck( $rows, 'id' );
77 + $format = array_fill( 0, count( $course_ids ), '%d' );
78 + $args = $course_ids;
79 + $args[] = LP_COURSE_CPT;
80 + $query = $wpdb->prepare( "SELECT item_id FROM {$wpdb->learnpress_user_items} WHERE item_id IN(" . implode( ',', $format ) . ') AND item_type = %s', $args );
81 +
82 + $item_ids = $wpdb->get_col( $query );
83 +
84 + if ( $item_ids ) {
85 + for ( $n = count( $rows ), $i = $n - 1; $i >= 0; $i -- ) {
86 + if ( ! in_array( $rows[ $i ]->id, $item_ids ) ) {
87 + unset( $rows[ $i ] );
88 + }
89 + }
90 + } else {
91 + throw new Exception( esc_html__( 'No items available!', 'learnpress' ) );
92 + }
93 +
94 + if ( $rows ) {
95 + foreach ( $rows as $k => $row ) {
96 + $course = learn_press_get_course( $row->id );
97 + $row->students = $course->get_total_user_enrolled_or_purchased();
98 +
99 + if ( $row->students ) {
100 + $courses[] = $row;
101 + }
102 + }
103 + }
104 + } else {
105 + throw new Exception( esc_html__( 'No courses available!', 'learnpress' ) );
106 + }
107 +
108 + $response->status = 'success';
109 + $response->data = $courses;
110 + } catch ( Exception $e ) {
111 + $response->message = $e->getMessage();
112 + }
113 +
114 + return rest_ensure_response( $response );
115 + }
116 +
117 + /**
118 + * Get Final Quiz in Course Settings.
119 + *
120 + * @return void
121 + */
122 + public function reset_courses( WP_REST_Request $request ) {
123 + $params = $request->get_params();
124 + $course_id = isset( $params['courseId'] ) ? $params['courseId'] : false;
125 +
126 + // Responsive.
127 + $response = new LP_REST_Response();
128 + $response->data = '';
129 +
130 + try {
131 + if ( empty( $course_id ) ) {
132 + throw new Exception( esc_html__( 'No course ID available', 'learnpress' ) );
133 + }
134 +
135 + global $wpdb;
136 +
137 + // GET list user_item_id child of parent course ids.
138 + $child_user_item_ids = $wpdb->get_col(
139 + $wpdb->prepare(
140 + "SELECT user_item_id FROM $wpdb->learnpress_user_items
141 + WHERE ref_id=%d
142 + ",
143 + $course_id
144 + )
145 + );
146 +
147 + // DELETE course_item ( lesson, quiz ) by course id in table user_items.
148 + $wpdb->delete(
149 + $wpdb->learnpress_user_items,
150 + array(
151 + 'ref_id' => $course_id,
152 + ),
153 + array( '%d' )
154 + );
155 +
156 + // DELETE user_itemmeta for ( lesson, quiz... )
157 + if ( ! empty( $child_user_item_ids ) ) {
158 + foreach ( $child_user_item_ids as $child_user_item_id ) {
159 + $wpdb->delete(
160 + $wpdb->learnpress_user_itemmeta,
161 + array(
162 + 'learnpress_user_item_id' => absint( $child_user_item_id ),
163 + ),
164 + array( '%d' )
165 + );
166 +
167 + LP_User_Items_Result_DB::instance()->delete( absint( $child_user_item_id ) );
168 + }
169 + }
170 +
171 + // Change status, graduation... by course id
172 + $wpdb->update(
173 + $wpdb->learnpress_user_items,
174 + array(
175 + 'status' => LP_COURSE_ENROLLED,
176 + 'graduation' => 'in-progress',
177 + 'start_time' => current_time( 'mysql', 1 ),
178 + 'end_time' => null,
179 + ),
180 + array(
181 + 'item_id' => $course_id,
182 + ),
183 + array( '%s', '%s', '%s', null ),
184 + array( '%d' )
185 + );
186 +
187 + // GET all user_item_ids by course ids
188 + $user_item_ids = $wpdb->get_col(
189 + $wpdb->prepare(
190 + "SELECT user_item_id FROM $wpdb->learnpress_user_items
191 + WHERE item_id=%d
192 + ",
193 + $course_id
194 + )
195 + );
196 +
197 + // DELETE user_itemmeta course by course id.
198 + if ( ! empty( $user_item_ids ) ) {
199 + foreach ( $user_item_ids as $user_item_id ) {
200 + $wpdb->delete(
201 + $wpdb->learnpress_user_itemmeta,
202 + array(
203 + 'learnpress_user_item_id' => absint( $user_item_id ),
204 + ),
205 + array( '%d' )
206 + );
207 +
208 + LP_User_Items_Result_DB::instance()->delete( absint( $user_item_id ) );
209 + }
210 + }
211 +
212 + $response->status = 'success';
213 + } catch ( Exception $e ) {
214 + $response->message = $e->getMessage();
215 + }
216 +
217 + return rest_ensure_response( $response );
218 + }
219 +}