diff --git a/main/attendance/attendance_controller.php b/main/attendance/attendance_controller.php index fbf1bb504d..21b993cf54 100755 --- a/main/attendance/attendance_controller.php +++ b/main/attendance/attendance_controller.php @@ -201,6 +201,7 @@ } $data['next_attendance_calendar_id'] = $attendance->get_next_attendance_calendar_id($attendance_id); + $data['next_attendance_calendar_datetime'] = $attendance->get_next_attendance_calendar_datetime($attendance_id); if (strtoupper($_SERVER['REQUEST_METHOD']) == "POST") { @@ -218,6 +219,7 @@ $data['attendant_calendar'] = $attendance->get_attendance_calendar($attendance_id); $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id); $data['next_attendance_calendar_id'] = $attendance->get_next_attendance_calendar_id($attendance_id); + $data['next_attendance_calendar_datetime'] = $attendance->get_next_attendance_calendar_datetime($attendance_id); } $this->view->set_data($data); diff --git a/main/attendance/attendance_sheet.php b/main/attendance/attendance_sheet.php index 55a8a7aaf7..8fe2101a6b 100755 --- a/main/attendance/attendance_sheet.php +++ b/main/attendance/attendance_sheet.php @@ -115,8 +115,10 @@ if (api_is_allowed_to_edit(null, true)) { 0 ) { - foreach ($attendant_calendar as $calendar) { + foreach ($attendant_calendar as $key => $calendar) { + //error_log(print_r($calendar,1)); $checked = 'checked'; + // if the if (isset($users_presence[$user['user_id']][$calendar['id']]['presence'])) { $presence = $users_presence[$user['user_id']][$calendar['id']]['presence']; if (intval($presence) == 1) { @@ -124,9 +126,15 @@ if (api_is_allowed_to_edit(null, true)) { } else { $checked = ''; } + } else { + //if the user wasn't registered at that time, consider unchecked + if ($next_attendance_calendar_datetime == 0 || $calendar['date_time'] < $next_attendance_calendar_datetime) { + $checked = ''; + } } $disabled = 'disabled'; $style_td = ''; + // if this is the active column, then set it to darker background and enable it if ($next_attendance_calendar_id == $calendar['id']) { $style_td = 'background-color:#e1e1e1'; $disabled = ''; diff --git a/main/inc/lib/attendance.lib.php b/main/inc/lib/attendance.lib.php index 45c1696ee8..b169c90628 100755 --- a/main/inc/lib/attendance.lib.php +++ b/main/inc/lib/attendance.lib.php @@ -639,6 +639,24 @@ class Attendance return $next_calendar_id; } + /** + * Get next attendance calendar datetime without presences (done attendances) + * @param int attendance id + * @return int UNIX time format datetime + */ + public function get_next_attendance_calendar_datetime($attendance_id) { + $tbl_attendance_calendar = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR); + $attendance_id = intval($attendance_id); + $sql = "SELECT id, date_time FROM $tbl_attendance_calendar WHERE attendance_id = '$attendance_id' AND done_attendance = 0 ORDER BY date_time limit 1"; + $rs = Database::query($sql); + $next_calendar_datetime = 0; + if (Database::num_rows($rs) > 0) { + $row = Database::fetch_array($rs); + $next_calendar_datetime = api_get_local_time($row['date_time']); + } + return $next_calendar_datetime; + } + /** * Get user' score from current attendance * @param int user id