|
1195 | 1195 | echo MyStudents::userCareersTable($student_id);
|
1196 | 1196 | }
|
1197 | 1197 |
|
| 1198 | +// Session progress section |
| 1199 | +if (api_get_configuration_value('improve_tracking_in_mystudent_php')) { |
| 1200 | + $orderCondition = null; |
| 1201 | + if (api_get_configuration_value('session_list_order')) { |
| 1202 | + $orderCondition = ' ORDER BY s.position ASC'; |
| 1203 | + } |
| 1204 | + $sessions = SessionManager::getSessionsFollowedByUser( |
| 1205 | + $student_id, |
| 1206 | + null, |
| 1207 | + null, |
| 1208 | + null, |
| 1209 | + false, |
| 1210 | + false, |
| 1211 | + false, |
| 1212 | + $orderCondition |
| 1213 | + ); |
| 1214 | + $sessionProgressTitle = get_lang('synthesis'); |
| 1215 | + $sessionProgressHeading = '<h3 class="panel-title text-center"><strong>'.$sessionProgressTitle.'</strong></h3>'; |
| 1216 | + $sessionProgressList = []; |
| 1217 | + $totalSessionsProgress = 0; |
| 1218 | + foreach ($sessions as $sessionItem) { |
| 1219 | + $courses = SessionManager::get_course_list_by_session_id($sessionItem['id']); |
| 1220 | + $courseProgressSum = 0; |
| 1221 | + $courseCount = 0; |
| 1222 | + foreach ($courses as $courseItem) { |
| 1223 | + $courseInfoItem = api_get_course_info_by_id($courseItem['real_id']); |
| 1224 | + $courseCodeItem = $courseInfoItem['code']; |
| 1225 | + if (CourseManager::is_user_subscribed_in_course($student_id, $courseCodeItem, true, $sessionItem['id'])) { |
| 1226 | + $progressValue = Tracking::get_avg_student_progress( |
| 1227 | + $student_id, |
| 1228 | + $courseCodeItem, |
| 1229 | + [], |
| 1230 | + $sessionItem['id'] |
| 1231 | + ); |
| 1232 | + if (is_numeric($progressValue)) { |
| 1233 | + $courseProgressSum += $progressValue; |
| 1234 | + } |
| 1235 | + $courseCount++; |
| 1236 | + } |
| 1237 | + } |
| 1238 | + $progress = $courseCount > 0 ? round($courseProgressSum / $courseCount, 2) : 0; |
| 1239 | + $sessionProgressList[] = [ |
| 1240 | + 'name' => $sessionItem['name'], |
| 1241 | + 'progress' => $progress, |
| 1242 | + ]; |
| 1243 | + $totalSessionsProgress += $progress; |
| 1244 | + } |
| 1245 | + $avgSessionsProgress = !empty($sessionProgressList) ? round($totalSessionsProgress / count($sessionProgressList), 2) : 0; |
| 1246 | + |
| 1247 | + // Calculate last week's time spent in courses using Tracking::generateReport |
| 1248 | + $aLastWeek = get_last_week(); |
| 1249 | + $startWeek = date('Y-m-d', $aLastWeek[0]); |
| 1250 | + $endWeek = date('Y-m-d', $aLastWeek[6]); |
| 1251 | + $report = Tracking::generateReport('time_report', [$student_id], $startWeek, $endWeek); |
| 1252 | + $timeSeconds = 0; |
| 1253 | + foreach ($report['rows'] as $reportRow) { |
| 1254 | + $timeParts = explode(':', $reportRow[6]); |
| 1255 | + if (count($timeParts) === 3) { |
| 1256 | + [$hours, $minutes, $seconds] = array_map('intval', $timeParts); |
| 1257 | + $timeSeconds += ($hours * 3600) + ($minutes * 60) + $seconds; |
| 1258 | + } |
| 1259 | + } |
| 1260 | + $timeSpentLastWeek = api_time_to_hms($timeSeconds); |
| 1261 | + $timeContent = '<div class="text-center">'; |
| 1262 | + $timeContent .= Display::return_icon('clock.png', get_lang('TimeSpentLastWeek'), [], ICON_SIZE_MEDIUM); |
| 1263 | + $timeContent .= ' '.$timeSpentLastWeek; |
| 1264 | + $timeContent .= '</div>'; |
| 1265 | + $timePanel = Display::panel($timeContent, get_lang('TimeSpentInCoursesLastWeek')); |
| 1266 | + |
| 1267 | + $donutContent = '<div class="easy-donut text-center">'; |
| 1268 | + $donutContent .= '<div id="easypiechart-session-avg" class="easypiechart" data-percent="'.$avgSessionsProgress.'">'; |
| 1269 | + $donutContent .= '<span class="percent">'.$avgSessionsProgress.'%</span>'; |
| 1270 | + $donutContent .= '</div>'; |
| 1271 | + $donutContent .= '</div>'; |
| 1272 | + $donutPanel = Display::panel($donutContent, get_lang('AverageProgressInSessions')); |
| 1273 | + |
| 1274 | + $sessionBars = ''; |
| 1275 | + foreach ($sessionProgressList as $item) { |
| 1276 | + $sessionBars .= '<p>'.Security::remove_XSS($item['name']).'</p>'; |
| 1277 | + $sessionBars .= '<div class="progress">'; |
| 1278 | + $sessionBars .= '<div class="progress-bar progress-bar-success" role="progressbar" style="width: '.$item['progress'].'%;">'.$item['progress'].'%</div>'; |
| 1279 | + $sessionBars .= '</div>'; |
| 1280 | + } |
| 1281 | + $sessionBarsPanel = Display::panel($sessionBars); |
| 1282 | + |
| 1283 | + $sessionProgressHtml = '<div class="row session-progress-section">'; |
| 1284 | + $sessionProgressHtml .= '<div class="col-md-6">'.$sessionBarsPanel.'</div>'; |
| 1285 | + $sessionProgressHtml .= '<div class="col-md-6 text-center">'; |
| 1286 | + $sessionProgressHtml .= $donutPanel; |
| 1287 | + $sessionProgressHtml .= $timePanel; |
| 1288 | + $sessionProgressHtml .= '</div>'; |
| 1289 | + $sessionProgressHtml .= '</div>'; |
| 1290 | + echo Display::panel($sessionProgressHtml, '', '', 'default', $sessionProgressHeading); |
| 1291 | + echo "<script> |
| 1292 | + $(function () { |
| 1293 | + $('#easypiechart-session-avg').easyPieChart({ |
| 1294 | + scaleColor: false, |
| 1295 | + barColor: '#30a5ff', |
| 1296 | + lineWidth: 8, |
| 1297 | + trackColor: '#f2f2f2' |
| 1298 | + }); |
| 1299 | + }); |
| 1300 | + </script>"; |
| 1301 | +} |
| 1302 | + |
1198 | 1303 | echo MyStudents::getBlockForSkills(
|
1199 | 1304 | $student_id,
|
1200 | 1305 | $courseInfo ? $courseInfo['real_id'] : 0,
|
|
0 commit comments