| @@ 2221-2243 (lines=23) @@ | ||
| 2218 | * @param int $session_id |
|
| 2219 | * @return string |
|
| 2220 | */ |
|
| 2221 | public static function get_exercise_student_average_best_attempt( |
|
| 2222 | $exercise_list, |
|
| 2223 | $user_id, |
|
| 2224 | $courseId, |
|
| 2225 | $session_id |
|
| 2226 | ) { |
|
| 2227 | $result = 0; |
|
| 2228 | if (!empty($exercise_list)) { |
|
| 2229 | foreach ($exercise_list as $exercise_data) { |
|
| 2230 | $exercise_id = $exercise_data['id']; |
|
| 2231 | $best_attempt = Event::get_best_attempt_exercise_results_per_user( |
|
| 2232 | $user_id, |
|
| 2233 | $exercise_id, |
|
| 2234 | $courseId, |
|
| 2235 | $session_id |
|
| 2236 | ); |
|
| 2237 | ||
| 2238 | if (!empty($best_attempt) && !empty($best_attempt['exe_weighting'])) { |
|
| 2239 | $result += $best_attempt['exe_result'] / $best_attempt['exe_weighting']; |
|
| 2240 | } |
|
| 2241 | } |
|
| 2242 | $result = $result / count($exercise_list); |
|
| 2243 | $result = round($result, 2) * 100; |
|
| 2244 | } |
|
| 2245 | ||
| 2246 | return $result.'%'; |
|
| @@ 3056-3086 (lines=31) @@ | ||
| 3053 | * @param int session id |
|
| 3054 | * @return float Best average score |
|
| 3055 | */ |
|
| 3056 | public static function get_best_average_score_by_exercise( |
|
| 3057 | $exercise_id, |
|
| 3058 | $courseId, |
|
| 3059 | $session_id, |
|
| 3060 | $user_count |
|
| 3061 | ) |
|
| 3062 | { |
|
| 3063 | $user_results = Event::get_best_exercise_results_by_user( |
|
| 3064 | $exercise_id, |
|
| 3065 | $courseId, |
|
| 3066 | $session_id |
|
| 3067 | ); |
|
| 3068 | $avg_score = 0; |
|
| 3069 | if (!empty($user_results)) { |
|
| 3070 | foreach ($user_results as $result) { |
|
| 3071 | if (!empty($result['exe_weighting']) && intval($result['exe_weighting']) != 0) { |
|
| 3072 | $score = $result['exe_result'] / $result['exe_weighting']; |
|
| 3073 | $avg_score += $score; |
|
| 3074 | } |
|
| 3075 | } |
|
| 3076 | //We asumme that all exe_weighting |
|
| 3077 | //$avg_score = show_score( $avg_score / count($user_results) , $result['exe_weighting']); |
|
| 3078 | //$avg_score = ($avg_score / count($user_results)); |
|
| 3079 | if (!empty($user_count)) { |
|
| 3080 | $avg_score = float_format($avg_score / $user_count, 1) * 100; |
|
| 3081 | } else { |
|
| 3082 | $avg_score = 0; |
|
| 3083 | } |
|
| 3084 | } |
|
| 3085 | ||
| 3086 | return $avg_score; |
|
| 3087 | } |
|
| 3088 | ||
| 3089 | /** |
|