commit
3bf712580b
@ -0,0 +1,205 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/* For licensing terms, see /license.txt */ |
||||||
|
|
||||||
|
require_once __DIR__.'/../inc/global.inc.php'; |
||||||
|
require_once api_get_path(SYS_CODE_PATH).'work/work.lib.php'; |
||||||
|
|
||||||
|
api_protect_course_script(); |
||||||
|
|
||||||
|
$allowToTrack = api_is_platform_admin() || api_is_allowed_to_edit(); |
||||||
|
|
||||||
|
if (!$allowToTrack) { |
||||||
|
api_not_allowed(true); |
||||||
|
} |
||||||
|
$consideredWorkingTime = api_get_configuration_value('considered_working_time'); |
||||||
|
|
||||||
|
if (false === $consideredWorkingTime) { |
||||||
|
api_not_allowed(true); |
||||||
|
} |
||||||
|
|
||||||
|
$courseCode = api_get_course_id(); |
||||||
|
$sessionId = api_get_session_id(); |
||||||
|
|
||||||
|
$nameTools = get_lang('Students'); |
||||||
|
|
||||||
|
$this_section = SECTION_TRACKING; |
||||||
|
$webCodePath = api_get_path(WEB_CODE_PATH); |
||||||
|
$interbreadcrumb[] = [ |
||||||
|
'url' => api_is_student_boss() ? '#' : 'index.php', |
||||||
|
'name' => get_lang('MySpace'), |
||||||
|
]; |
||||||
|
|
||||||
|
function get_count_users() |
||||||
|
{ |
||||||
|
$courseCode = api_get_course_id(); |
||||||
|
$sessionId = api_get_session_id(); |
||||||
|
|
||||||
|
return CourseManager::get_user_list_from_course_code( |
||||||
|
$courseCode, |
||||||
|
$sessionId, |
||||||
|
null, |
||||||
|
null, |
||||||
|
null, |
||||||
|
true |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
function get_users($from, $number_of_items, $column, $direction) |
||||||
|
{ |
||||||
|
$consideredWorkingTime = api_get_configuration_value('considered_working_time'); |
||||||
|
|
||||||
|
$courseId = api_get_course_int_id(); |
||||||
|
$courseCode = api_get_course_id(); |
||||||
|
$sessionId = api_get_session_id(); |
||||||
|
$webCodePath = api_get_path(WEB_CODE_PATH); |
||||||
|
|
||||||
|
$lastConnectionDate = null; |
||||||
|
$is_western_name_order = api_is_western_name_order(); |
||||||
|
$limit = null; |
||||||
|
$from = (int) $from; |
||||||
|
$number_of_items = (int) $number_of_items; |
||||||
|
$limit = 'LIMIT '.$from.','.$number_of_items; |
||||||
|
|
||||||
|
$students = CourseManager::get_user_list_from_course_code( |
||||||
|
$courseCode, |
||||||
|
$sessionId, |
||||||
|
$limit, |
||||||
|
null, |
||||||
|
null, |
||||||
|
false |
||||||
|
); |
||||||
|
$url = $webCodePath.'mySpace/myStudents.php'; |
||||||
|
|
||||||
|
$workList = getWorkListTeacher(0, 100, null, null, null); |
||||||
|
|
||||||
|
$workTimeList = []; |
||||||
|
foreach ($workList as $work) { |
||||||
|
$fieldValue = new ExtraFieldValue('work'); |
||||||
|
$resultExtra = $fieldValue->getAllValuesForAnItem( |
||||||
|
$work['id'], |
||||||
|
true |
||||||
|
); |
||||||
|
|
||||||
|
foreach ($resultExtra as $field) { |
||||||
|
$field = $field['value']; |
||||||
|
if ($consideredWorkingTime == $field->getField()->getVariable()) { |
||||||
|
$time = $field->getValue(); |
||||||
|
$parsed = date_parse($time); |
||||||
|
$workTimeList[$work['id']] = $parsed['hour'] * 3600 + $parsed['minute'] * 60 + $parsed['second']; |
||||||
|
|
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
$all_datas = []; |
||||||
|
foreach ($students as $studentData) { |
||||||
|
$studentId = $studentData['user_id']; |
||||||
|
$studentData = api_get_user_info($studentId); |
||||||
|
$urlDetails = $url."?student=$studentId&details=true&course=$courseCode&id_session=$sessionId"; |
||||||
|
$row = []; |
||||||
|
if ($is_western_name_order) { |
||||||
|
$first = Display::url($studentData['firstname'], $urlDetails); |
||||||
|
$last = Display::url($studentData['lastname'], $urlDetails); |
||||||
|
} else { |
||||||
|
$first = Display::url($studentData['lastname'], $urlDetails); |
||||||
|
$last = Display::url($studentData['firstname'], $urlDetails); |
||||||
|
} |
||||||
|
|
||||||
|
$row[] = $first; |
||||||
|
$row[] = $last; |
||||||
|
|
||||||
|
$timeInSeconds = Tracking::get_time_spent_on_the_course( |
||||||
|
$studentId, |
||||||
|
$courseId, |
||||||
|
$sessionId |
||||||
|
); |
||||||
|
|
||||||
|
$row[] = api_time_to_hms($timeInSeconds); |
||||||
|
|
||||||
|
$userWorkTime = 0; |
||||||
|
foreach ($workList as $work) { |
||||||
|
$userWorks = get_work_user_list( |
||||||
|
0, |
||||||
|
100, |
||||||
|
null, |
||||||
|
null, |
||||||
|
$work['id'], |
||||||
|
null, |
||||||
|
$studentId, |
||||||
|
false, |
||||||
|
$courseId, |
||||||
|
$sessionId |
||||||
|
); |
||||||
|
|
||||||
|
if ($userWorks) { |
||||||
|
foreach ($userWorks as $work) { |
||||||
|
$userWorkTime += $workTimeList[$work['parent_id']]; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
$row[] = api_time_to_hms($userWorkTime); |
||||||
|
$status = ''; |
||||||
|
if ($userWorkTime && $timeInSeconds) { |
||||||
|
if ($userWorkTime > $timeInSeconds) { |
||||||
|
$status = Display::label('TimeToFix', 'warning'); |
||||||
|
} else { |
||||||
|
$status = Display::label('Ok', 'success'); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
$row[] = $status; |
||||||
|
/*$detailsLink = Display::url( |
||||||
|
Display::return_icon('2rightarrow.png', get_lang('Details').' '.$studentData['username']), |
||||||
|
$urlDetails, |
||||||
|
['id' => 'details_'.$studentData['username']] |
||||||
|
); |
||||||
|
$row[] = $detailsLink;*/ |
||||||
|
$all_datas[] = $row; |
||||||
|
} |
||||||
|
|
||||||
|
return $all_datas; |
||||||
|
} |
||||||
|
|
||||||
|
$is_western_name_order = api_is_western_name_order(); |
||||||
|
$sort_by_first_name = api_sort_by_first_name(); |
||||||
|
$actionsLeft = ''; |
||||||
|
$toolbar = Display::toolbarAction('toolbar-student', [$actionsLeft]); |
||||||
|
|
||||||
|
$itemPerPage = 10; |
||||||
|
$perPage = api_get_configuration_value('my_space_users_items_per_page'); |
||||||
|
if ($perPage) { |
||||||
|
$itemPerPage = (int) $perPage; |
||||||
|
} |
||||||
|
|
||||||
|
$table = new SortableTable( |
||||||
|
'tracking_work_student', |
||||||
|
'get_count_users', |
||||||
|
'get_users', |
||||||
|
($is_western_name_order xor $sort_by_first_name) ? 1 : 0, |
||||||
|
$itemPerPage |
||||||
|
); |
||||||
|
|
||||||
|
$parameters = ['cidReq' => $courseCode, 'id_session' => $sessionId]; |
||||||
|
$table->set_additional_parameters($parameters); |
||||||
|
|
||||||
|
if ($is_western_name_order) { |
||||||
|
$table->set_header(0, get_lang('FirstName'), false); |
||||||
|
$table->set_header(1, get_lang('LastName'), false); |
||||||
|
} else { |
||||||
|
$table->set_header(0, get_lang('LastName'), false); |
||||||
|
$table->set_header(1, get_lang('FirstName'), false); |
||||||
|
} |
||||||
|
|
||||||
|
$table->set_header(2, get_lang('TimeSpentInTheCourse'), false); |
||||||
|
$table->set_header(3, get_lang('TimeSpentInWork'), false); |
||||||
|
$table->set_header(4, get_lang('Status'), false); |
||||||
|
|
||||||
|
Display::display_header($nameTools); |
||||||
|
echo $toolbar; |
||||||
|
echo Display::page_subheader($nameTools); |
||||||
|
$table->display(); |
||||||
|
|
||||||
|
Display::display_footer(); |
||||||
Loading…
Reference in new issue