示例#1
0
/**
 * 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;