| @@ -12,8 +12,9 @@ | ||
| 12 | 12 | use Exception; |
| 13 | 13 | use LearnPress\Databases\DataBase; |
| 14 | 14 | use LearnPress\Databases\UserItemsDB; |
| 15 | 15 | use LearnPress\Filters\UserItemsFilter; |
| 16 | +use LearnPress\Helpers\Response; | |
| 16 | 17 | use LearnPress\Helpers\Singleton; |
| 17 | 18 | use LearnPress\Helpers\Template; |
| 18 | 19 | use LearnPress\Models\CourseModel; |
| 19 | 20 | use LearnPress\Models\UserItems\UserCourseModel; |
| @@ -25,8 +26,11 @@ | ||
| 25 | 26 | defined( 'ABSPATH' ) || exit; |
| 26 | 27 | |
| 27 | 28 | /** |
| 28 | 29 | * Class AdminCourseTools |
| 30 | + * | |
| 31 | + * @since 4.4.6 | |
| 32 | + * @version 1.0.1 | |
| 29 | 33 | */ |
| 30 | 34 | class AdminCourseTools { |
| 31 | 35 | use Singleton; |
| 32 | 36 | |
| @@ -220,9 +224,13 @@ | ||
| 220 | 224 | ]; |
| 221 | 225 | |
| 222 | 226 | $content->content = Template::combine_components( $section ); |
| 223 | 227 | } catch ( Throwable $exception ) { |
| 224 | - $content->content = Template::print_message( $exception->getMessage(), 'error', false ); | |
| 228 | + $content->content = Template::print_message( | |
| 229 | + $exception->getMessage(), | |
| 230 | + Response::STATUS_ERROR, | |
| 231 | + false | |
| 232 | + ); | |
| 225 | 233 | } |
| 226 | 234 | |
| 227 | 235 | return $content; |
| 228 | 236 | } |
| @@ -233,14 +241,19 @@ | ||
| 233 | 241 | * @param array $data Request arguments. |
| 234 | 242 | * |
| 235 | 243 | * @return stdClass |
| 236 | 244 | * @since 4.4.6 |
| 237 | - * @version 1.0.0 | |
| 245 | + * @version 1.0.1 | |
| 238 | 246 | */ |
| 239 | 247 | public static function render_courses_to_reset_progress( array $data ): stdClass { |
| 240 | 248 | $content = new stdClass(); |
| 241 | 249 | |
| 242 | 250 | try { |
| 251 | + // Check permission | |
| 252 | + if ( ! current_user_can( UserModel::ROLE_ADMINISTRATOR ) ) { | |
| 253 | + throw new Exception( 'Access denied.' ); | |
| 254 | + } | |
| 255 | + | |
| 243 | 256 | $item_selecting = $data['item_selecting'] ?? []; |
| 244 | 257 | $search_course = trim( $data['lp-search-course'] ?? '' ); |
| 245 | 258 | $search_user = trim( $data['lp-search-user'] ?? '' ); |
| 246 | 259 | $paged = max( 1, intval( $data['paged'] ?? 1 ) ); |
| @@ -271,9 +284,12 @@ | ||
| 271 | 284 | $filter_course_attendance->ref_type = LP_COURSE_CPT; |
| 272 | 285 | $filter_course_attendance->return_string_query = 1; |
| 273 | 286 | $filter_course_attendance->limit = -1; |
| 274 | 287 | $query_course_attendance = $db->get_user_items( $filter_course_attendance ); |
| 275 | - $filter->where[] = "AND ui.user_item_id IN ({$query_course_attendance})"; | |
| 288 | + $filter->where[] = sprintf( | |
| 289 | + 'AND ui.user_item_id IN (%s)', | |
| 290 | + $query_course_attendance | |
| 291 | + ); | |
| 276 | 292 | // End get only courses has items attendance |
| 277 | 293 | |
| 278 | 294 | // Get only user_id > 0 |
| 279 | 295 | $filter->where[] = 'AND ui.user_id > 0'; |
| @@ -371,9 +387,13 @@ | ||
| 371 | 387 | ]; |
| 372 | 388 | |
| 373 | 389 | $content->content = Template::combine_components( $section ); |
| 374 | 390 | } catch ( Throwable $exception ) { |
| 375 | - $content->content = Template::print_message( $exception->getMessage(), 'error', false ); | |
| 391 | + $content->content = Template::print_message( | |
| 392 | + $exception->getMessage(), | |
| 393 | + Response::STATUS_ERROR, | |
| 394 | + false | |
| 395 | + ); | |
| 376 | 396 | } |
| 377 | 397 | |
| 378 | 398 | return $content; |
| 379 | 399 | } |