diff --git a/main/inc/lib/tracking.lib.php b/main/inc/lib/tracking.lib.php index e6352ce97f..6ab7261f62 100755 --- a/main/inc/lib/tracking.lib.php +++ b/main/inc/lib/tracking.lib.php @@ -2762,7 +2762,7 @@ class Tracking } // Compose a filter based on optional session id - $session_id = intval($session_id); + $session_id = (int) $session_id; if (count($lp_ids) > 0) { $condition_session = " AND session_id = $session_id "; } else { @@ -2919,7 +2919,7 @@ class Tracking echo '

Item Type: '.$row_max_score['item_type'].'

'; } - if ($row_max_score['item_type'] == 'sco') { + if ($row_max_score['item_type'] === 'sco') { /* Check if it is sco (easier to get max_score) when there's no max score, we assume 100 as the max score, as the SCORM 1.2 says that the value should always be between 0 and 100. @@ -2948,7 +2948,6 @@ class Tracking $item_path = $row_max_score['path']; $lp_item_view_id = (int) $row_max_score['lp_item_view_id']; - $lpItemCondition = ''; if (empty($lp_item_view_id)) { $lpItemCondition = ' (orig_lp_item_view_id = 0 OR orig_lp_item_view_id IS NULL) '; } else { @@ -7806,6 +7805,16 @@ class TrackingCourseLog $session_id ); + $averageBestScore = Tracking::get_avg_student_score( + $user['user_id'], + $course_code, + [], + $session_id, + false, + false, + true + ); + $avg_student_progress = Tracking::get_avg_student_progress( $user['user_id'], $course_code, @@ -7842,6 +7851,12 @@ class TrackingCourseLog $user['student_score'] = $avg_student_score; } + if (is_numeric($averageBestScore)) { + $user['student_score_best'] = $averageBestScore.'%'; + } else { + $user['student_score_best'] = $averageBestScore; + } + $user['count_assignments'] = Tracking::count_student_assignments( $user['user_id'], $course_code, @@ -7905,6 +7920,7 @@ class TrackingCourseLog $user_row['exercise_progress'] = $user['exercise_progress']; $user_row['exercise_average_best_attempt'] = $user['exercise_average_best_attempt']; $user_row['student_score'] = $user['student_score']; + $user_row['student_score_best'] = $user['student_score_best']; $user_row['count_assignments'] = $user['count_assignments']; $user_row['count_messages'] = $user['count_messages']; diff --git a/main/tracking/courseLog.php b/main/tracking/courseLog.php index 2ea51c757d..452a685f48 100755 --- a/main/tracking/courseLog.php +++ b/main/tracking/courseLog.php @@ -532,6 +532,7 @@ if ($nbStudents > 0) { $html .= Display::page_subheader2(get_lang('StudentList')); +$bestScoreLabel = get_lang('Score').' - '.get_lang('BestAttempt'); if ($nbStudents > 0) { $mainForm = new FormValidator( 'filter', @@ -621,33 +622,34 @@ if ($nbStudents > 0) { $parameters['id_session'] = $sessionId; $parameters['from'] = isset($_GET['myspace']) ? Security::remove_XSS($_GET['myspace']) : null; + $headerCounter = 0; $headers = []; // tab of header texts - $table->set_header(0, get_lang('OfficialCode'), true); + $table->set_header($headerCounter++, get_lang('OfficialCode'), true); $headers['official_code'] = get_lang('OfficialCode'); if ($sortByFirstName) { - $table->set_header(1, get_lang('FirstName'), true); - $table->set_header(2, get_lang('LastName'), true); + $table->set_header($headerCounter++, get_lang('FirstName'), true); + $table->set_header($headerCounter++, get_lang('LastName'), true); $headers['firstname'] = get_lang('FirstName'); $headers['lastname'] = get_lang('LastName'); } else { - $table->set_header(1, get_lang('LastName'), true); - $table->set_header(2, get_lang('FirstName'), true); + $table->set_header($headerCounter++, get_lang('LastName'), true); + $table->set_header($headerCounter++, get_lang('FirstName'), true); $headers['lastname'] = get_lang('LastName'); $headers['firstname'] = get_lang('FirstName'); } - $table->set_header(3, get_lang('Login'), false); + $table->set_header($headerCounter++, get_lang('Login'), false); $headers['login'] = get_lang('Login'); $table->set_header( - 4, + $headerCounter++, get_lang('TrainingTime').' '. Display::return_icon('info3.gif', get_lang('CourseTimeInfo'), [], ICON_SIZE_TINY), false ); $headers['training_time'] = get_lang('TrainingTime'); $table->set_header( - 5, + $headerCounter++, get_lang('CourseProgress').' '. Display::return_icon('info3.gif', get_lang('ScormAndLPProgressTotalAverage'), [], ICON_SIZE_TINY), false @@ -655,45 +657,55 @@ if ($nbStudents > 0) { $headers['course_progress'] = get_lang('CourseProgress'); $table->set_header( - 6, + $headerCounter++, get_lang('ExerciseProgress').' '. Display::return_icon('info3.gif', get_lang('ExerciseProgressInfo'), [], ICON_SIZE_TINY), false ); $headers['exercise_progress'] = get_lang('ExerciseProgress'); $table->set_header( - 7, + $headerCounter++, get_lang('ExerciseAverage').' '. Display::return_icon('info3.gif', get_lang('ExerciseAverageInfo'), [], ICON_SIZE_TINY), false ); $headers['exercise_average'] = get_lang('ExerciseAverage'); $table->set_header( - 8, + $headerCounter++, get_lang('Score').' '. Display::return_icon('info3.gif', get_lang('ScormAndLPTestTotalAverage'), [], ICON_SIZE_TINY), false ); $headers['score'] = get_lang('Score'); - $table->set_header(9, get_lang('Student_publication'), false); + + $table->set_header( + $headerCounter++, + $bestScoreLabel.' '. + Display::return_icon('info3.gif', get_lang('ScormAndLPTestTotalAverage'), [], ICON_SIZE_TINY), + false + ); + $headers['score_best'] = $bestScoreLabel; + + $table->set_header($headerCounter++, get_lang('Student_publication'), false); $headers['student_publication'] = get_lang('Student_publication'); - $table->set_header(10, get_lang('Messages'), false); + $table->set_header($headerCounter++, get_lang('Messages'), false); $headers['messages'] = get_lang('Messages'); - $table->set_header(11, get_lang('Classes')); - $headers['clasess'] = get_lang('Classes'); + $table->set_header($headerCounter++, get_lang('Classes')); + $headers['classes'] = get_lang('Classes'); if (empty($sessionId)) { - $table->set_header(12, get_lang('Survey'), false); + $table->set_header($headerCounter++, get_lang('Survey'), false); $headers['survey'] = get_lang('Survey'); } else { - $table->set_header(12, get_lang('RegisteredDate'), false); + $table->set_header($headerCounter++, get_lang('RegisteredDate'), false); $headers['registered_at'] = get_lang('RegisteredDate'); } - $table->set_header(13, get_lang('FirstLoginInCourse'), false); + $table->set_header($headerCounter++, get_lang('FirstLoginInCourse'), false); $headers['first_login'] = get_lang('FirstLoginInCourse'); - $table->set_header(14, get_lang('LatestLoginInCourse'), false); + $table->set_header($headerCounter++, get_lang('LatestLoginInCourse'), false); $headers['latest_login'] = get_lang('LatestLoginInCourse'); - $counter = 15; + + $counter = $headerCounter; if (api_get_setting('show_email_addresses') === 'true') { $table->set_header($counter, get_lang('Email'), false); $headers['email'] = get_lang('Email'); @@ -766,7 +778,7 @@ $exerciseList = ExerciseLib::get_all_exercises( false, 3 ); -//$groupList = null; + if (!empty($groupList)) { $totalTime = null; $totalLpProgress = null; @@ -972,9 +984,9 @@ if ($export_csv) { $csv_headers[] = get_lang('ExerciseProgress'); $csv_headers[] = get_lang('ExerciseAverage'); $csv_headers[] = get_lang('Score'); + $csv_headers[] = $bestScoreLabel; $csv_headers[] = get_lang('Student_publication'); $csv_headers[] = get_lang('Messages'); - if (empty($sessionId)) { $csv_headers[] = get_lang('Survey'); } else {