@ -228,39 +228,62 @@ function construct_session_full_date_time($datetime, $duration) {
return $sessinfo;
}
function construct_user_data_stat($stat, $statuses, $gradable, $grade, $maxgrade, $decimalpoints ) {
function construct_user_data_stat($usersummary, $view ) {
global $OUTPUT;
if (empty($usersummary)) {
return 'no data';
}
$stattable = new html_table();
$stattable->attributes['class'] = 'attlist';
$row = new html_table_row();
$row->cells[] = get_string('sessionscompleted', 'attendance').':';
$row->cells[] = $stat['completed'];
$row->attributes['class'] = 'normal';
$row->cells[] = get_string('sessionscompleted', 'attendance') . ':';
$row->cells[] = $usersummary->numtakensessions;
$stattable->data[] = $row;
$row = new html_table_row();
$row->attributes['class'] = 'normal';
$row->cells[] = get_string('pointssessionscompleted', 'attendance') . ':';
$row->cells[] = attendance_format_float($usersummary->takensessionspoints) . ' / ' . attendance_format_float($usersummary->takensessionsmaxpoints);
$stattable->data[] = $row;
foreach ($statuses as $st) {
$row = new html_table_row();
$row->attributes['class'] = 'normal';
$row->cells[] = get_string('percentagesessionscompleted', 'attendance') . ':';
$row->cells[] = attendance_format_float($usersummary->takensessionspercentage * 100, false) . '%';
$stattable->data[] = $row;
if ($view == ATT_VIEW_ALL) {
$row = new html_table_row();
$row->cells[] = $st->description . ':';
$row->cells[] = array_key_exists($st->id, $stat['statuses']) ? $stat['statuses'][$st->id]->stcnt : 0;
$row->attributes['class'] = 'highlight';
$row->cells[] = get_string('sessionstotal', 'attendance') . ':';
$row->cells[] = attendance_format_float($usersummary->numallsessions);
$stattable->data[] = $row;
$row = new html_table_row();
$row->attributes['class'] = 'highlight';
$row->cells[] = get_string('pointsallsessions', 'attendance') . ':';
$row->cells[] = attendance_format_float($usersummary->takensessionspoints) . ' / ' . attendance_format_float($usersummary->allsessionsmaxpoints);
$stattable->data[] = $row;
}
if ($gradable) {
$row = new html_table_row();
$row->cells[] = get_string('attendancegrade', 'attendance') .
$OUTPUT->help_icon('gradebookexplanation ', 'attendance') . ':';
$row->cells[] = format_float($grade) . ' / ' . format_float($maxgrade) ;
$row->attributes['class'] = 'highlight';
$row->cells[] = get_string('percentageallsessions ', 'attendance') . ':';
$row->cells[] = attendance_format_float($usersummary->allsessionspercentage * 100, false) . '%' ;
$stattable->data[] = $row;
$row = new html_table_row();
$row->cells[] = get_string('attendancepercent', 'attendance') . ':';
if ($maxgrade == 0) {
$percent = 0;
} else {
$percent = $grade / $maxgrade * 100;
}
$row->cells[] = format_float(sprintf("%0.{$decimalpoints}f", $percent));
$row->attributes['class'] = 'normal';
$row->cells[] = get_string('maxpossiblepoints', 'attendance') . ':';
$row->cells[] = attendance_format_float($usersummary->maxpossiblepoints) . ' / ' . attendance_format_float($usersummary->allsessionsmaxpoints);
$stattable->data[] = $row;
$row = new html_table_row();
$row->attributes['class'] = 'normal';
$row->cells[] = get_string('maxpossiblepercentage', 'attendance') . ':';
$row->cells[] = attendance_format_float($usersummary->maxpossiblepercentage * 100, false) . '%';
$stattable->data[] = $row;
}
@ -268,25 +291,6 @@ function construct_user_data_stat($stat, $statuses, $gradable, $grade, $maxgrade
}
function construct_full_user_stat_html_table($attendance, $course, $user, $coursemodule) {
global $CFG;
$gradeable = $attendance->grade > 0;
$statuses = attendance_get_statuses($attendance->id);
$userstatusesstat = attendance_get_user_statuses_stat($attendance->id, $course->startdate, $user->id, $coursemodule);
$stat['completed'] = attendance_get_user_taken_sessions_count($attendance->id, $course->startdate, $user->id, $coursemodule);
$stat['statuses'] = $userstatusesstat;
if ($gradeable) {
$grade = attendance_get_user_grade($userstatusesstat, $statuses);
$maxgrade = attendance_get_user_max_grade(attendance_get_user_taken_sessions_count($attendance->id, $course->startdate,
$user->id, $coursemodule), $statuses);
if (!$decimalpoints = grade_get_setting($course->id, 'decimalpoints')) {
$decimalpoints = $CFG->grade_decimalpoints;
}
} else {
$grade = 0;
$maxgrade = 0;
$decimalpoints = 0;
}
return construct_user_data_stat($stat, $statuses,
$gradeable, $grade, $maxgrade, $decimalpoints);
$summary = new mod_attendance_summary($attendance->id, $user->id);
return construct_user_data_stat($summary->get_all_sessions_summary_for($user->id), ATT_VIEW_ALL);
}