Fix attendance with groups see BT#9428

1.10.x
Julio Montoya 11 years ago
parent aadab8c462
commit e14b2f2436
  1. 8
      main/attendance/attendance_controller.php
  2. 96
      main/inc/lib/attendance.lib.php

@ -435,7 +435,13 @@ class AttendanceController
} }
$data['action'] = $action; $data['action'] = $action;
$data['attendance_calendar'] = $attendance->get_attendance_calendar($attendance_id); $data['attendance_calendar'] = $attendance->get_attendance_calendar(
$attendance_id,
'all',
null,
null,
true
);
$data['is_locked_attendance'] = $attendance->is_locked_attendance($attendance_id); $data['is_locked_attendance'] = $attendance->is_locked_attendance($attendance_id);
// render to the view // render to the view
$this->view->set_data($data); $this->view->set_data($data);

@ -958,15 +958,19 @@ class Attendance
// calculate results // calculate results
$faults = $total_done_attendance - $attendance_user_score; $faults = $total_done_attendance - $attendance_user_score;
$faults = $faults > 0 ? $faults:0; if (empty($calendar_count)) {
$faults = 0;
}
$faults = $faults > 0 ? $faults : 0;
$faults_porcent = $calendar_count > 0 ?round(($faults*100)/$calendar_count,0):0; $faults_porcent = $calendar_count > 0 ?round(($faults*100)/$calendar_count,0):0;
$results['faults'] = $faults; $results['faults'] = $faults;
$results['total'] = $calendar_count; $results['total'] = $calendar_count;
$results['faults_porcent'] = $faults_porcent; $results['faults_porcent'] = $faults_porcent;
$color_bar = ''; $color_bar = '';
if ($faults_porcent > 25 ) { if ($faults_porcent > 25) {
$color_bar = '#f28989'; $color_bar = '#f28989';
} else if ($faults_porcent > 10) { } else if ($faults_porcent > 10) {
$color_bar = '#F90'; $color_bar = '#F90';
} }
@ -1243,10 +1247,11 @@ class Attendance
/** /**
* Get all attendance calendar data inside current attendance * Get all attendance calendar data inside current attendance
* @param int $attendance_id * @param int $attendance_id
* @param string $type * @param string $type
* @param int $calendar_id * @param int $calendar_id
* @param int $groupId * @param int $groupId
* @param bool $showAll = false show group calendar items or not
* *
* @return array attendance calendar data * @return array attendance calendar data
*/ */
@ -1254,7 +1259,8 @@ class Attendance
$attendance_id, $attendance_id,
$type = 'all', $type = 'all',
$calendar_id = null, $calendar_id = null,
$groupId = null $groupId = null,
$showAll = false
) { ) {
global $dateFormatShort, $timeNoSecFormat; global $dateFormatShort, $timeNoSecFormat;
$tbl_attendance_calendar = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR); $tbl_attendance_calendar = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR);
@ -1262,8 +1268,20 @@ class Attendance
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
$groupCondition = null; $groupCondition = null;
$sql = "SELECT * FROM $tbl_attendance_calendar if ($showAll) {
WHERE c_id = $course_id AND attendance_id = '$attendance_id' "; $sql = "SELECT * FROM $tbl_attendance_calendar
WHERE c_id = $course_id AND attendance_id = '$attendance_id'";
} else {
$sql = "SELECT * FROM $tbl_attendance_calendar
WHERE
c_id = $course_id AND
attendance_id = '$attendance_id' AND
id NOT IN (
SELECT calendar_id FROM $table
WHERE c_id = $course_id AND group_id != 0 AND group_id IS NOT NULL
)
";
}
if (!empty($groupId)) { if (!empty($groupId)) {
$groupId = intval($groupId); $groupId = intval($groupId);
@ -1463,31 +1481,33 @@ class Attendance
*/ */
public function addAttendanceCalendarToGroup($calendarId, $courseId, $groupList) public function addAttendanceCalendarToGroup($calendarId, $courseId, $groupList)
{ {
if (empty($groupList)) { if (empty($groupList)) {
return false; return false;
} }
$table = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR_REL_GROUP); $table = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR_REL_GROUP);
foreach ($groupList as $groupId) { foreach ($groupList as $groupId) {
$result = $this->getAttendanceCalendarGroup(
$calendarId, if (empty($groupId)) {
$courseId, continue;
$groupId }
);
$result = $this->getAttendanceCalendarGroup(
if (empty($result)) { $calendarId,
$params = array( $courseId,
'calendar_id' => $calendarId, $groupId
'c_id' => $courseId, );
'group_id' => $groupId,
); if (empty($result)) {
$insertId = Database::insert($table, $params); $params = array(
'calendar_id' => $calendarId,
$sql = "UPDATE $table SET id = iid WHERE iid = $insertId"; 'c_id' => $courseId,
Database::query($sql); 'group_id' => $groupId,
} );
} Database::insert($table, $params);
}
}
} }
/** /**

Loading…
Cancel
Save