You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							205 lines
						
					
					
						
							5.8 KiB
						
					
					
				
			
		
		
	
	
							205 lines
						
					
					
						
							5.8 KiB
						
					
					
				<?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('TimeSpentOnAssignment'), 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();
 | 
						|
 |