|
|
|
|
@ -25,23 +25,24 @@ $courseCode = ''; |
|
|
|
|
if ($courseInfo) { |
|
|
|
|
$courseCode = $courseInfo['code']; |
|
|
|
|
} |
|
|
|
|
$student_id = isset($_GET['student']) ? (int) $_GET['student'] : 0; |
|
|
|
|
$studentId = isset($_GET['student']) ? (int) $_GET['student'] : 0; |
|
|
|
|
|
|
|
|
|
if (empty($studentId)) { |
|
|
|
|
api_not_allowed(true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$coachId = isset($_GET['id_coach']) ? (int) $_GET['id_coach'] : 0; |
|
|
|
|
$details = isset($_GET['details']) ? Security::remove_XSS($_GET['details']) : ''; |
|
|
|
|
$currentUrl = api_get_self().'?student='.$student_id.'&course='.$courseCode.'&id_session='.$sessionId |
|
|
|
|
$currentUrl = api_get_self().'?student='.$studentId.'&course='.$courseCode.'&id_session='.$sessionId |
|
|
|
|
.'&origin='.$origin.'&details='.$details; |
|
|
|
|
$allowMessages = api_get_configuration_value('private_messages_about_user'); |
|
|
|
|
$workingTime = api_get_configuration_value('considered_working_time'); |
|
|
|
|
$workingTimeEdit = api_get_configuration_value('allow_working_time_edition'); |
|
|
|
|
|
|
|
|
|
if (empty($student_id)) { |
|
|
|
|
api_not_allowed(true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// user info |
|
|
|
|
$user_info = api_get_user_info($student_id); |
|
|
|
|
$userInfo = api_get_user_info($studentId); |
|
|
|
|
|
|
|
|
|
if (empty($user_info)) { |
|
|
|
|
if (empty($userInfo)) { |
|
|
|
|
api_not_allowed(true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -149,7 +150,7 @@ if (!empty($details)) { |
|
|
|
|
'name' => get_lang('Learners of trainer'), |
|
|
|
|
]; |
|
|
|
|
$interbreadcrumb[] = [ |
|
|
|
|
'url' => 'myStudents.php?student='.$student_id.'&id_coach='.$coachId, |
|
|
|
|
'url' => 'myStudents.php?student='.$studentId.'&id_coach='.$coachId, |
|
|
|
|
'name' => get_lang('Learner details'), |
|
|
|
|
]; |
|
|
|
|
} else { |
|
|
|
|
@ -158,7 +159,7 @@ if (!empty($details)) { |
|
|
|
|
'name' => get_lang('My learners'), |
|
|
|
|
]; |
|
|
|
|
$interbreadcrumb[] = [ |
|
|
|
|
'url' => 'myStudents.php?student='.$student_id, |
|
|
|
|
'url' => 'myStudents.php?student='.$studentId, |
|
|
|
|
'name' => get_lang('Learner details'), |
|
|
|
|
]; |
|
|
|
|
} |
|
|
|
|
@ -182,7 +183,7 @@ if (!empty($details)) { |
|
|
|
|
$this_section = SECTION_TRACKING; |
|
|
|
|
$interbreadcrumb[] = ['url' => 'index.php', 'name' => get_lang('Reporting')]; |
|
|
|
|
$interbreadcrumb[] = ['url' => 'teachers.php', 'name' => get_lang('Trainers')]; |
|
|
|
|
$nameTools = $user_info['complete_name']; |
|
|
|
|
$nameTools = $userInfo['complete_name']; |
|
|
|
|
} else { |
|
|
|
|
$interbreadcrumb[] = [ |
|
|
|
|
'url' => api_is_student_boss() ? '#' : 'index.php', |
|
|
|
|
@ -221,7 +222,7 @@ switch ($action) { |
|
|
|
|
} |
|
|
|
|
$workingTime = isset($_GET['time']) ? $_GET['time'] : ''; |
|
|
|
|
$workId = isset($_GET['work_id']) ? $_GET['work_id'] : ''; |
|
|
|
|
Event::eventAddVirtualCourseTime($courseInfo['real_id'], $student_id, $sessionId, $workingTime, $workId); |
|
|
|
|
Event::eventAddVirtualCourseTime($courseInfo['real_id'], $studentId, $sessionId, $workingTime, $workId); |
|
|
|
|
Display::addFlash(Display::return_message(get_lang('Updated'))); |
|
|
|
|
|
|
|
|
|
header('Location: '.$currentUrl); |
|
|
|
|
@ -232,7 +233,7 @@ switch ($action) { |
|
|
|
|
} |
|
|
|
|
$workingTime = isset($_GET['time']) ? $_GET['time'] : ''; |
|
|
|
|
$workId = isset($_GET['work_id']) ? $_GET['work_id'] : ''; |
|
|
|
|
Event::eventRemoveVirtualCourseTime($courseInfo['real_id'], $student_id, $sessionId, $workingTime, $workId); |
|
|
|
|
Event::eventRemoveVirtualCourseTime($courseInfo['real_id'], $studentId, $sessionId, $workingTime, $workId); |
|
|
|
|
|
|
|
|
|
Display::addFlash(Display::return_message(get_lang('Updated'))); |
|
|
|
|
|
|
|
|
|
@ -254,7 +255,7 @@ switch ($action) { |
|
|
|
|
$progressPerCourse = []; |
|
|
|
|
foreach ($courses as $course) { |
|
|
|
|
$courseId = $course['c_id']; |
|
|
|
|
$courseTimeSpent = Tracking::get_time_spent_on_the_course($student_id, $courseId, $sessionToExport); |
|
|
|
|
$courseTimeSpent = Tracking::get_time_spent_on_the_course($studentId, $courseId, $sessionToExport); |
|
|
|
|
$timeSpentPerCourse[$courseId] = $courseTimeSpent; |
|
|
|
|
$timeSpent += $courseTimeSpent; |
|
|
|
|
$sql = "SELECT DISTINCT count(course_access_id) as count |
|
|
|
|
@ -262,11 +263,11 @@ switch ($action) { |
|
|
|
|
WHERE |
|
|
|
|
c_id = $courseId AND |
|
|
|
|
session_id = $sessionToExport AND |
|
|
|
|
user_id = $student_id"; |
|
|
|
|
user_id = $studentId"; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
$row = Database::fetch_array($result); |
|
|
|
|
$numberVisits += $row['count']; |
|
|
|
|
$courseProgress = Tracking::get_avg_student_progress($student_id, $course['code'], [], $sessionToExport); |
|
|
|
|
$courseProgress = Tracking::get_avg_student_progress($studentId, $course['code'], [], $sessionToExport); |
|
|
|
|
$progressPerCourse[$courseId] = $courseProgress; |
|
|
|
|
$progress += $courseProgress; |
|
|
|
|
} |
|
|
|
|
@ -274,8 +275,8 @@ switch ($action) { |
|
|
|
|
$average = round($progress / count($courses), 1); |
|
|
|
|
$average = empty($average) ? '0%' : $average.'%'; |
|
|
|
|
|
|
|
|
|
$first = Tracking::get_first_connection_date($student_id); |
|
|
|
|
$last = Tracking::get_last_connection_date($student_id); |
|
|
|
|
$first = Tracking::get_first_connection_date($studentId); |
|
|
|
|
$last = Tracking::get_last_connection_date($studentId); |
|
|
|
|
|
|
|
|
|
$table = new HTML_Table(['class' => 'data_table']); |
|
|
|
|
$column = 0; |
|
|
|
|
@ -328,7 +329,7 @@ switch ($action) { |
|
|
|
|
$courseCodeItem = $courseInfoItem['code']; |
|
|
|
|
|
|
|
|
|
$isSubscribed = CourseManager::is_user_subscribed_in_course( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
$courseCodeItem, |
|
|
|
|
true, |
|
|
|
|
$sId |
|
|
|
|
@ -342,7 +343,7 @@ switch ($action) { |
|
|
|
|
$totalProgress += $progress; |
|
|
|
|
|
|
|
|
|
$bestScore = Tracking::get_avg_student_score( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
$courseCodeItem, |
|
|
|
|
[], |
|
|
|
|
$sId, |
|
|
|
|
@ -391,7 +392,7 @@ switch ($action) { |
|
|
|
|
$tpl = new Template('', false, false, false, true, false, false); |
|
|
|
|
$tpl->assign('title', get_lang('Attestation of attendance')); |
|
|
|
|
$tpl->assign('session_title', $sessionInfo['name']); |
|
|
|
|
$tpl->assign('student', $user_info['complete_name']); |
|
|
|
|
$tpl->assign('student', $userInfo['complete_name']); |
|
|
|
|
$tpl->assign('table_progress', $table->toHtml()); |
|
|
|
|
$tpl->assign('subtitle', sprintf( |
|
|
|
|
get_lang('In session %s, you had the following results'), |
|
|
|
|
@ -405,7 +406,7 @@ switch ($action) { |
|
|
|
|
'session_info' => $sessionInfo, |
|
|
|
|
'course_info' => '', |
|
|
|
|
'pdf_date' => '', |
|
|
|
|
'student_info' => $user_info, |
|
|
|
|
'student_info' => $userInfo, |
|
|
|
|
'show_grade_generated_date' => true, |
|
|
|
|
'show_real_course_teachers' => false, |
|
|
|
|
'show_teacher_as_myself' => false, |
|
|
|
|
@ -444,7 +445,7 @@ switch ($action) { |
|
|
|
|
$title .= '_'.$sessionInfo['name']; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$fileName = 'report'.$title.'_'.$user_info['complete_name']; |
|
|
|
|
$fileName = 'report'.$title.'_'.$userInfo['complete_name']; |
|
|
|
|
switch ($export) { |
|
|
|
|
case 'csv': |
|
|
|
|
Export::arrayToCsv($dataToExport, $fileName); |
|
|
|
|
@ -465,27 +466,27 @@ switch ($action) { |
|
|
|
|
if (!empty($subject) && !empty($message)) { |
|
|
|
|
$currentUserInfo = api_get_user_info(); |
|
|
|
|
MessageManager::sendMessageAboutUser( |
|
|
|
|
$user_info, |
|
|
|
|
$userInfo, |
|
|
|
|
$currentUserInfo, |
|
|
|
|
$subject, |
|
|
|
|
$message |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// Send also message to all student bosses |
|
|
|
|
$bossList = UserManager::getStudentBossList($student_id); |
|
|
|
|
$bossList = UserManager::getStudentBossList($studentId); |
|
|
|
|
|
|
|
|
|
if (!empty($bossList)) { |
|
|
|
|
$url = api_get_path(WEB_CODE_PATH).'mySpace/myStudents.php?student='.$student_id; |
|
|
|
|
$url = api_get_path(WEB_CODE_PATH).'mySpace/myStudents.php?student='.$studentId; |
|
|
|
|
$link = Display::url($url, $url); |
|
|
|
|
|
|
|
|
|
foreach ($bossList as $boss) { |
|
|
|
|
MessageManager::send_message_simple( |
|
|
|
|
$boss['boss_id'], |
|
|
|
|
sprintf(get_lang('Follow up message about student %s'), $user_info['complete_name']), |
|
|
|
|
sprintf(get_lang('Follow up message about student %s'), $userInfo['complete_name']), |
|
|
|
|
sprintf( |
|
|
|
|
get_lang('Hi,<br/><br/>'), |
|
|
|
|
$currentUserInfo['complete_name'], |
|
|
|
|
$user_info['complete_name'], |
|
|
|
|
$userInfo['complete_name'], |
|
|
|
|
$link |
|
|
|
|
) |
|
|
|
|
); |
|
|
|
|
@ -505,35 +506,35 @@ switch ($action) { |
|
|
|
|
// Delete old certificate |
|
|
|
|
$myCertificate = GradebookUtils::get_certificate_by_user_id( |
|
|
|
|
0, |
|
|
|
|
$student_id |
|
|
|
|
$studentId |
|
|
|
|
); |
|
|
|
|
if ($myCertificate) { |
|
|
|
|
$certificate = new Certificate($myCertificate['id'], $student_id); |
|
|
|
|
$certificate = new Certificate($myCertificate['id'], $studentId); |
|
|
|
|
$certificate->delete(true); |
|
|
|
|
} |
|
|
|
|
// Create new one |
|
|
|
|
$certificate = new Certificate(0, $student_id); |
|
|
|
|
$certificate = new Certificate(0, $studentId); |
|
|
|
|
$certificate->generatePdfFromCustomCertificate(); |
|
|
|
|
exit; |
|
|
|
|
break; |
|
|
|
|
case 'send_legal': |
|
|
|
|
$isBoss = UserManager::userIsBossOfStudent(api_get_user_id(), $student_id); |
|
|
|
|
$isBoss = UserManager::userIsBossOfStudent(api_get_user_id(), $studentId); |
|
|
|
|
if ($isBoss || api_is_platform_admin()) { |
|
|
|
|
$subject = get_lang('Legal conditions'); |
|
|
|
|
$content = sprintf( |
|
|
|
|
get_lang('Hello,<br />Your tutor sent you your terms and conditions. You can sign it following this URL: %s'), |
|
|
|
|
api_get_path(WEB_PATH) |
|
|
|
|
); |
|
|
|
|
MessageManager::send_message_simple($student_id, $subject, $content); |
|
|
|
|
MessageManager::send_message_simple($studentId, $subject, $content); |
|
|
|
|
Display::addFlash(Display::return_message(get_lang('Sent'))); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case 'delete_legal': |
|
|
|
|
$isBoss = UserManager::userIsBossOfStudent(api_get_user_id(), $student_id); |
|
|
|
|
$isBoss = UserManager::userIsBossOfStudent(api_get_user_id(), $studentId); |
|
|
|
|
if ($isBoss || api_is_platform_admin()) { |
|
|
|
|
$extraFieldValue = new ExtraFieldValue('user'); |
|
|
|
|
$value = $extraFieldValue->get_values_by_handler_and_field_variable( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
'legal_accept' |
|
|
|
|
); |
|
|
|
|
$result = $extraFieldValue->delete($value['id']); |
|
|
|
|
@ -547,12 +548,12 @@ switch ($action) { |
|
|
|
|
$check = true; |
|
|
|
|
|
|
|
|
|
if (!empty($lp_id) && |
|
|
|
|
!empty($student_id) && |
|
|
|
|
!empty($studentId) && |
|
|
|
|
api_is_allowed_to_edit() && |
|
|
|
|
Security::check_token('get') |
|
|
|
|
) { |
|
|
|
|
Event::delete_student_lp_events( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
$lp_id, |
|
|
|
|
$courseInfo, |
|
|
|
|
$sessionId |
|
|
|
|
@ -611,7 +612,7 @@ $sql = "SELECT c_id |
|
|
|
|
FROM $tbl_course_user |
|
|
|
|
WHERE |
|
|
|
|
relation_type <> ".COURSE_RELATION_TYPE_RRHH." AND |
|
|
|
|
user_id = ".$student_id; |
|
|
|
|
user_id = ".$studentId; |
|
|
|
|
$rs = Database::query($sql); |
|
|
|
|
|
|
|
|
|
while ($row = Database::fetch_array($rs)) { |
|
|
|
|
@ -627,7 +628,7 @@ while ($row = Database::fetch_array($rs)) { |
|
|
|
|
// Get the list of sessions where the user is subscribed as student |
|
|
|
|
$sql = 'SELECT session_id, c_id |
|
|
|
|
FROM '.Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER).' |
|
|
|
|
WHERE user_id='.$student_id; |
|
|
|
|
WHERE user_id='.$studentId; |
|
|
|
|
$rs = Database::query($sql); |
|
|
|
|
$tmp_sessions = []; |
|
|
|
|
while ($row = Database::fetch_array($rs, 'ASSOC')) { |
|
|
|
|
@ -651,12 +652,12 @@ $isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh( |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if (api_is_drh() && !api_is_platform_admin()) { |
|
|
|
|
if (!empty($student_id)) { |
|
|
|
|
if (!empty($studentId)) { |
|
|
|
|
if (api_drh_can_access_all_session_content()) { |
|
|
|
|
} else { |
|
|
|
|
if (!$isDrhOfCourse) { |
|
|
|
|
if (api_is_drh() && |
|
|
|
|
!UserManager::is_user_followed_by_drh($student_id, api_get_user_id()) |
|
|
|
|
!UserManager::is_user_followed_by_drh($studentId, api_get_user_id()) |
|
|
|
|
) { |
|
|
|
|
api_not_allowed(true); |
|
|
|
|
} |
|
|
|
|
@ -691,40 +692,40 @@ echo '<a href="'.api_get_self().'?'.Security::remove_XSS($_SERVER['QUERY_STRING' |
|
|
|
|
|
|
|
|
|
echo Display::url( |
|
|
|
|
Display::return_icon('attendance.png', get_lang('Access details'), '', ICON_SIZE_MEDIUM), |
|
|
|
|
api_get_path(WEB_CODE_PATH).'mySpace/access_details_session.php?user_id='.$student_id |
|
|
|
|
api_get_path(WEB_CODE_PATH).'mySpace/access_details_session.php?user_id='.$studentId |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if (!empty($user_info['email'])) { |
|
|
|
|
$send_mail = '<a href="mailto:'.$user_info['email'].'">'. |
|
|
|
|
if (!empty($userInfo['email'])) { |
|
|
|
|
$send_mail = '<a href="mailto:'.$userInfo['email'].'">'. |
|
|
|
|
Display::return_icon('mail_send.png', get_lang('Send message mail'), '', ICON_SIZE_MEDIUM).'</a>'; |
|
|
|
|
} else { |
|
|
|
|
$send_mail = Display::return_icon('mail_send_na.png', get_lang('Send message mail'), '', ICON_SIZE_MEDIUM); |
|
|
|
|
} |
|
|
|
|
echo $send_mail; |
|
|
|
|
if (!empty($student_id) && !empty($courseCode)) { |
|
|
|
|
if (!empty($studentId) && !empty($courseCode)) { |
|
|
|
|
// Only show link to connection details if course and student were defined in the URL |
|
|
|
|
echo '<a href="access_details.php?student='.$student_id.'&course='.$course_code.'&origin='.$origin.'&cidReq=' |
|
|
|
|
echo '<a href="access_details.php?student='.$studentId.'&course='.$course_code.'&origin='.$origin.'&cidReq=' |
|
|
|
|
.$course_code.'&id_session='.$sessionId.'">' |
|
|
|
|
.Display::return_icon('statistics.png', get_lang('Access details'), '', ICON_SIZE_MEDIUM) |
|
|
|
|
.'</a>'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$notebookTeacherEnable = 'true' === api_get_plugin_setting('notebookteacher', 'enable_plugin_notebookteacher'); |
|
|
|
|
if ($notebookTeacherEnable && !empty($student_id) && !empty($course_code)) { |
|
|
|
|
if ($notebookTeacherEnable && !empty($studentId) && !empty($course_code)) { |
|
|
|
|
// link notebookteacher |
|
|
|
|
$optionsLink = 'student_id='.$student_id.'&origin='.$origin.'&cidReq='.$courseCode.'&id_session='.$sessionId; |
|
|
|
|
$optionsLink = 'student_id='.$studentId.'&origin='.$origin.'&cidReq='.$courseCode.'&id_session='.$sessionId; |
|
|
|
|
echo '<a href="'.api_get_path(WEB_PLUGIN_PATH).'notebookteacher/src/index.php?'.$optionsLink.'">' |
|
|
|
|
.Display::return_icon('notebookteacher.png', get_lang('Notebook'), '', ICON_SIZE_MEDIUM) |
|
|
|
|
.'</a>'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (api_can_login_as($student_id)) { |
|
|
|
|
echo '<a href="'.api_get_path(WEB_CODE_PATH).'admin/user_list.php?action=login_as&user_id='.$student_id |
|
|
|
|
if (api_can_login_as($studentId)) { |
|
|
|
|
echo '<a href="'.api_get_path(WEB_CODE_PATH).'admin/user_list.php?action=login_as&user_id='.$studentId |
|
|
|
|
.'&sec_token='.$token.'">' |
|
|
|
|
.Display::return_icon('login_as.png', get_lang('Login as'), null, ICON_SIZE_MEDIUM).'</a> '; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (Skill::isAllowed($student_id, false)) { |
|
|
|
|
if (Skill::isAllowed($studentId, false)) { |
|
|
|
|
echo Display::url( |
|
|
|
|
Display::return_icon( |
|
|
|
|
'skill-badges.png', |
|
|
|
|
@ -732,11 +733,11 @@ if (Skill::isAllowed($student_id, false)) { |
|
|
|
|
null, |
|
|
|
|
ICON_SIZE_MEDIUM |
|
|
|
|
), |
|
|
|
|
api_get_path(WEB_CODE_PATH).'badge/assign.php?'.http_build_query(['user' => $student_id]) |
|
|
|
|
api_get_path(WEB_CODE_PATH).'badge/assign.php?'.http_build_query(['user' => $studentId]) |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (Skill::isAllowed($student_id, false)) { |
|
|
|
|
if (Skill::isAllowed($studentId, false)) { |
|
|
|
|
echo Display::url( |
|
|
|
|
Display::return_icon( |
|
|
|
|
'attendance.png', |
|
|
|
|
@ -744,12 +745,12 @@ if (Skill::isAllowed($student_id, false)) { |
|
|
|
|
null, |
|
|
|
|
ICON_SIZE_MEDIUM |
|
|
|
|
), |
|
|
|
|
api_get_path(WEB_CODE_PATH).'mySpace/myStudents.php?action=all_attendance&student='.$student_id |
|
|
|
|
api_get_path(WEB_CODE_PATH).'mySpace/myStudents.php?action=all_attendance&student='.$studentId |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$permissions = StudentFollowUpPlugin::getPermissions( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
api_get_user_id() |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
@ -762,14 +763,14 @@ if ($isAllow) { |
|
|
|
|
null, |
|
|
|
|
ICON_SIZE_MEDIUM |
|
|
|
|
), |
|
|
|
|
api_get_path(WEB_PLUGIN_PATH).'studentfollowup/posts.php?student_id='.$student_id |
|
|
|
|
api_get_path(WEB_PLUGIN_PATH).'studentfollowup/posts.php?student_id='.$studentId |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
echo '</div>'; |
|
|
|
|
|
|
|
|
|
// is the user online ? |
|
|
|
|
$online = get_lang('No'); |
|
|
|
|
if (user_is_online($student_id)) { |
|
|
|
|
if (user_is_online($studentId)) { |
|
|
|
|
$online = get_lang('Yes'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -777,10 +778,10 @@ if (user_is_online($student_id)) { |
|
|
|
|
$avg_student_progress = $avg_student_score = 0; |
|
|
|
|
|
|
|
|
|
if (empty($sessionId)) { |
|
|
|
|
$isSubscribedToCourse = CourseManager::is_user_subscribed_in_course($user_info['user_id'], $courseCode); |
|
|
|
|
$isSubscribedToCourse = CourseManager::is_user_subscribed_in_course($studentId, $courseCode); |
|
|
|
|
} else { |
|
|
|
|
$isSubscribedToCourse = CourseManager::is_user_subscribed_in_course( |
|
|
|
|
$user_info['user_id'], |
|
|
|
|
$studentId, |
|
|
|
|
$courseCode, |
|
|
|
|
true, |
|
|
|
|
$sessionId |
|
|
|
|
@ -789,7 +790,7 @@ if (empty($sessionId)) { |
|
|
|
|
|
|
|
|
|
if ($isSubscribedToCourse) { |
|
|
|
|
$avg_student_progress = Tracking::get_avg_student_progress( |
|
|
|
|
$user_info['user_id'], |
|
|
|
|
$studentId, |
|
|
|
|
$courseCode, |
|
|
|
|
[], |
|
|
|
|
$sessionId |
|
|
|
|
@ -797,7 +798,7 @@ if ($isSubscribedToCourse) { |
|
|
|
|
|
|
|
|
|
// the score inside the Reporting table |
|
|
|
|
$avg_student_score = Tracking::get_avg_student_score( |
|
|
|
|
$user_info['user_id'], |
|
|
|
|
$studentId, |
|
|
|
|
$courseCode, |
|
|
|
|
[], |
|
|
|
|
$sessionId |
|
|
|
|
@ -809,7 +810,7 @@ $time_spent_on_the_course = 0; |
|
|
|
|
if (!empty($courseInfo)) { |
|
|
|
|
$time_spent_on_the_course = api_time_to_hms( |
|
|
|
|
Tracking::get_time_spent_on_the_course( |
|
|
|
|
$user_info['user_id'], |
|
|
|
|
$studentId, |
|
|
|
|
$courseInfo['real_id'], |
|
|
|
|
$sessionId |
|
|
|
|
) |
|
|
|
|
@ -817,13 +818,13 @@ if (!empty($courseInfo)) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// get information about connections on the platform by student |
|
|
|
|
$first_connection_date = Tracking::get_first_connection_date($user_info['user_id']); |
|
|
|
|
$first_connection_date = Tracking::get_first_connection_date($studentId); |
|
|
|
|
if ('' == $first_connection_date) { |
|
|
|
|
$first_connection_date = get_lang('No connection'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$last_connection_date = Tracking::get_last_connection_date( |
|
|
|
|
$user_info['user_id'], |
|
|
|
|
$studentId, |
|
|
|
|
true |
|
|
|
|
); |
|
|
|
|
if ('' == $last_connection_date) { |
|
|
|
|
@ -840,9 +841,9 @@ $csv_content[] = [ |
|
|
|
|
get_lang('Tel'), |
|
|
|
|
]; |
|
|
|
|
$csv_content[] = [ |
|
|
|
|
$user_info['complete_name'], |
|
|
|
|
$user_info['email'], |
|
|
|
|
$user_info['phone'], |
|
|
|
|
$userInfo['complete_name'], |
|
|
|
|
$userInfo['email'], |
|
|
|
|
$userInfo['phone'], |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
$csv_content[] = []; |
|
|
|
|
@ -869,30 +870,18 @@ $csv_content[] = [ |
|
|
|
|
$coachs_name = ''; |
|
|
|
|
$session_name = ''; |
|
|
|
|
|
|
|
|
|
$userPicture = UserManager::getUserPicture($user_info['user_id'], USER_IMAGE_SIZE_BIG); |
|
|
|
|
$userPicture = UserManager::getUserPicture($studentId, USER_IMAGE_SIZE_BIG); |
|
|
|
|
|
|
|
|
|
$userGroupManager = new UserGroup(); |
|
|
|
|
$userGroups = $userGroupManager->getNameListByUser( |
|
|
|
|
$user_info['user_id'], |
|
|
|
|
$studentId, |
|
|
|
|
UserGroup::NORMAL_CLASS |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
$userInfo = [ |
|
|
|
|
'id' => $user_info['user_id'], |
|
|
|
|
'complete_name' => $user_info['complete_name'], |
|
|
|
|
'complete_name_link' => $user_info['complete_name_with_message_link'], |
|
|
|
|
'phone' => $user_info['phone'], |
|
|
|
|
'code' => $user_info['official_code'], |
|
|
|
|
'username' => $user_info['username'], |
|
|
|
|
'registration_date' => $user_info['registration_date'], |
|
|
|
|
'email' => $user_info['email'], |
|
|
|
|
'has_certificates' => $user_info['has_certificates'], |
|
|
|
|
'last_login' => $user_info['last_login'], |
|
|
|
|
'profile_url' => $user_info['profile_url'], |
|
|
|
|
'groups' => $userGroupManager, |
|
|
|
|
'avatar' => $userPicture, |
|
|
|
|
'online' => $online, |
|
|
|
|
]; |
|
|
|
|
$userInfo['complete_name_link'] = $userInfo['complete_name_with_message_link']; |
|
|
|
|
$userInfo['groups'] = $userGroupManager; |
|
|
|
|
$userInfo['avatar'] = $userPicture; |
|
|
|
|
$userInfo['online'] = $online; |
|
|
|
|
|
|
|
|
|
if (!empty($courseCode)) { |
|
|
|
|
$userInfo['url_access'] = Display::url( |
|
|
|
|
@ -900,7 +889,7 @@ if (!empty($courseCode)) { |
|
|
|
|
'access_details.php?' |
|
|
|
|
.http_build_query( |
|
|
|
|
[ |
|
|
|
|
'student' => $student_id, |
|
|
|
|
'student' => $studentId, |
|
|
|
|
'course' => $courseCode, |
|
|
|
|
'origin' => $origin, |
|
|
|
|
'cidReq' => $courseCode, |
|
|
|
|
@ -914,7 +903,7 @@ if (!empty($courseCode)) { |
|
|
|
|
// Display timezone if the user selected one and if the admin allows the use of user's timezone |
|
|
|
|
$timezone = null; |
|
|
|
|
$timezone_user = UserManager::get_extra_user_data_by_field( |
|
|
|
|
$user_info['user_id'], |
|
|
|
|
$studentId, |
|
|
|
|
'timezone' |
|
|
|
|
); |
|
|
|
|
$use_users_timezone = api_get_setting('use_users_timezone', 'timezones'); |
|
|
|
|
@ -942,13 +931,13 @@ if ('true' === $details) { |
|
|
|
|
$icon = ''; |
|
|
|
|
$timeLegalAccept = ''; |
|
|
|
|
$btn = ''; |
|
|
|
|
|
|
|
|
|
$userInfo['legal'] = ''; |
|
|
|
|
if ('true' === api_get_setting('allow_terms_conditions')) { |
|
|
|
|
$isBoss = UserManager::userIsBossOfStudent(api_get_user_id(), $student_id); |
|
|
|
|
$isBoss = UserManager::userIsBossOfStudent(api_get_user_id(), $studentId); |
|
|
|
|
if ($isBoss || api_is_platform_admin()) { |
|
|
|
|
$extraFieldValue = new ExtraFieldValue('user'); |
|
|
|
|
$value = $extraFieldValue->get_values_by_handler_and_field_variable( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
'legal_accept' |
|
|
|
|
); |
|
|
|
|
$icon = Display::return_icon('accept_na.png'); |
|
|
|
|
@ -959,14 +948,14 @@ if ('true' === api_get_setting('allow_terms_conditions')) { |
|
|
|
|
$icon = Display::return_icon('accept.png'); |
|
|
|
|
$btn = Display::url( |
|
|
|
|
get_lang('Delete legal agreement'), |
|
|
|
|
api_get_self().'?action=delete_legal&student='.$student_id.'&course='.$course_code, |
|
|
|
|
api_get_self().'?action=delete_legal&student='.$studentId.'&course='.$course_code, |
|
|
|
|
['class' => 'btn btn-danger'] |
|
|
|
|
); |
|
|
|
|
$timeLegalAccept = api_get_local_time($legalTime); |
|
|
|
|
} else { |
|
|
|
|
$btn = Display::url( |
|
|
|
|
get_lang('Send message legal agreement'), |
|
|
|
|
api_get_self().'?action=send_legal&student='.$student_id.'&course='.$course_code, |
|
|
|
|
api_get_self().'?action=send_legal&student='.$studentId.'&course='.$course_code, |
|
|
|
|
['class' => 'btn btn-primary'] |
|
|
|
|
); |
|
|
|
|
$timeLegalAccept = get_lang('Not Registered'); |
|
|
|
|
@ -1010,9 +999,9 @@ if (isset($_GET['action']) and 'all_attendance' == $_GET['action']) { |
|
|
|
|
$defaults['startDate'] = $startDateText; |
|
|
|
|
$defaults['endDate'] = $endDateText; |
|
|
|
|
$form = new FormValidator('all_attendance_list', 'GET', |
|
|
|
|
'myStudents.php?action=all_attendance&student='.$student_id.'&startDate='.$defaults['startDate'].'&endDate='.$defaults['endDate'].'&&'.api_get_cidreq(), |
|
|
|
|
'myStudents.php?action=all_attendance&student='.$studentId.'&startDate='.$defaults['startDate'].'&endDate='.$defaults['endDate'].'&&'.api_get_cidreq(), |
|
|
|
|
''); |
|
|
|
|
$form->addElement('html', '<input type="hidden" name="student" value="'.$student_id.'" >'); |
|
|
|
|
$form->addElement('html', '<input type="hidden" name="student" value="'.$studentId.'" >'); |
|
|
|
|
$form->addElement('html', '<input type="hidden" name="action" value="all_attendance" >'); |
|
|
|
|
|
|
|
|
|
$form->addDateTimePicker('startDate', [ |
|
|
|
|
@ -1031,7 +1020,7 @@ if (isset($_GET['action']) and 'all_attendance' == $_GET['action']) { |
|
|
|
|
$form->display(); |
|
|
|
|
/** Display dates */ |
|
|
|
|
$attendance = new Attendance(); |
|
|
|
|
$data = $attendance->getCoursesWithAttendance($student_id, $startDate, $endDate); |
|
|
|
|
$data = $attendance->getCoursesWithAttendance($studentId, $startDate, $endDate); |
|
|
|
|
|
|
|
|
|
// 'attendance from %s to %s' |
|
|
|
|
$title = sprintf(get_lang('AttendanceFromXToY'), $startDateText, $endDateText); |
|
|
|
|
@ -1072,7 +1061,7 @@ if (isset($_GET['action']) and 'all_attendance' == $_GET['action']) { |
|
|
|
|
<td>' |
|
|
|
|
.'<a title="'.get_lang('GoAttendance').'" href="'.api_get_path(WEB_CODE_PATH) |
|
|
|
|
.'attendance/index.php?cidReq='.$attendanceWork['courseCode'].'&id_session='.$sId.'&student_id=' |
|
|
|
|
.$student_id.'">' |
|
|
|
|
.$studentId.'">' |
|
|
|
|
.$attendanceWork['courseTitle']." $printSession ".'</a> |
|
|
|
|
</td> |
|
|
|
|
|
|
|
|
|
@ -1100,12 +1089,12 @@ $tpl = new Template( |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if (!empty($courseInfo)) { |
|
|
|
|
$nb_assignments = Tracking::count_student_assignments($student_id, $courseCode, $sessionId); |
|
|
|
|
$messages = Tracking::count_student_messages($student_id, $courseCode, $sessionId); |
|
|
|
|
$links = Tracking::count_student_visited_links($student_id, $courseInfo['real_id'], $sessionId); |
|
|
|
|
$chat_last_connection = Tracking::chat_last_connection($student_id, $courseInfo['real_id'], $sessionId); |
|
|
|
|
$documents = Tracking::count_student_downloaded_documents($student_id, $courseInfo['real_id'], $sessionId); |
|
|
|
|
$uploaded_documents = Tracking::count_student_uploaded_documents($student_id, $courseCode, $sessionId); |
|
|
|
|
$nb_assignments = Tracking::count_student_assignments($studentId, $courseCode, $sessionId); |
|
|
|
|
$messages = Tracking::count_student_messages($studentId, $courseCode, $sessionId); |
|
|
|
|
$links = Tracking::count_student_visited_links($studentId, $courseInfo['real_id'], $sessionId); |
|
|
|
|
$chat_last_connection = Tracking::chat_last_connection($studentId, $courseInfo['real_id'], $sessionId); |
|
|
|
|
$documents = Tracking::count_student_downloaded_documents($studentId, $courseInfo['real_id'], $sessionId); |
|
|
|
|
$uploaded_documents = Tracking::count_student_uploaded_documents($studentId, $courseCode, $sessionId); |
|
|
|
|
$tpl->assign('title', $courseInfo['title']); |
|
|
|
|
|
|
|
|
|
$userInfo['tools'] = [ |
|
|
|
|
@ -1115,9 +1104,9 @@ if (!empty($courseInfo)) { |
|
|
|
|
'chat_connection' => $chat_last_connection, |
|
|
|
|
'documents' => $documents, |
|
|
|
|
'upload_documents' => $uploaded_documents, |
|
|
|
|
'course_first_access' => Tracking::get_first_connection_date_on_the_course($student_id, $courseInfo['real_id'], $sessionId), |
|
|
|
|
'course_last_access' => Tracking::get_last_connection_date_on_the_course($student_id, $courseInfo, $sessionId), |
|
|
|
|
'count_access_dates' => Tracking::getNumberOfCourseAccessDates($student_id, $courseInfo['real_id'], $sessionId), |
|
|
|
|
'course_first_access' => Tracking::get_first_connection_date_on_the_course($studentId, $courseInfo['real_id'], $sessionId), |
|
|
|
|
'course_last_access' => Tracking::get_last_connection_date_on_the_course($studentId, $courseInfo, $sessionId), |
|
|
|
|
'count_access_dates' => Tracking::getNumberOfCourseAccessDates($studentId, $courseInfo['real_id'], $sessionId), |
|
|
|
|
]; |
|
|
|
|
} else { |
|
|
|
|
$details = false; |
|
|
|
|
@ -1134,7 +1123,7 @@ $allowAll = api_get_configuration_value('allow_teacher_access_student_skills'); |
|
|
|
|
if ($allowAll) { |
|
|
|
|
// Show all skills |
|
|
|
|
echo Tracking::displayUserSkills( |
|
|
|
|
$user_info['user_id'], |
|
|
|
|
$studentId, |
|
|
|
|
0, |
|
|
|
|
0, |
|
|
|
|
true |
|
|
|
|
@ -1142,7 +1131,7 @@ if ($allowAll) { |
|
|
|
|
} else { |
|
|
|
|
// Default behaviour - Show all skills depending the course and session id |
|
|
|
|
echo Tracking::displayUserSkills( |
|
|
|
|
$user_info['user_id'], |
|
|
|
|
$studentId, |
|
|
|
|
$courseInfo ? $courseInfo['real_id'] : 0, |
|
|
|
|
$sessionId |
|
|
|
|
); |
|
|
|
|
@ -1254,12 +1243,12 @@ if (empty($details)) { |
|
|
|
|
|
|
|
|
|
if (empty($session_info)) { |
|
|
|
|
$isSubscribed = CourseManager::is_user_subscribed_in_course( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
$courseCodeItem |
|
|
|
|
); |
|
|
|
|
} else { |
|
|
|
|
$isSubscribed = CourseManager::is_user_subscribed_in_course( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
$courseCodeItem, |
|
|
|
|
true, |
|
|
|
|
$sId |
|
|
|
|
@ -1268,7 +1257,7 @@ if (empty($details)) { |
|
|
|
|
|
|
|
|
|
if ($isSubscribed) { |
|
|
|
|
$timeInSeconds = Tracking::get_time_spent_on_the_course( |
|
|
|
|
$user_info['user_id'], |
|
|
|
|
$studentId, |
|
|
|
|
$courseId, |
|
|
|
|
$sId |
|
|
|
|
); |
|
|
|
|
@ -1277,7 +1266,7 @@ if (empty($details)) { |
|
|
|
|
|
|
|
|
|
// get average of faults in attendances by student |
|
|
|
|
$results_faults_avg = $attendance->get_faults_average_by_course( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
$courseCodeItem, |
|
|
|
|
$sId |
|
|
|
|
); |
|
|
|
|
@ -1287,7 +1276,7 @@ if (empty($details)) { |
|
|
|
|
if (api_is_drh()) { |
|
|
|
|
$attendances_faults_avg = '<a title="'.get_lang('Go to attendances').'" href="'.api_get_path(WEB_CODE_PATH) |
|
|
|
|
.'attendance/index.php?cidReq='.$courseCodeItem.'&id_session='.$sId.'&student_id=' |
|
|
|
|
.$student_id.'">' |
|
|
|
|
.$studentId.'">' |
|
|
|
|
.$results_faults_avg['faults'].'/'.$results_faults_avg['total'].' (' |
|
|
|
|
.$results_faults_avg['porcent'].'%)</a>'; |
|
|
|
|
} else { |
|
|
|
|
@ -1312,9 +1301,9 @@ if (empty($details)) { |
|
|
|
|
$scoretotal = []; |
|
|
|
|
if (isset($cats) && isset($cats[0])) { |
|
|
|
|
if (!empty($sId)) { |
|
|
|
|
$scoretotal = $cats[0]->calc_score($student_id, null, $courseCodeItem, $sId); |
|
|
|
|
$scoretotal = $cats[0]->calc_score($studentId, null, $courseCodeItem, $sId); |
|
|
|
|
} else { |
|
|
|
|
$scoretotal = $cats[0]->calc_score($student_id, null, $courseCodeItem); |
|
|
|
|
$scoretotal = $cats[0]->calc_score($studentId, null, $courseCodeItem); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -1330,7 +1319,7 @@ if (empty($details)) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$progress = Tracking::get_avg_student_progress( |
|
|
|
|
$user_info['user_id'], |
|
|
|
|
$studentId, |
|
|
|
|
$courseCodeItem, |
|
|
|
|
[], |
|
|
|
|
$sId |
|
|
|
|
@ -1339,7 +1328,7 @@ if (empty($details)) { |
|
|
|
|
$totalProgress += $progress; |
|
|
|
|
|
|
|
|
|
$score = Tracking::get_avg_student_score( |
|
|
|
|
$user_info['user_id'], |
|
|
|
|
$studentId, |
|
|
|
|
$courseCodeItem, |
|
|
|
|
[], |
|
|
|
|
$sId |
|
|
|
|
@ -1375,12 +1364,12 @@ if (empty($details)) { |
|
|
|
|
<td >'.$scoretotal_display.'</td>'; |
|
|
|
|
|
|
|
|
|
if (!empty($coachId)) { |
|
|
|
|
echo '<td width="10"><a href="'.api_get_self().'?student='.$user_info['user_id'] |
|
|
|
|
echo '<td width="10"><a href="'.api_get_self().'?student='.$studentId |
|
|
|
|
.'&details=true&course='.$courseInfoItem['code'].'&id_coach='.$coachId.'&origin='.$origin |
|
|
|
|
.'&id_session='.$sId.'#infosStudent">' |
|
|
|
|
.Display::return_icon('2rightarrow.png', get_lang('Details')).'</a></td>'; |
|
|
|
|
} else { |
|
|
|
|
echo '<td width="10"><a href="'.api_get_self().'?student='.$user_info['user_id'] |
|
|
|
|
echo '<td width="10"><a href="'.api_get_self().'?student='.$studentId |
|
|
|
|
.'&details=true&course='.$courseInfoItem['code'].'&origin='.$origin.'&id_session='.$sId.'#infosStudent">' |
|
|
|
|
.Display::return_icon('2rightarrow.png', get_lang('Details')).'</a></td>'; |
|
|
|
|
} |
|
|
|
|
@ -1483,10 +1472,10 @@ if (empty($details)) { |
|
|
|
|
|
|
|
|
|
$timeCourse = null; |
|
|
|
|
if (Tracking::minimumTimeAvailable($sessionId, $courseInfo['real_id'])) { |
|
|
|
|
$timeCourse = Tracking::getCalculateTime($student_id, $courseInfo['real_id'], $sessionId); |
|
|
|
|
$timeCourse = Tracking::getCalculateTime($studentId, $courseInfo['real_id'], $sessionId); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (INVITEE != $user_info['status']) { |
|
|
|
|
if (INVITEE != $userInfo['status']) { |
|
|
|
|
$csv_content[] = []; |
|
|
|
|
$csv_content[] = [str_replace(' ', '', strip_tags($userInfo['complete_name']))]; |
|
|
|
|
$trackingColumns = api_get_configuration_value('tracking_columns'); |
|
|
|
|
@ -1581,7 +1570,7 @@ if (empty($details)) { |
|
|
|
|
|
|
|
|
|
// Get progress in lp |
|
|
|
|
$progress = Tracking::get_avg_student_progress( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
$course_code, |
|
|
|
|
[$lp_id], |
|
|
|
|
$sessionId |
|
|
|
|
@ -1599,7 +1588,7 @@ if (empty($details)) { |
|
|
|
|
$total_time = isset($lpTime[$lp_id]) ? (int) $lpTime[$lp_id] : 0; |
|
|
|
|
} else { |
|
|
|
|
$total_time = Tracking::get_time_spent_in_lp( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
$courseCode, |
|
|
|
|
[$lp_id], |
|
|
|
|
$sessionId |
|
|
|
|
@ -1612,7 +1601,7 @@ if (empty($details)) { |
|
|
|
|
|
|
|
|
|
// Get last connection time in lp |
|
|
|
|
$start_time = Tracking::get_last_connection_time_in_lp( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
$courseCode, |
|
|
|
|
$lp_id, |
|
|
|
|
$sessionId |
|
|
|
|
@ -1630,7 +1619,7 @@ if (empty($details)) { |
|
|
|
|
|
|
|
|
|
// Quiz in lp |
|
|
|
|
$score = Tracking::get_avg_student_score( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
$courseCode, |
|
|
|
|
[$lp_id], |
|
|
|
|
$sessionId |
|
|
|
|
@ -1638,7 +1627,7 @@ if (empty($details)) { |
|
|
|
|
|
|
|
|
|
// Latest exercise results in a LP |
|
|
|
|
$score_latest = Tracking::get_avg_student_score( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
$courseCode, |
|
|
|
|
[$lp_id], |
|
|
|
|
$sessionId, |
|
|
|
|
@ -1647,7 +1636,7 @@ if (empty($details)) { |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
$bestScore = Tracking::get_avg_student_score( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
$courseCode, |
|
|
|
|
[$lp_id], |
|
|
|
|
$sessionId, |
|
|
|
|
@ -1719,7 +1708,7 @@ if (empty($details)) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($hookLpTracking) { |
|
|
|
|
$hookContents = $hookLpTracking->notifyTrackingContent($lp_id, $student_id); |
|
|
|
|
$hookContents = $hookLpTracking->notifyTrackingContent($lp_id, $studentId); |
|
|
|
|
|
|
|
|
|
foreach ($hookContents as $hookContent) { |
|
|
|
|
$contentToExport[] = strip_tags($hookContent['value']); |
|
|
|
|
@ -1738,7 +1727,7 @@ if (empty($details)) { |
|
|
|
|
$link = Display::url( |
|
|
|
|
Display::return_icon('2rightarrow.png', get_lang('Details')), |
|
|
|
|
$codePath.'mySpace/lp_tracking.php?cid='.$courseInfo['real_id'].'&course='.$course_code.$from.'&origin='.$origin |
|
|
|
|
.'&lp_id='.$lp_id.'&student_id='.$user_info['user_id'].'&sid='.$sessionId |
|
|
|
|
.'&lp_id='.$lp_id.'&student_id='.$studentId.'&sid='.$sessionId |
|
|
|
|
); |
|
|
|
|
echo Display::tag('td', $link); |
|
|
|
|
} |
|
|
|
|
@ -1748,7 +1737,7 @@ if (empty($details)) { |
|
|
|
|
if (true === $any_result) { |
|
|
|
|
$url = 'myStudents.php?action=reset_lp&sec_token='.$token.'&cid='.$courseInfo['real_id'].'&course=' |
|
|
|
|
.$course_code.'&details='.$details.'&origin='.$origin.'&lp_id='.$lp_id.'&student=' |
|
|
|
|
.$user_info['user_id'].'&details=true&sid='.$sessionId; |
|
|
|
|
.$studentId.'&details=true&sid='.$sessionId; |
|
|
|
|
echo Display::url( |
|
|
|
|
Display::return_icon('clean.png', get_lang('Clean')), |
|
|
|
|
$url, |
|
|
|
|
@ -1770,7 +1759,7 @@ if (empty($details)) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (INVITEE != $user_info['status']) { |
|
|
|
|
if (INVITEE != $userInfo['status']) { |
|
|
|
|
echo '<div class="table-responsive"> |
|
|
|
|
<table class="table table-striped table-hover"> |
|
|
|
|
<thead> |
|
|
|
|
@ -1844,7 +1833,7 @@ if (empty($details)) { |
|
|
|
|
while ($exercices = Database::fetch_array($result_exercices)) { |
|
|
|
|
$exercise_id = (int) $exercices['id']; |
|
|
|
|
$count_attempts = Tracking::count_student_exercise_attempts( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
$courseInfo['real_id'], |
|
|
|
|
$exercise_id, |
|
|
|
|
0, |
|
|
|
|
@ -1853,7 +1842,7 @@ if (empty($details)) { |
|
|
|
|
2 |
|
|
|
|
); |
|
|
|
|
$score_percentage = Tracking::get_avg_student_exercise_score( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
$courseCode, |
|
|
|
|
$exercise_id, |
|
|
|
|
$sessionId, |
|
|
|
|
@ -1863,12 +1852,12 @@ if (empty($details)) { |
|
|
|
|
|
|
|
|
|
$lp_name = '-'; |
|
|
|
|
$hookContents = $hookQuizTracking |
|
|
|
|
? $hookQuizTracking->notifyTrackingContent($exercise_id, $student_id) |
|
|
|
|
? $hookQuizTracking->notifyTrackingContent($exercise_id, $studentId) |
|
|
|
|
: []; |
|
|
|
|
|
|
|
|
|
if (!isset($score_percentage) && $count_attempts > 0) { |
|
|
|
|
$scores_lp = Tracking::get_avg_student_exercise_score( |
|
|
|
|
$student_id, |
|
|
|
|
$studentId, |
|
|
|
|
$courseCode, |
|
|
|
|
$exercise_id, |
|
|
|
|
$sessionId, |
|
|
|
|
@ -1911,7 +1900,7 @@ if (empty($details)) { |
|
|
|
|
$sql = 'SELECT exe_id FROM '.$tbl_stats_exercices.' |
|
|
|
|
WHERE |
|
|
|
|
exe_exo_id = "'.$exercise_id.'" AND |
|
|
|
|
exe_user_id ="'.$student_id.'" AND |
|
|
|
|
exe_user_id ="'.$studentId.'" AND |
|
|
|
|
c_id = '.$courseInfo['real_id'].' AND |
|
|
|
|
session_id = "'.$sessionId.'" AND |
|
|
|
|
status = "" |
|
|
|
|
@ -1926,7 +1915,7 @@ if (empty($details)) { |
|
|
|
|
$qualifyLink = '&action=qualify'; |
|
|
|
|
} |
|
|
|
|
$attemptLink = '../exercise/exercise_show.php?id='.$id_last_attempt.'&cidReq='.$courseCode |
|
|
|
|
.'&id_session='.$sessionId.'&session_id='.$sessionId.'&student='.$student_id.'&origin=' |
|
|
|
|
.'&id_session='.$sessionId.'&session_id='.$sessionId.'&student='.$studentId.'&origin=' |
|
|
|
|
.(empty($origin) ? 'tracking' : $origin).$qualifyLink; |
|
|
|
|
echo Display::url( |
|
|
|
|
Display::return_icon('quiz.png', get_lang('Test')), |
|
|
|
|
@ -1939,7 +1928,7 @@ if (empty($details)) { |
|
|
|
|
echo '<td>'; |
|
|
|
|
if ($count_attempts > 0) { |
|
|
|
|
$all_attempt_url = "../exercise/exercise_report.php?id=$exercise_id&" |
|
|
|
|
."cidReq=$courseCode&filter_by_user=$student_id&id_session=$sessionId"; |
|
|
|
|
."cidReq=$courseCode&filter_by_user=$studentId&id_session=$sessionId"; |
|
|
|
|
echo Display::url( |
|
|
|
|
Display::return_icon( |
|
|
|
|
'test_results.png', |
|
|
|
|
@ -2002,7 +1991,7 @@ if (empty($details)) { |
|
|
|
|
[], |
|
|
|
|
ICON_SIZE_SMALL |
|
|
|
|
); |
|
|
|
|
if (in_array($student_id, $user_list)) { |
|
|
|
|
if (in_array($studentId, $user_list)) { |
|
|
|
|
$survey_done = Display::return_icon( |
|
|
|
|
"accept.png", |
|
|
|
|
get_lang('Answered'), |
|
|
|
|
@ -2040,7 +2029,7 @@ if (empty($details)) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$userWorks = getWorkPerUser($student_id, $courseInfo['real_id'], $sessionId); |
|
|
|
|
$userWorks = getWorkPerUser($studentId, $courseInfo['real_id'], $sessionId); |
|
|
|
|
echo ' |
|
|
|
|
<div class="table-responsive"> |
|
|
|
|
<table class="table table-striped table-hover"> |
|
|
|
|
@ -2151,7 +2140,7 @@ if (empty($details)) { |
|
|
|
|
if (true === $allowMessages) { |
|
|
|
|
// Messages |
|
|
|
|
echo Display::page_subheader2(get_lang('Messages')); |
|
|
|
|
echo MessageManager::getMessagesAboutUserToString($user_info); |
|
|
|
|
echo MessageManager::getMessagesAboutUserToString($userInfo); |
|
|
|
|
echo Display::url( |
|
|
|
|
get_lang('New message'), |
|
|
|
|
'javascript: void(0);', |
|
|
|
|
@ -2177,7 +2166,7 @@ if (true === $allowMessages) { |
|
|
|
|
|
|
|
|
|
$allow = api_get_configuration_value('allow_user_message_tracking'); |
|
|
|
|
if ($allow && (api_is_drh() || api_is_platform_admin())) { |
|
|
|
|
$users = MessageManager::getUsersThatHadConversationWithUser($student_id); |
|
|
|
|
$users = MessageManager::getUsersThatHadConversationWithUser($studentId); |
|
|
|
|
echo Display::page_subheader2(get_lang('MessageReporting')); |
|
|
|
|
|
|
|
|
|
$table = new HTML_Table(['class' => 'table']); |
|
|
|
|
@ -2194,7 +2183,7 @@ if ($allow && (api_is_drh() || api_is_platform_admin())) { |
|
|
|
|
$row++; |
|
|
|
|
foreach ($users as $userFollowed) { |
|
|
|
|
$followedUserId = $userFollowed['user_id']; |
|
|
|
|
$url = api_get_path(WEB_CODE_PATH).'tracking/messages.php?from_user='.$student_id.'&to_user='.$followedUserId; |
|
|
|
|
$url = api_get_path(WEB_CODE_PATH).'tracking/messages.php?from_user='.$studentId.'&to_user='.$followedUserId; |
|
|
|
|
$link = Display::url( |
|
|
|
|
$userFollowed['complete_name'], |
|
|
|
|
$url |
|
|
|
|
@ -2206,7 +2195,7 @@ if ($allow && (api_is_drh() || api_is_platform_admin())) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($pluginCalendar) { |
|
|
|
|
echo $plugin->getUserStatsPanel($student_id, $courses_in_session); |
|
|
|
|
echo $plugin->getUserStatsPanel($studentId, $courses_in_session); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($export) { |
|
|
|
|
|