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/admin/class-lp-reset-data.php +9 -197 4.1.7.3.24.4.8 View file →
@@ -1,10 +1,8 @@
1 1 <?php
2 2 class LP_Reset_Data {
3 3 public static function init() {
4 4 $ajax_events = array(
5 - 'search-users',
6 - 'reset-user-courses' => 'ajax_reset_user_courses',
7 5 'reset-user-item' => 'ajax_reset_user_item',
8 6 );
9 7
10 8 foreach ( $ajax_events as $action => $callback ) {
@@ -27,8 +25,17 @@
27 25 }
28 26 }
29 27
30 28 public static function ajax_reset_user_item() {
29 + if ( ! current_user_can( ADMIN_ROLE ) ) {
30 + return;
31 + }
32 +
33 + $nonce = LP_Request::get_param( 'nonce' );
34 + if ( ! wp_verify_nonce( $nonce, 'wp_rest' ) ) {
35 + die( 'Nonce is invalid!' );
36 + }
37 +
31 38 $user_id = LP_Request::get_string( 'user_id' );
32 39 $item_id = LP_Request::get_int( 'item_id' );
33 40
34 41 if ( ! is_numeric( $user_id ) ) {
@@ -105,202 +112,7 @@
105 112 echo __( 'No data found', 'learnpress' );
106 113 }
107 114 // LP_Debug::rollbackTransaction();
108 115 die();
109 - }
110 -
111 - public static function remove_item_data() {
112 -
113 - }
114 -
115 - public static function search_users() {
116 - global $wpdb;
117 -
118 - $s = LP_Request::get_string( 's' );
119 - $query = $wpdb->prepare(
120 - "
121 - SELECT ID AS id, user_login AS username, user_email AS email, '' AS status
122 - FROM {$wpdb->users}
123 - WHERE user_login LIKE %s
124 - OR user_email LIKE %s
125 - ",
126 - '%' . $wpdb->esc_like( $s ) . '%',
127 - '%' . $wpdb->esc_like( $s ) . '%'
128 - );
129 -
130 - $users = array();
131 -
132 - $rows = $wpdb->get_results( $query );
133 - if ( $rows ) {
134 - $user_ids = wp_list_pluck( $rows, 'id' );
135 - $format = array_fill( 0, sizeof( $user_ids ), '%d' );
136 - $args = $user_ids;
137 - $args[] = LP_COURSE_CPT;
138 - $query = $wpdb->prepare( "SELECT user_id, item_id FROM {$wpdb->learnpress_user_items} WHERE user_id IN(" . join( ',', $format ) . ') AND item_type = %s', $args );
139 -
140 - $items = $wpdb->get_results( $query );
141 - if ( $items ) {
142 - $uids = wp_list_pluck( $items, 'user_id' );
143 - for ( $n = sizeof( $rows ), $i = $n - 1; $i >= 0; $i -- ) {
144 -
145 - if ( ! in_array( $rows[ $i ]->id, $uids ) ) {
146 - unset( $rows[ $i ] );
147 - continue;
148 - }
149 -
150 - if ( empty( $rows[ $i ]->courses ) ) {
151 - $rows[ $i ]->courses = array();
152 - }
153 - foreach ( $items as $item ) {
154 - if ( $item->user_id == $rows[ $i ]->id ) {
155 - $rows[ $i ]->courses[ $item->item_id ] = array(
156 - 'url' => get_the_permalink( $item->item_id ),
157 - 'id' => $item->item_id,
158 - 'title' => get_the_title( $item->item_id ),
159 - );
160 - }
161 - }
162 - }
163 - } else {
164 - $rows = array();
165 - }
166 -
167 - if ( $rows ) {
168 - foreach ( $rows as $k => $row ) {
169 - $users[] = $row;
170 - if ( sizeof( $users ) > 100 ) {
171 - break;
172 - }
173 - }
174 - }
175 - }
176 -
177 - learn_press_send_json( $users );
178 - }
179 -
180 - public static function ajax_reset_user_courses() {
181 - $user_id = LP_Request::get_int( 'user_id' );
182 - $course_id = LP_Request::get_int( 'course_id' );
183 - $object_reset = LP_Request::get_string( 'object_reset' );
184 - $user = learn_press_get_user( $user_id );
185 - if ( ! current_user_can( 'administrator' ) ) {
186 - return;
187 - }
188 - if ( $course_id && $object_reset == 'single' ) {
189 - $user_course_data = $user->get_course_data( $course_id );
190 - if ( ! $user_course_data ) {
191 - return;
192 - }
193 -
194 - // Set status, start_time, end_time of course to enrol.
195 - $user_course_data->set_status( LP_COURSE_ENROLLED )
196 - ->set_start_time( time() )
197 - ->set_end_time()
198 - ->set_graduation( LP_COURSE_GRADUATION_IN_PROGRESS )
199 - ->update();
200 - // Remove items' course user learned.
201 - $filter_remove = new LP_User_Items_Filter();
202 - $filter_remove->parent_id = $user_course_data->get_user_item_id();
203 - $filter_remove->user_id = $user_course_data->get_user_id();
204 - $filter_remove->limit = - 1;
205 - LP_User_Items_DB::getInstance()->remove_items_of_user_course( $filter_remove );
206 - }
207 - if ( $object_reset == 'all' && $user_id ) {
208 - global $wpdb;
209 - $query = $wpdb->prepare(
210 - "
211 - SELECT item_id
212 - FROM {$wpdb->learnpress_user_items}
213 - WHERE user_id = %d AND item_type='lp_course'
214 - ",
215 - $user_id
216 - );
217 - $user_item_ids = $wpdb->get_col( $query );
218 - if ( $user_item_ids ) {
219 - foreach ( $user_item_ids as $user_item_id ) {
220 - $course_id = $user_item_id;
221 - $user_course_data = $user->get_course_data( $course_id );
222 - if ( ! $user_course_data ) {
223 - continue;
224 - }
225 -
226 - // Set status, start_time, end_time of course to enrolled.
227 - $user_course_data->set_status( LP_COURSE_ENROLLED )
228 - ->set_start_time( time() )
229 - ->set_end_time()
230 - ->set_graduation( LP_COURSE_GRADUATION_IN_PROGRESS )
231 - ->update();
232 - // Remove items' course user learned.
233 - $filter_remove = new LP_User_Items_Filter();
234 - $filter_remove->parent_id = $user_course_data->get_user_item_id();
235 - $filter_remove->user_id = $user_course_data->get_user_id();
236 - $filter_remove->limit = - 1;
237 - LP_User_Items_DB::getInstance()->remove_items_of_user_course( $filter_remove );
238 - }
239 - }
240 - }
241 -
242 - die();
243 - }
244 -
245 - public static function get_user_item_courses( $course_id, $user_id = 0 ) {
246 - global $wpdb;
247 -
248 - $where = '';
249 - if ( $user_id ) {
250 - $where = $wpdb->prepare( 'AND user_id = %d', $user_id );
251 - }
252 -
253 - $query = $wpdb->prepare(
254 - "
255 - SELECT *
256 - FROM {$wpdb->learnpress_user_items}
257 - WHERE item_type = %s
258 - AND item_id = %d
259 - $where
260 - ",
261 - LP_COURSE_CPT,
262 - $course_id
263 - );
264 -
265 - echo "$query\n";
266 -
267 - return $wpdb->get_results( $query );
268 - }
269 -
270 - public static function delete_user_items_by_id( $ids ) {
271 - settype( $ids, 'array' );
272 -
273 - global $wpdb;
274 -
275 - // Delete meta
276 - $format = array_fill( 0, sizeof( $ids ), '%d' );
277 - $query = $wpdb->prepare( "DELETE FROM {$wpdb->learnpress_user_itemmeta} WHERE learnpress_user_item_id IN(" . join( ',', $format ) . ')', $ids );
278 - $wpdb->query( $query );
279 - echo "$query\n";
280 -
281 - // Delete items
282 - $query = $wpdb->prepare( "DELETE FROM {$wpdb->learnpress_user_items} WHERE user_item_id IN(" . join( ',', $format ) . ')', $ids );
283 - $wpdb->query( $query );
284 -
285 - echo "$query\n";
286 -
287 - }
288 -
289 - public static function get_user_items_by_parent( $parent_id ) {
290 - global $wpdb;
291 -
292 - $query = $wpdb->prepare(
293 - "
294 - SELECT *
295 - FROM {$wpdb->learnpress_user_items}
296 - WHERE parent_id = %d
297 - ",
298 - $parent_id
299 - );
300 -
301 - echo "$query\n";
302 -
303 - return $wpdb->get_results( $query );
304 116 }
305 117 }
306 118 LP_Reset_Data::init();