| @@ 2107-2129 (lines=23) @@ | ||
| 2104 | * @param int $session_id |
|
| 2105 | * @return string |
|
| 2106 | */ |
|
| 2107 | public static function get_exercise_student_average_best_attempt($exercise_list, $user_id, $courseId, $session_id) |
|
| 2108 | { |
|
| 2109 | $result = 0; |
|
| 2110 | if (!empty($exercise_list)) { |
|
| 2111 | foreach ($exercise_list as $exercise_data) { |
|
| 2112 | $exercise_id = $exercise_data['id']; |
|
| 2113 | $best_attempt = Event::get_best_attempt_exercise_results_per_user( |
|
| 2114 | $user_id, |
|
| 2115 | $exercise_id, |
|
| 2116 | $courseId, |
|
| 2117 | $session_id |
|
| 2118 | ); |
|
| 2119 | ||
| 2120 | if (!empty($best_attempt) && !empty($best_attempt['exe_weighting'])) { |
|
| 2121 | $result += $best_attempt['exe_result'] / $best_attempt['exe_weighting']; |
|
| 2122 | } |
|
| 2123 | } |
|
| 2124 | $result = $result / count($exercise_list); |
|
| 2125 | $result = round($result, 2) * 100; |
|
| 2126 | } |
|
| 2127 | ||
| 2128 | return $result.'%'; |
|
| 2129 | } |
|
| 2130 | ||
| 2131 | /** |
|
| 2132 | * get teacher progress by course and session |
|
| @@ 2976-3006 (lines=31) @@ | ||
| 2973 | * @param int session id |
|
| 2974 | * @return float Best average score |
|
| 2975 | */ |
|
| 2976 | public static function get_best_average_score_by_exercise( |
|
| 2977 | $exercise_id, |
|
| 2978 | $courseId, |
|
| 2979 | $session_id, |
|
| 2980 | $user_count |
|
| 2981 | ) |
|
| 2982 | { |
|
| 2983 | $user_results = Event::get_best_exercise_results_by_user( |
|
| 2984 | $exercise_id, |
|
| 2985 | $courseId, |
|
| 2986 | $session_id |
|
| 2987 | ); |
|
| 2988 | $avg_score = 0; |
|
| 2989 | if (!empty($user_results)) { |
|
| 2990 | foreach ($user_results as $result) { |
|
| 2991 | if (!empty($result['exe_weighting']) && intval($result['exe_weighting']) != 0) { |
|
| 2992 | $score = $result['exe_result'] / $result['exe_weighting']; |
|
| 2993 | $avg_score += $score; |
|
| 2994 | } |
|
| 2995 | } |
|
| 2996 | //We asumme that all exe_weighting |
|
| 2997 | //$avg_score = show_score( $avg_score / count($user_results) , $result['exe_weighting']); |
|
| 2998 | //$avg_score = ($avg_score / count($user_results)); |
|
| 2999 | if (!empty($user_count)) { |
|
| 3000 | $avg_score = float_format($avg_score / $user_count, 1) * 100; |
|
| 3001 | } else { |
|
| 3002 | $avg_score = 0; |
|
| 3003 | } |
|
| 3004 | } |
|
| 3005 | ||
| 3006 | return $avg_score; |
|
| 3007 | } |
|
| 3008 | ||
| 3009 | /** |
|