|
|
|
@ -4697,7 +4697,7 @@ class Tracking |
|
|
|
* |
|
|
|
* |
|
|
|
* @return string|array |
|
|
|
* @return string|array |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public static function show_user_progress( |
|
|
|
public static function showUserProgress( |
|
|
|
$user_id, |
|
|
|
$user_id, |
|
|
|
$session_id = 0, |
|
|
|
$session_id = 0, |
|
|
|
$extra_params = '', |
|
|
|
$extra_params = '', |
|
|
|
@ -4767,7 +4767,7 @@ class Tracking |
|
|
|
$courseIdList[] = $row['id']; |
|
|
|
$courseIdList[] = $row['id']; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$orderBy = ' ORDER BY name '; |
|
|
|
$orderBy = ' ORDER BY display_end_date DESC, name '; |
|
|
|
$extraInnerJoin = null; |
|
|
|
$extraInnerJoin = null; |
|
|
|
|
|
|
|
|
|
|
|
if (SessionManager::orderCourseIsEnabled() && !empty($session_id)) { |
|
|
|
if (SessionManager::orderCourseIsEnabled() && !empty($session_id)) { |
|
|
|
@ -4849,7 +4849,7 @@ class Tracking |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$html = ''; |
|
|
|
$html = ''; |
|
|
|
// Course list |
|
|
|
// Course list. |
|
|
|
if ($show_courses) { |
|
|
|
if ($show_courses) { |
|
|
|
if (!empty($courses)) { |
|
|
|
if (!empty($courses)) { |
|
|
|
$html .= Display::page_header( |
|
|
|
$html .= Display::page_header( |
|
|
|
@ -4942,10 +4942,7 @@ class Tracking |
|
|
|
$bestScoreAverageNotInLP = round($bestScoreAverageNotInLP / count($exerciseList) * 100, 2); |
|
|
|
$bestScoreAverageNotInLP = round($bestScoreAverageNotInLP / count($exerciseList) * 100, 2); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$last_connection = self::get_last_connection_date_on_the_course( |
|
|
|
$last_connection = self::get_last_connection_date_on_the_course($user_id, $courseInfo); |
|
|
|
$user_id, |
|
|
|
|
|
|
|
$courseInfo |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (is_null($progress) || empty($progress)) { |
|
|
|
if (is_null($progress) || empty($progress)) { |
|
|
|
$progress = '0%'; |
|
|
|
$progress = '0%'; |
|
|
|
@ -5004,7 +5001,9 @@ class Tracking |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Session list |
|
|
|
$allowCareerUser = api_get_configuration_value('allow_career_users'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Session list. |
|
|
|
if (!empty($course_in_session)) { |
|
|
|
if (!empty($course_in_session)) { |
|
|
|
$main_session_graph = ''; |
|
|
|
$main_session_graph = ''; |
|
|
|
// Load graphics only when calling to an specific session |
|
|
|
// Load graphics only when calling to an specific session |
|
|
|
@ -5012,12 +5011,22 @@ class Tracking |
|
|
|
$my_results = []; |
|
|
|
$my_results = []; |
|
|
|
$all_exercise_graph_list = []; |
|
|
|
$all_exercise_graph_list = []; |
|
|
|
$all_exercise_start_time = []; |
|
|
|
$all_exercise_start_time = []; |
|
|
|
|
|
|
|
$allCareers = []; |
|
|
|
foreach ($course_in_session as $my_session_id => $session_data) { |
|
|
|
foreach ($course_in_session as $my_session_id => $session_data) { |
|
|
|
$course_list = $session_data['course_list']; |
|
|
|
$course_list = $session_data['course_list']; |
|
|
|
$user_count = count(SessionManager::get_users_by_session($my_session_id)); |
|
|
|
$user_count = count(SessionManager::get_users_by_session($my_session_id)); |
|
|
|
$exercise_graph_name_list = []; |
|
|
|
$exercise_graph_name_list = []; |
|
|
|
$exercise_graph_list = []; |
|
|
|
$exercise_graph_list = []; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$visibility = api_get_session_visibility($my_session_id, null, false, $user_id); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (SESSION_AVAILABLE === $visibility) { |
|
|
|
|
|
|
|
$careers = SessionManager::getCareersFromSession($my_session_id); |
|
|
|
|
|
|
|
if (!empty($careers)) { |
|
|
|
|
|
|
|
$allCareers = array_merge($allCareers, $careers); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
foreach ($course_list as $course_data) { |
|
|
|
foreach ($course_list as $course_data) { |
|
|
|
$exercise_list = ExerciseLib::get_all_exercises( |
|
|
|
$exercise_list = ExerciseLib::get_all_exercises( |
|
|
|
$course_data, |
|
|
|
$course_data, |
|
|
|
@ -5200,6 +5209,16 @@ class Tracking |
|
|
|
); |
|
|
|
); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($allowCareerUser && !empty($allCareers)) { |
|
|
|
|
|
|
|
$careers = []; |
|
|
|
|
|
|
|
foreach ($allCareers as $career) { |
|
|
|
|
|
|
|
$careers[$career['id']] = $career; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$title = Display::page_subheader(get_lang('OngoingTraining')); |
|
|
|
|
|
|
|
$html .= $title.MyStudents::getCareersTable($careers); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$html .= Display::div($sessionsTable->toHtml(), ['class' => 'table-responsive']); |
|
|
|
$html .= Display::div($sessionsTable->toHtml(), ['class' => 'table-responsive']); |
|
|
|
$html .= Display::div( |
|
|
|
$html .= Display::div( |
|
|
|
$main_session_graph, |
|
|
|
$main_session_graph, |
|
|
|
@ -5435,21 +5454,22 @@ class Tracking |
|
|
|
* @param string $course_code |
|
|
|
* @param string $course_code |
|
|
|
* @param int $session_id |
|
|
|
* @param int $session_id |
|
|
|
* @param bool $showDiagram |
|
|
|
* @param bool $showDiagram |
|
|
|
* |
|
|
|
|
|
|
|
* @return string html code |
|
|
|
|
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public static function show_course_detail($user_id, $course_code, $session_id, $showDiagram = false) |
|
|
|
public static function show_course_detail($user_id, $course_code, $session_id, $showDiagram = false): string |
|
|
|
{ |
|
|
|
{ |
|
|
|
$html = ''; |
|
|
|
if (empty($user_id) || empty($course_code)) { |
|
|
|
if (isset($course_code)) { |
|
|
|
return ''; |
|
|
|
$user_id = (int) $user_id; |
|
|
|
} |
|
|
|
$session_id = (int) $session_id; |
|
|
|
|
|
|
|
$course_info = api_get_course_info($course_code); |
|
|
|
$course_info = api_get_course_info($course_code); |
|
|
|
if (empty($course_info)) { |
|
|
|
if (empty($course_info)) { |
|
|
|
return ''; |
|
|
|
return ''; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$html .= '<a name="course_session_data"></a>'; |
|
|
|
$user_id = (int) $user_id; |
|
|
|
|
|
|
|
$session_id = (int) $session_id; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$html = '<a name="course_session_data"></a>'; |
|
|
|
$html .= Display::page_subheader2($course_info['title']); |
|
|
|
$html .= Display::page_subheader2($course_info['title']); |
|
|
|
|
|
|
|
|
|
|
|
if ($showDiagram && !empty($session_id)) { |
|
|
|
if ($showDiagram && !empty($session_id)) { |
|
|
|
@ -5459,8 +5479,6 @@ class Tracking |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Course details |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Show exercise results of invisible exercises? see BT#4091 |
|
|
|
// Show exercise results of invisible exercises? see BT#4091 |
|
|
|
$quizzesHtml = self::generateQuizzesTable($course_info, $session_id); |
|
|
|
$quizzesHtml = self::generateQuizzesTable($course_info, $session_id); |
|
|
|
// LP table results |
|
|
|
// LP table results |
|
|
|
@ -5482,7 +5500,6 @@ class Tracking |
|
|
|
$html .= $toolsHtml[$tool].PHP_EOL; |
|
|
|
$html .= $toolsHtml[$tool].PHP_EOL; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return $html; |
|
|
|
return $html; |
|
|
|
} |
|
|
|
} |
|
|
|
|