get_flat_list(); $lastLearnpath = end($lpList); if (!$lastLearnpath) { $courseValues[] = ['0 %', 0]; continue; } $courseProgress = Tracking::get_avg_student_progress( $studentId, $course['code'], [], $sessionId ); $evaluationResult = '0'; $lp = new learnpath($course['code'], $lastLearnpath['iid'], $studentId); if ($finalEvaluationItem = $lp->getFinalEvaluationItem()) { $bestScoreData = ExerciseLib::get_best_attempt_by_user( $studentId, $finalEvaluationItem->path, $course['real_id'], $sessionId, false ); if ($bestScoreData) { $evaluationResult = ExerciseLib::show_score( $bestScoreData['exe_result'], $bestScoreData['exe_weighting'] ); } } $value = is_numeric($courseProgress) ? round($courseProgress, 2) : 0; $progressSum += $value; $courseValues[] = [ sprintf(get_lang('XPercent'), $value), strip_tags($evaluationResult), ]; } $average = $totalCourses > 0 ? round($progressSum / $totalCourses, 2) : 0; $row = [ $studentInfo['lastname'], $studentInfo['firstname'], sprintf(get_lang('XPercent'), $average), ]; foreach ($courseValues as $courseValue) { $row[] = $courseValue[0]; $row[] = $courseValue[1]; } $data[] = $row; } $filename = 'session_student_progress_'.$sessionInfo['name'].'_'.api_get_local_time(); switch ($fileType) { case 'xls': Export::arrayToXls($data, $filename); break; case 'csv': default: Export::arrayToCsv($data, $filename); break; }