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