|
|
@ -227,6 +227,7 @@ $form_search = new FormValidator( |
|
|
|
$form_search->addHidden('from', Security::remove_XSS($from)); |
|
|
|
$form_search->addHidden('from', Security::remove_XSS($from)); |
|
|
|
$form_search->addHidden('session_id', $sessionId); |
|
|
|
$form_search->addHidden('session_id', $sessionId); |
|
|
|
$form_search->addHidden('id_session', $sessionId); |
|
|
|
$form_search->addHidden('id_session', $sessionId); |
|
|
|
|
|
|
|
$form_search->addHidden('cidReq', $courseCode); |
|
|
|
$form_search->addElement('text', 'user_keyword'); |
|
|
|
$form_search->addElement('text', 'user_keyword'); |
|
|
|
$form_search->addButtonSearch(get_lang('Search users')); |
|
|
|
$form_search->addButtonSearch(get_lang('Search users')); |
|
|
|
echo Display::toolbarAction( |
|
|
|
echo Display::toolbarAction( |
|
|
@ -492,7 +493,7 @@ if ($nbStudents > 0) { |
|
|
|
$scoresDistribution[$reducedAverage]++; |
|
|
|
$scoresDistribution[$reducedAverage]++; |
|
|
|
} |
|
|
|
} |
|
|
|
$scoreStudent = substr($userTracking[5], 0, -1) + substr($userTracking[7], 0, -1); |
|
|
|
$scoreStudent = substr($userTracking[5], 0, -1) + substr($userTracking[7], 0, -1); |
|
|
|
list($hours, $minutes, $seconds) = preg_split('/:/', $userTracking[4]); |
|
|
|
[$hours, $minutes, $seconds] = preg_split('/:/', $userTracking[4]); |
|
|
|
$minutes = round((3600 * $hours + 60 * $minutes + $seconds) / 60); |
|
|
|
$minutes = round((3600 * $hours + 60 * $minutes + $seconds) / 60); |
|
|
|
|
|
|
|
|
|
|
|
$certificate = false; |
|
|
|
$certificate = false; |
|
|
@ -532,6 +533,7 @@ if ($nbStudents > 0) { |
|
|
|
|
|
|
|
|
|
|
|
$html .= Display::page_subheader2(get_lang('Learners list')); |
|
|
|
$html .= Display::page_subheader2(get_lang('Learners list')); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$bestScoreLabel = get_lang('Score').' - '.get_lang('BestAttempt'); |
|
|
|
if ($nbStudents > 0) { |
|
|
|
if ($nbStudents > 0) { |
|
|
|
$mainForm = new FormValidator( |
|
|
|
$mainForm = new FormValidator( |
|
|
|
'filter', |
|
|
|
'filter', |
|
|
@ -621,33 +623,34 @@ if ($nbStudents > 0) { |
|
|
|
$parameters['id_session'] = $sessionId; |
|
|
|
$parameters['id_session'] = $sessionId; |
|
|
|
$parameters['from'] = isset($_GET['myspace']) ? Security::remove_XSS($_GET['myspace']) : null; |
|
|
|
$parameters['from'] = isset($_GET['myspace']) ? Security::remove_XSS($_GET['myspace']) : null; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$headerCounter = 0; |
|
|
|
$headers = []; |
|
|
|
$headers = []; |
|
|
|
// tab of header texts |
|
|
|
// tab of header texts |
|
|
|
$table->set_header(0, get_lang('Code'), true); |
|
|
|
$table->set_header($headerCounter++, get_lang('OfficialCode'), true); |
|
|
|
$headers['official_code'] = get_lang('Code'); |
|
|
|
$headers['official_code'] = get_lang('OfficialCode'); |
|
|
|
if ($sortByFirstName) { |
|
|
|
if ($sortByFirstName) { |
|
|
|
$table->set_header(1, get_lang('First name'), true); |
|
|
|
$table->set_header($headerCounter++, get_lang('FirstName'), true); |
|
|
|
$table->set_header(2, get_lang('Last name'), true); |
|
|
|
$table->set_header($headerCounter++, get_lang('LastName'), true); |
|
|
|
$headers['firstname'] = get_lang('First name'); |
|
|
|
$headers['firstname'] = get_lang('FirstName'); |
|
|
|
$headers['lastname'] = get_lang('Last name'); |
|
|
|
$headers['lastname'] = get_lang('LastName'); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$table->set_header(1, get_lang('Last name'), true); |
|
|
|
$table->set_header($headerCounter++, get_lang('LastName'), true); |
|
|
|
$table->set_header(2, get_lang('First name'), true); |
|
|
|
$table->set_header($headerCounter++, get_lang('FirstName'), true); |
|
|
|
$headers['lastname'] = get_lang('Last name'); |
|
|
|
$headers['lastname'] = get_lang('LastName'); |
|
|
|
$headers['firstname'] = get_lang('First name'); |
|
|
|
$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'); |
|
|
|
$headers['login'] = get_lang('Login'); |
|
|
|
|
|
|
|
|
|
|
|
$table->set_header( |
|
|
|
$table->set_header( |
|
|
|
4, |
|
|
|
$headerCounter++, |
|
|
|
get_lang('TrainingTime').' '. |
|
|
|
get_lang('TrainingTime').' '. |
|
|
|
Display::return_icon('info3.gif', get_lang('CourseTimeInfo'), [], ICON_SIZE_TINY), |
|
|
|
Display::return_icon('info3.gif', get_lang('CourseTimeInfo'), [], ICON_SIZE_TINY), |
|
|
|
false |
|
|
|
false |
|
|
|
); |
|
|
|
); |
|
|
|
$headers['training_time'] = get_lang('TrainingTime'); |
|
|
|
$headers['training_time'] = get_lang('TrainingTime'); |
|
|
|
$table->set_header( |
|
|
|
$table->set_header( |
|
|
|
5, |
|
|
|
$headerCounter++, |
|
|
|
get_lang('CourseProgress').' '. |
|
|
|
get_lang('CourseProgress').' '. |
|
|
|
Display::return_icon('info3.gif', get_lang('ScormAndLPProgressTotalAverage'), [], ICON_SIZE_TINY), |
|
|
|
Display::return_icon('info3.gif', get_lang('ScormAndLPProgressTotalAverage'), [], ICON_SIZE_TINY), |
|
|
|
false |
|
|
|
false |
|
|
@ -655,46 +658,75 @@ if ($nbStudents > 0) { |
|
|
|
$headers['course_progress'] = get_lang('CourseProgress'); |
|
|
|
$headers['course_progress'] = get_lang('CourseProgress'); |
|
|
|
|
|
|
|
|
|
|
|
$table->set_header( |
|
|
|
$table->set_header( |
|
|
|
6, |
|
|
|
$headerCounter++, |
|
|
|
get_lang('ExerciseProgress').' '. |
|
|
|
get_lang('ExerciseProgress').' '. |
|
|
|
Display::return_icon('info3.gif', get_lang('ExerciseProgressInfo'), [], ICON_SIZE_TINY), |
|
|
|
Display::return_icon('info3.gif', get_lang('ExerciseProgressInfo'), [], ICON_SIZE_TINY), |
|
|
|
false |
|
|
|
false |
|
|
|
); |
|
|
|
); |
|
|
|
$headers['exercise_progress'] = get_lang('ExerciseProgress'); |
|
|
|
$headers['exercise_progress'] = get_lang('ExerciseProgress'); |
|
|
|
$table->set_header( |
|
|
|
$table->set_header( |
|
|
|
7, |
|
|
|
$headerCounter++, |
|
|
|
get_lang('ExerciseAverage').' '. |
|
|
|
get_lang('ExerciseAverage').' '. |
|
|
|
Display::return_icon('info3.gif', get_lang('ExerciseAverageInfo'), [], ICON_SIZE_TINY), |
|
|
|
Display::return_icon('info3.gif', get_lang('ExerciseAverageInfo'), [], ICON_SIZE_TINY), |
|
|
|
false |
|
|
|
false |
|
|
|
); |
|
|
|
); |
|
|
|
$headers['exercise_average'] = get_lang('ExerciseAverage'); |
|
|
|
$headers['exercise_average'] = get_lang('ExerciseAverage'); |
|
|
|
$table->set_header( |
|
|
|
$table->set_header( |
|
|
|
8, |
|
|
|
$headerCounter++, |
|
|
|
get_lang('Score').' '. |
|
|
|
get_lang('Score').' '. |
|
|
|
Display::return_icon('info3.gif', get_lang('ScormAndLPTestTotalAverage'), [], ICON_SIZE_TINY), |
|
|
|
Display::return_icon('info3.gif', get_lang('ScormAndLPTestTotalAverage'), [], ICON_SIZE_TINY), |
|
|
|
false |
|
|
|
false |
|
|
|
); |
|
|
|
); |
|
|
|
$headers['score'] = get_lang('Score'); |
|
|
|
$headers['score'] = get_lang('Score'); |
|
|
|
$table->set_header(9, get_lang('Assignments'), false); |
|
|
|
$table->set_header( |
|
|
|
$headers['student_publication'] = get_lang('Assignments'); |
|
|
|
$headerCounter++, |
|
|
|
$table->set_header(10, get_lang('Messages'), false); |
|
|
|
$bestScoreLabel.' '. |
|
|
|
|
|
|
|
Display::return_icon('info3.gif', get_lang('ScormAndLPTestTotalAverage'), [], ICON_SIZE_TINY), |
|
|
|
|
|
|
|
false |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
$headers['score_best'] = $bestScoreLabel; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$addExerciseOption = api_get_configuration_value('add_exercise_best_attempt_in_report'); |
|
|
|
|
|
|
|
$exerciseResultHeaders = []; |
|
|
|
|
|
|
|
if (!empty($addExerciseOption) && isset($addExerciseOption['courses']) && |
|
|
|
|
|
|
|
isset($addExerciseOption['courses'][$courseCode]) |
|
|
|
|
|
|
|
) { |
|
|
|
|
|
|
|
foreach ($addExerciseOption['courses'][$courseCode] as $exerciseId) { |
|
|
|
|
|
|
|
$exercise = new Exercise(); |
|
|
|
|
|
|
|
$exercise->read($exerciseId); |
|
|
|
|
|
|
|
if ($exercise->iId) { |
|
|
|
|
|
|
|
$title = get_lang('Exercise').': '.$exercise->get_formated_title(); |
|
|
|
|
|
|
|
$table->set_header( |
|
|
|
|
|
|
|
$headerCounter++, |
|
|
|
|
|
|
|
$title, |
|
|
|
|
|
|
|
false |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
$exerciseResultHeaders[] = $title; |
|
|
|
|
|
|
|
$headers['exercise_'.$exercise->iId] = $title; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$table->set_header($headerCounter++, get_lang('Student_publication'), false); |
|
|
|
|
|
|
|
$headers['student_publication'] = get_lang('Student_publication'); |
|
|
|
|
|
|
|
$table->set_header($headerCounter++, get_lang('Messages'), false); |
|
|
|
$headers['messages'] = get_lang('Messages'); |
|
|
|
$headers['messages'] = get_lang('Messages'); |
|
|
|
$table->set_header(11, get_lang('Classes')); |
|
|
|
$table->set_header($headerCounter++, get_lang('Classes')); |
|
|
|
$headers['clasess'] = get_lang('Classes'); |
|
|
|
$headers['classes'] = get_lang('Classes'); |
|
|
|
|
|
|
|
|
|
|
|
if (empty($sessionId)) { |
|
|
|
if (empty($sessionId)) { |
|
|
|
$table->set_header(12, get_lang('Survey'), false); |
|
|
|
$table->set_header($headerCounter++, get_lang('Survey'), false); |
|
|
|
$headers['survey'] = get_lang('Survey'); |
|
|
|
$headers['survey'] = get_lang('Survey'); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$table->set_header(12, get_lang('RegisteredDate'), false); |
|
|
|
$table->set_header($headerCounter++, get_lang('RegisteredDate'), false); |
|
|
|
$headers['registered_at'] = get_lang('RegisteredDate'); |
|
|
|
$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'); |
|
|
|
$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'); |
|
|
|
$headers['latest_login'] = get_lang('LatestLoginInCourse'); |
|
|
|
$counter = 15; |
|
|
|
$counter = $headerCounter; |
|
|
|
if ('true' === api_get_setting('show_email_addresses')) { |
|
|
|
if (api_get_setting('show_email_addresses') === 'true') { |
|
|
|
$table->set_header($counter, get_lang('Email'), false); |
|
|
|
$table->set_header($counter, get_lang('Email'), false); |
|
|
|
$headers['email'] = get_lang('Email'); |
|
|
|
$headers['email'] = get_lang('Email'); |
|
|
|
$counter++; |
|
|
|
$counter++; |
|
|
@ -750,7 +782,7 @@ if ($nbStudents > 0) { |
|
|
|
$groupContent = ''; |
|
|
|
$groupContent = ''; |
|
|
|
echo Display::panel($html, $titleSession); |
|
|
|
echo Display::panel($html, $titleSession); |
|
|
|
|
|
|
|
|
|
|
|
$groupTable = new HTML_Table(['class' => 'table table-bordered data_table']); |
|
|
|
$groupTable = new HTML_Table(['class' => 'table table-hover table-striped table-bordered data_table']); |
|
|
|
$column = 0; |
|
|
|
$column = 0; |
|
|
|
$groupTable->setHeaderContents(0, $column++, get_lang('Name')); |
|
|
|
$groupTable->setHeaderContents(0, $column++, get_lang('Name')); |
|
|
|
$groupTable->setHeaderContents(0, $column++, get_lang('TrainingTime')); |
|
|
|
$groupTable->setHeaderContents(0, $column++, get_lang('TrainingTime')); |
|
|
@ -891,7 +923,6 @@ if (!empty($groupList)) { |
|
|
|
$sessionId |
|
|
|
$sessionId |
|
|
|
); |
|
|
|
); |
|
|
|
$averageTime = null; |
|
|
|
$averageTime = null; |
|
|
|
$time = null; |
|
|
|
|
|
|
|
if (!empty($timeInSeconds)) { |
|
|
|
if (!empty($timeInSeconds)) { |
|
|
|
$time = api_time_to_hms($timeInSeconds); |
|
|
|
$time = api_time_to_hms($timeInSeconds); |
|
|
|
$averageTime = $timeInSeconds / $nbStudents; |
|
|
|
$averageTime = $timeInSeconds / $nbStudents; |
|
|
@ -973,7 +1004,13 @@ if ($export_csv) { |
|
|
|
$csv_headers[] = get_lang('Exercise progress'); |
|
|
|
$csv_headers[] = get_lang('Exercise progress'); |
|
|
|
$csv_headers[] = get_lang('Exercise average'); |
|
|
|
$csv_headers[] = get_lang('Exercise average'); |
|
|
|
$csv_headers[] = get_lang('Score'); |
|
|
|
$csv_headers[] = get_lang('Score'); |
|
|
|
$csv_headers[] = get_lang('Assignments'); |
|
|
|
$csv_headers[] = $bestScoreLabel; |
|
|
|
|
|
|
|
if (!empty($exerciseResultHeaders)) { |
|
|
|
|
|
|
|
foreach ($exerciseResultHeaders as $exerciseLabel) { |
|
|
|
|
|
|
|
$csv_headers[] = $exerciseLabel; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
$csv_headers[] = get_lang('Student_publication'); |
|
|
|
$csv_headers[] = get_lang('Messages'); |
|
|
|
$csv_headers[] = get_lang('Messages'); |
|
|
|
|
|
|
|
|
|
|
|
if (empty($sessionId)) { |
|
|
|
if (empty($sessionId)) { |
|
|
|