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 +10 -192 4.1.74.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 ) ) {
@@ -99,202 +106,13 @@
99 106 }
100 107 }
101 108 }
102 109
103 - echo __( 'Item progress deleted', 'learnpress' );
110 + echo __( 'Item progress is deleted', 'learnpress' );
104 111 } else {
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 -
191 - // Set status, start_time, end_time of course to enrolled.
192 - $user_course_data->set_status( LP_COURSE_ENROLLED )
193 - ->set_start_time( current_time( 'mysql', true ) )
194 - ->set_end_time( '' )
195 - ->set_graduation( 'in-progress' )
196 - ->update();
197 - // Remove items' course user learned.
198 - $filter_remove = new LP_User_Items_Filter();
199 - $filter_remove->parent_id = $user_course_data->get_user_item_id();
200 - $filter_remove->user_id = $user_course_data->get_user_id();
201 - $filter_remove->limit = - 1;
202 - LP_User_Items_DB::getInstance()->remove_items_of_user_course( $filter_remove );
203 - }
204 - if ( $object_reset == 'all' && $user_id ) {
205 - global $wpdb;
206 - $query = $wpdb->prepare(
207 - "
208 - SELECT item_id
209 - FROM {$wpdb->learnpress_user_items}
210 - WHERE user_id = %d AND item_type='lp_course'
211 - ",
212 - $user_id
213 - );
214 - $user_item_ids = $wpdb->get_col( $query );
215 - if ( $user_item_ids ) {
216 - foreach ( $user_item_ids as $user_item_id ) {
217 - $course_id = $user_item_id;
218 - $user_course_data = $user->get_course_data( $course_id );
219 -
220 - // Set status, start_time, end_time of course to enrolled.
221 - $user_course_data->set_status( LP_COURSE_ENROLLED )
222 - ->set_start_time( current_time( 'mysql', true ) )
223 - ->set_end_time( '' )
224 - ->set_graduation( 'in-progress' )
225 - ->update();
226 - // Remove items' course user learned.
227 - $filter_remove = new LP_User_Items_Filter();
228 - $filter_remove->parent_id = $user_course_data->get_user_item_id();
229 - $filter_remove->user_id = $user_course_data->get_user_id();
230 - $filter_remove->limit = - 1;
231 - LP_User_Items_DB::getInstance()->remove_items_of_user_course( $filter_remove );
232 - }
233 - }
234 - }
235 -
236 - die();
237 - }
238 -
239 - public static function get_user_item_courses( $course_id, $user_id = 0 ) {
240 - global $wpdb;
241 -
242 - $where = '';
243 - if ( $user_id ) {
244 - $where = $wpdb->prepare( 'AND user_id = %d', $user_id );
245 - }
246 -
247 - $query = $wpdb->prepare(
248 - "
249 - SELECT *
250 - FROM {$wpdb->learnpress_user_items}
251 - WHERE item_type = %s
252 - AND item_id = %d
253 - $where
254 - ",
255 - LP_COURSE_CPT,
256 - $course_id
257 - );
258 -
259 - echo "$query\n";
260 -
261 - return $wpdb->get_results( $query );
262 - }
263 -
264 - public static function delete_user_items_by_id( $ids ) {
265 - settype( $ids, 'array' );
266 -
267 - global $wpdb;
268 -
269 - // Delete meta
270 - $format = array_fill( 0, sizeof( $ids ), '%d' );
271 - $query = $wpdb->prepare( "DELETE FROM {$wpdb->learnpress_user_itemmeta} WHERE learnpress_user_item_id IN(" . join( ',', $format ) . ')', $ids );
272 - $wpdb->query( $query );
273 - echo "$query\n";
274 -
275 - // Delete items
276 - $query = $wpdb->prepare( "DELETE FROM {$wpdb->learnpress_user_items} WHERE user_item_id IN(" . join( ',', $format ) . ')', $ids );
277 - $wpdb->query( $query );
278 -
279 - echo "$query\n";
280 -
281 - }
282 -
283 - public static function get_user_items_by_parent( $parent_id ) {
284 - global $wpdb;
285 -
286 - $query = $wpdb->prepare(
287 - "
288 - SELECT *
289 - FROM {$wpdb->learnpress_user_items}
290 - WHERE parent_id = %d
291 - ",
292 - $parent_id
293 - );
294 -
295 - echo "$query\n";
296 -
297 - return $wpdb->get_results( $query );
298 116 }
299 117 }
300 118 LP_Reset_Data::init();