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.
212 lines
6.4 KiB
212 lines
6.4 KiB
<?php
|
|
/* For licensing terms, see /license.txt */
|
|
|
|
/**
|
|
* Generate a session report during a period.
|
|
*/
|
|
$cidReset = true;
|
|
|
|
require_once __DIR__.'/../inc/global.inc.php';
|
|
|
|
api_block_anonymous_users();
|
|
|
|
$this_section = SECTION_TRACKING;
|
|
|
|
$toolName = get_lang('ProgressInSessionReport');
|
|
|
|
$interbreadcrumb[] = [
|
|
'url' => api_get_path(WEB_CODE_PATH).'mySpace/index.php',
|
|
'name' => get_lang('Reporting'),
|
|
];
|
|
$interbreadcrumb[] = [
|
|
'url' => api_get_path(WEB_CODE_PATH).'mySpace/session.php',
|
|
'name' => get_lang('FollowedSessions'),
|
|
];
|
|
|
|
$sessionId = isset($_GET['session_id']) ? (int) $_GET['session_id'] : 0;
|
|
|
|
$script = '<script>
|
|
var sessionId = '.$sessionId.';
|
|
$(function() {
|
|
$(".export").click(function(e) {
|
|
var actionFrm = $(this).attr("href");
|
|
submitFrm(actionFrm, e);
|
|
});
|
|
|
|
$("#session_progress_report_submitReport").click(function(e) {
|
|
var actionFrm = "'.api_get_self().'";
|
|
submitFrm(actionFrm, e);
|
|
});
|
|
|
|
if (sessionId > 0) {
|
|
$("#session_progress_report_submitReport").click();
|
|
}
|
|
})
|
|
|
|
function submitFrm(actionFrm, e) {
|
|
e.stopImmediatePropagation();
|
|
e.preventDefault();
|
|
$("#session_progress_report").attr("action", actionFrm);
|
|
$("#session_progress_report").submit();
|
|
}
|
|
</script>';
|
|
|
|
$actions = null;
|
|
$actions .= Display::url(
|
|
Display::return_icon('back.png', get_lang('Back'),
|
|
null,
|
|
ICON_SIZE_MEDIUM
|
|
),
|
|
'../mySpace/session.php'
|
|
);
|
|
|
|
if (api_is_platform_admin()) {
|
|
$sessionList = SessionManager::get_sessions_list();
|
|
} elseif (api_is_drh()) {
|
|
$sessionList = SessionManager::get_sessions_followed_by_drh(api_get_user_id());
|
|
} elseif (api_is_session_admin()) {
|
|
$sessionList = SessionManager::getSessionsFollowedByUser(api_get_user_id(), SESSIONADMIN);
|
|
} else {
|
|
$sessionList = Tracking::get_sessions_coached_by_user(api_get_user_id());
|
|
}
|
|
|
|
$form = new FormValidator('session_progress_report');
|
|
$selectSession = $form->addSelect('session_id', get_lang('Session'), [0 => get_lang('None')]);
|
|
|
|
foreach ($sessionList as $sessionInfo) {
|
|
$selectSession->addOption($sessionInfo['name'], $sessionInfo['id']);
|
|
}
|
|
|
|
$form->addDateRangePicker(
|
|
'date_range',
|
|
get_lang('DateRange'),
|
|
false,
|
|
['id' => 'date_range']
|
|
);
|
|
$form->addButtonFilter(get_lang('Filter'), 'submitReport');
|
|
|
|
if (!empty($sessionId)) {
|
|
$form->setDefaults(['session_id' => $sessionId]);
|
|
}
|
|
|
|
$users = [];
|
|
$courses = [];
|
|
$sessionName = '';
|
|
if ($form->validate()) {
|
|
$formValues = $form->getSubmitValues();
|
|
$sessionId = $formValues['session_id'];
|
|
$startDate = $formValues['date_range_start'];
|
|
$endDate = $formValues['date_range_end'];
|
|
$accessSessionCourse = CourseManager::getAccessCourse(
|
|
0,
|
|
1,
|
|
0,
|
|
$startDate,
|
|
$endDate,
|
|
$sessionId
|
|
);
|
|
|
|
if (!empty($accessSessionCourse)) {
|
|
$session = api_get_session_entity($sessionId);
|
|
$sessionName = $session->getName();
|
|
|
|
foreach ($accessSessionCourse as $access) {
|
|
$user = api_get_user_entity($access['user_id']);
|
|
|
|
$studentLink = Display::url(
|
|
UserManager::formatUserFullName($user),
|
|
api_get_path(WEB_CODE_PATH).'mySpace/myStudents.php?student='.$user->getId().'&origin=session_report'
|
|
);
|
|
|
|
$users[$user->getId()] = [
|
|
'complete_name' => $studentLink,
|
|
'time_in_platform' => api_time_to_hms(
|
|
Tracking::get_time_spent_on_the_course($user->getId(), $access['c_id'], $sessionId, $startDate, $endDate)
|
|
),
|
|
];
|
|
$course = api_get_course_entity($access['c_id']);
|
|
$courses[$course->getCode()] = $course->getCode();
|
|
}
|
|
|
|
if (!empty($courses)) {
|
|
foreach ($courses as $courseCode => $name) {
|
|
foreach ($users as $userId => $user) {
|
|
$progress = Tracking::get_avg_student_progress(
|
|
$userId,
|
|
$courseCode,
|
|
[],
|
|
$sessionId,
|
|
false,
|
|
false,
|
|
false,
|
|
$startDate,
|
|
$endDate
|
|
);
|
|
$infoGradeCertificate = UserManager::get_info_gradebook_certificate(
|
|
$courseCode,
|
|
$sessionId,
|
|
$userId,
|
|
$startDate,
|
|
$endDate
|
|
);
|
|
$users[$userId][$courseCode.'_progress'] = is_numeric($progress) ? "$progress %" : '0 %';
|
|
$users[$userId][$courseCode.'_certificate'] = $infoGradeCertificate ? get_lang('Yes') : get_lang('No');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (isset($_GET['export']) && !empty($users)) {
|
|
$fileName = 'progress_in_session_'.api_get_local_time();
|
|
|
|
$dataToExport = [];
|
|
$dataToExport['headers'][] = get_lang('StudentName');
|
|
$dataToExport['headers'][] = get_lang('TimeSpentOnThePlatform');
|
|
|
|
foreach ($courses as $courseCode) {
|
|
$dataToExport['headers'][] = get_lang('Progress').' '.$courseCode;
|
|
$dataToExport['headers'][] = get_lang('Certificate').' '.$courseCode;
|
|
}
|
|
|
|
foreach ($users as $user) {
|
|
$dataToExport[] = $user;
|
|
}
|
|
|
|
switch ($_GET['export']) {
|
|
case 'xls':
|
|
Export::export_table_xls_html($dataToExport, $fileName);
|
|
break;
|
|
case 'csv':
|
|
Export::arrayToCsv($dataToExport, $fileName);
|
|
break;
|
|
}
|
|
}
|
|
|
|
$view = new Template($toolName);
|
|
$view->assign('form', $form->returnForm());
|
|
$view->assign('script', $script);
|
|
if (!empty($users)) {
|
|
$view->assign('sessionName', $sessionName);
|
|
$view->assign('courses', $courses);
|
|
$view->assign('users', $users);
|
|
$actions .= Display::url(
|
|
Display::return_icon('export_csv.png', get_lang('ExportAsCSV'), [], 32),
|
|
api_get_self().'?export=csv',
|
|
['class' => 'export']
|
|
);
|
|
$actions .= Display::url(
|
|
Display::return_icon('export_excel.png', get_lang('ExportAsXLS'), [], ICON_SIZE_MEDIUM),
|
|
api_get_self().'?export=xls',
|
|
['class' => 'export']
|
|
);
|
|
}
|
|
$template = $view->get_template('my_space/progress_in_session_report.tpl');
|
|
$content = $view->fetch($template);
|
|
$view->assign(
|
|
'actions',
|
|
Display::toolbarAction('toolbar', [$actions])
|
|
);
|
|
$view->assign('header', $toolName);
|
|
$view->assign('content', $content);
|
|
$view->display_one_col_template();
|
|
|