/** * Get average score (NO Exercises in LPs ) * @param int exercise id * @param string course code * @param int session id * @return float Average score */ function get_average_score($exercise_id, $course_code, $session_id) { $user_results = get_all_exercise_results($exercise_id, $course_code, $session_id); $avg_score = 0; if (!empty($user_results)) { foreach ($user_results as $result) { if (!empty($result['exe_weighting']) && intval($result['exe_weighting']) != 0) { $score = $result['exe_result'] / $result['exe_weighting']; $avg_score += $score; } } $avg_score = float_format($avg_score / count($user_results), 1); } return $avg_score; }
<?php $exerciseId = $app['request']->get('exerciseId'); $exercise = new Exercise(); $exercise->read($exerciseId); $examResults = get_all_exercise_results($exerciseId, api_get_course_int_id(), api_get_session_id(), true); foreach ($examResults as $exerciseAttempt) { $exeId = $exerciseAttempt['exe_id']; $questionList = $exerciseAttempt['question_list']; // Cleaning total result in order to recalculate: $stat_table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCICES); $sql = 'UPDATE ' . $stat_table . ' SET exe_result = 0, exe_weighting = 0 WHERE exe_id = ' . $exeId; Database::query($sql); $totalWeight = 0; foreach ($questionList as $questionId => $questionAttempt) { $result = $exercise->manageAnswers($exeId, $questionId, $questionAttempt['answer'], 'exercise_show', array(), true, true, false, array(), true); $totalWeight += floatval($result['weight']); } $sql = 'UPDATE ' . $stat_table . ' SET exe_weighting = ' . $totalWeight . ' WHERE exe_id = ' . $exeId; Database::query($sql); } $urlMainExercise = api_get_path(WEB_CODE_PATH) . 'exercice/'; header('Location: ' . $urlMainExercise . 'exercise_report.php?exerciseId=' . $exerciseId . '&' . api_get_cidreq()); exit;