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/Models/UserItems/UserCourseModel.php +48 -1 4.3.74.4.8 View file →
@@ -19,8 +19,9 @@
19 19 use LP_Course_Cache;
20 20 use LP_Course_Item;
21 21 use LP_Courses_Cache;
22 22 use LP_Datetime;
23 +use LP_Debug;
23 24 use LP_User;
24 25 use LP_User_Item_Course;
25 26 use LP_User_Items_Cache;
26 27 use LP_User_Items_DB;
@@ -454,8 +455,11 @@
454 455 );
455 456 }
456 457
457 458 $results_evaluate['result'] = round( $results_evaluate['result'], 2 );
459 + if ( $results_evaluate['result'] > 100 ) {
460 + $results_evaluate['result'] = 100;
461 + }
458 462
459 463 $completed_items = intval( $count_items_completed->count_status ?? 0 );
460 464
461 465 $item_types = CourseModel::item_types_support();
@@ -483,9 +487,9 @@
483 487 );
484 488
485 489 LP_Cache::cache_load_first( 'set', $key_first_cache, $results );
486 490 } catch ( Throwable $e ) {
487 - error_log( __METHOD__ . ': ' . $e->getMessage() );
491 + LP_Debug::error_log( $e );
488 492 }
489 493
490 494 return $results;
491 495 }
@@ -1076,8 +1080,51 @@
1076 1080 }
1077 1081
1078 1082 // Create new result in table learnpress_user_item_results.
1079 1083 LP_User_Items_Result_DB::instance()->insert( $this->get_user_item_id() );
1084 + }
1085 +
1086 + /**
1087 + * Reset course progress for the enrolled user.
1088 + *
1089 + * Sets status back to enrolled, graduation to in-progress, removes all child
1090 + * items (lessons, quizzes), clears cached item data and deletes the result.
1091 + *
1092 + * @return void
1093 + * @throws Exception
1094 + * @since 4.4.5
1095 + * @version 1.0.0
1096 + */
1097 + public function reset_progress() {
1098 + $this->status = self::STATUS_ENROLLED;
1099 + $this->graduation = self::GRADUATION_IN_PROGRESS;
1100 + $this->start_time = gmdate( LP_Datetime::$format, time() );
1101 + $this->end_time = null;
1102 + $this->set_meta_value_for_key( self::META_KEY_RETAKEN_COUNT, 0 );
1103 + $this->save();
1104 +
1105 + $courseModel = $this->get_course_model();
1106 +
1107 + if ( $courseModel && $courseModel->count_items() > 0 ) {
1108 + // Remove items' course user learned.
1109 + $filter_remove = new LP_User_Items_Filter();
1110 + $filter_remove->parent_id = $this->get_user_item_id();
1111 + $filter_remove->user_id = $this->user_id;
1112 + $filter_remove->limit = - 1;
1113 + LP_User_Items_DB::getInstance()->remove_items_of_user_course( $filter_remove );
1114 +
1115 + // Clean cache items.
1116 + foreach ( $courseModel->get_section_items() as $section_items ) {
1117 + foreach ( $section_items->items as $item ) {
1118 + $key_cache = "userItemModel/find/{$this->user_id}/{$item->id}/{$item->type}/{$this->item_id}/" . LP_COURSE_CPT;
1119 + $lpUserItemCache = new LP_User_Items_Cache();
1120 + $lpUserItemCache->clear( $key_cache );
1121 + }
1122 + }
1123 + }
1124 +
1125 + // Delete result in table learnpress_user_item_results.
1126 + LP_User_Items_Result_DB::instance()->delete( $this->get_user_item_id() );
1080 1127 }
1081 1128
1082 1129 /**
1083 1130 * Check can impact item.