|
|
|
|
@ -37,6 +37,7 @@ class Attendance |
|
|
|
|
/** |
|
|
|
|
* Get the total number of attendance inside current course and current session |
|
|
|
|
* @param int $active |
|
|
|
|
* @return int |
|
|
|
|
* @see SortableTable#get_total_number_of_items() |
|
|
|
|
*/ |
|
|
|
|
public static function get_number_of_attendances($active = -1) |
|
|
|
|
@ -270,17 +271,17 @@ class Attendance |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Get the attendances by id to display on the current page |
|
|
|
|
* @param int $attendance_id |
|
|
|
|
* @param int $attendanceId |
|
|
|
|
* @return array attendance data |
|
|
|
|
*/ |
|
|
|
|
public function get_attendance_by_id($attendance_id) |
|
|
|
|
public function get_attendance_by_id($attendanceId) |
|
|
|
|
{ |
|
|
|
|
$tbl_attendance = Database::get_course_table(TABLE_ATTENDANCE); |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
$attendance_data = array(); |
|
|
|
|
$sql = "SELECT * FROM $tbl_attendance |
|
|
|
|
WHERE c_id = $course_id AND id = '$attendance_id'"; |
|
|
|
|
WHERE c_id = $course_id AND id = '$attendanceId'"; |
|
|
|
|
$res = Database::query($sql); |
|
|
|
|
if (Database::num_rows($res) > 0) { |
|
|
|
|
while ($row = Database::fetch_array($res)) { |
|
|
|
|
@ -372,7 +373,7 @@ class Attendance |
|
|
|
|
* @param bool true for adding link in gradebook or false otherwise (optional) |
|
|
|
|
* @return int last id |
|
|
|
|
*/ |
|
|
|
|
public function attendance_edit($attendance_id, $link_to_gradebook = false) |
|
|
|
|
public function attendance_edit($attendanceId, $link_to_gradebook = false) |
|
|
|
|
{ |
|
|
|
|
$_course = api_get_course_info(); |
|
|
|
|
$tbl_attendance = Database::get_course_table(TABLE_ATTENDANCE); |
|
|
|
|
@ -380,14 +381,14 @@ class Attendance |
|
|
|
|
|
|
|
|
|
$session_id = api_get_session_id(); |
|
|
|
|
$user_id = api_get_user_id(); |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$course_code = $_course['code']; |
|
|
|
|
$course_id = $_course['real_id']; |
|
|
|
|
$title_gradebook = $this->attendance_qualify_title; |
|
|
|
|
$value_calification = 0; |
|
|
|
|
$weight_calification = api_float_val($this->attendance_weight); |
|
|
|
|
|
|
|
|
|
if (!empty($attendance_id)) { |
|
|
|
|
if (!empty($attendanceId)) { |
|
|
|
|
$params = [ |
|
|
|
|
'name' => $this->name, |
|
|
|
|
'description' => $this->description, |
|
|
|
|
@ -397,13 +398,13 @@ class Attendance |
|
|
|
|
Database::update( |
|
|
|
|
$tbl_attendance, |
|
|
|
|
$params, |
|
|
|
|
['c_id = ? AND id = ?' => [$course_id, $attendance_id]] |
|
|
|
|
['c_id = ? AND id = ?' => [$course_id, $attendanceId]] |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
api_item_property_update( |
|
|
|
|
$_course, |
|
|
|
|
TOOL_ATTENDANCE, |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
"AttendanceUpdated", |
|
|
|
|
$user_id |
|
|
|
|
); |
|
|
|
|
@ -414,7 +415,7 @@ class Attendance |
|
|
|
|
$link_info = GradebookUtils::isResourceInCourseGradebook( |
|
|
|
|
$course_code, |
|
|
|
|
7, |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
$session_id |
|
|
|
|
); |
|
|
|
|
if (!$link_info) { |
|
|
|
|
@ -422,7 +423,7 @@ class Attendance |
|
|
|
|
$this->category_id, |
|
|
|
|
$course_code, |
|
|
|
|
7, |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
$title_gradebook, |
|
|
|
|
$weight_calification, |
|
|
|
|
$value_calification, |
|
|
|
|
@ -435,7 +436,7 @@ class Attendance |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $attendance_id; |
|
|
|
|
return $attendanceId; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return null; |
|
|
|
|
@ -446,14 +447,14 @@ class Attendance |
|
|
|
|
* @param int|array one or many attendances id |
|
|
|
|
* @return int affected rows |
|
|
|
|
*/ |
|
|
|
|
public function attendance_restore($attendance_id) |
|
|
|
|
public function attendance_restore($attendanceId) |
|
|
|
|
{ |
|
|
|
|
$_course = api_get_course_info(); |
|
|
|
|
$tbl_attendance = Database::get_course_table(TABLE_ATTENDANCE); |
|
|
|
|
$user_id = api_get_user_id(); |
|
|
|
|
$course_id = $_course['real_id']; |
|
|
|
|
if (is_array($attendance_id)) { |
|
|
|
|
foreach ($attendance_id as $id) { |
|
|
|
|
if (is_array($attendanceId)) { |
|
|
|
|
foreach ($attendanceId as $id) { |
|
|
|
|
$id = intval($id); |
|
|
|
|
$sql = "UPDATE $tbl_attendance SET active = 1 |
|
|
|
|
WHERE c_id = $course_id AND id = '$id'"; |
|
|
|
|
@ -471,9 +472,9 @@ class Attendance |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$sql = "UPDATE $tbl_attendance SET active = 1 |
|
|
|
|
WHERE c_id = $course_id AND id = '$attendance_id'"; |
|
|
|
|
WHERE c_id = $course_id AND id = '$attendanceId'"; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
$affected_rows = Database::affected_rows($result); |
|
|
|
|
if (!empty($affected_rows)) { |
|
|
|
|
@ -481,7 +482,7 @@ class Attendance |
|
|
|
|
api_item_property_update( |
|
|
|
|
$_course, |
|
|
|
|
TOOL_ATTENDANCE, |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
'restore', |
|
|
|
|
$user_id |
|
|
|
|
); |
|
|
|
|
@ -493,18 +494,18 @@ class Attendance |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Delete attendances |
|
|
|
|
* @param int|array $attendance_id one or many attendances id |
|
|
|
|
* @param int|array $attendanceId one or many attendances id |
|
|
|
|
* @return int affected rows |
|
|
|
|
*/ |
|
|
|
|
public function attendance_delete($attendance_id) |
|
|
|
|
public function attendance_delete($attendanceId) |
|
|
|
|
{ |
|
|
|
|
$_course = api_get_course_info(); |
|
|
|
|
$tbl_attendance = Database::get_course_table(TABLE_ATTENDANCE); |
|
|
|
|
$user_id = api_get_user_id(); |
|
|
|
|
$course_id = $_course['real_id']; |
|
|
|
|
|
|
|
|
|
if (is_array($attendance_id)) { |
|
|
|
|
foreach ($attendance_id as $id) { |
|
|
|
|
if (is_array($attendanceId)) { |
|
|
|
|
foreach ($attendanceId as $id) { |
|
|
|
|
$id = intval($id); |
|
|
|
|
$sql = "UPDATE $tbl_attendance SET active = 2 |
|
|
|
|
WHERE c_id = $course_id AND id = '$id'"; |
|
|
|
|
@ -522,9 +523,9 @@ class Attendance |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$sql = "UPDATE $tbl_attendance SET active = 2 |
|
|
|
|
WHERE c_id = $course_id AND id = '$attendance_id'"; |
|
|
|
|
WHERE c_id = $course_id AND id = '$attendanceId'"; |
|
|
|
|
|
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
$affected_rows = Database::affected_rows($result); |
|
|
|
|
@ -533,7 +534,7 @@ class Attendance |
|
|
|
|
api_item_property_update( |
|
|
|
|
$_course, |
|
|
|
|
TOOL_ATTENDANCE, |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
"delete", |
|
|
|
|
$user_id |
|
|
|
|
); |
|
|
|
|
@ -609,20 +610,20 @@ class Attendance |
|
|
|
|
* |
|
|
|
|
* @return int |
|
|
|
|
*/ |
|
|
|
|
public function lock_attendance($attendance_id, $lock = true) |
|
|
|
|
public function lock_attendance($attendanceId, $lock = true) |
|
|
|
|
{ |
|
|
|
|
$tbl_attendance = Database::get_course_table(TABLE_ATTENDANCE); |
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$locked = ($lock) ? 1 : 0; |
|
|
|
|
$upd = "UPDATE $tbl_attendance SET locked = $locked |
|
|
|
|
WHERE c_id = $course_id AND id = $attendance_id"; |
|
|
|
|
WHERE c_id = $course_id AND id = $attendanceId"; |
|
|
|
|
$result = Database::query($upd); |
|
|
|
|
$affected_rows = Database::affected_rows($result); |
|
|
|
|
if ($affected_rows && $lock) { |
|
|
|
|
// Save attendance sheet log |
|
|
|
|
$this->saveAttendanceSheetLog( |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
api_get_utc_datetime(), |
|
|
|
|
self::LOCKED_ATTENDANCE_LOG_TYPE, |
|
|
|
|
api_get_user_id() |
|
|
|
|
@ -633,11 +634,11 @@ class Attendance |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Get registered users inside current course |
|
|
|
|
* @param int $attendance_id attendance id for showing attendance result field (optional) |
|
|
|
|
* @param int $attendanceId attendance id for showing attendance result field (optional) |
|
|
|
|
* @param int $groupId |
|
|
|
|
* @return array users data |
|
|
|
|
*/ |
|
|
|
|
public function get_users_rel_course($attendance_id = 0, $groupId = 0) |
|
|
|
|
public function get_users_rel_course($attendanceId = 0, $groupId = 0) |
|
|
|
|
{ |
|
|
|
|
$current_session_id = api_get_session_id(); |
|
|
|
|
$current_course_id = api_get_course_id(); |
|
|
|
|
@ -709,10 +710,10 @@ class Attendance |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!empty($attendance_id)) { |
|
|
|
|
if (!empty($attendanceId)) { |
|
|
|
|
$user_faults = $this->get_faults_of_user( |
|
|
|
|
$uid, |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
$groupId |
|
|
|
|
); |
|
|
|
|
$value['attendance_result'] = $user_faults['faults'].'/'.$user_faults['total'].' ('.$user_faults['faults_porcent'].'%)'; |
|
|
|
|
@ -743,16 +744,16 @@ class Attendance |
|
|
|
|
* add attendances sheet inside table |
|
|
|
|
* @param int $calendar_id attendance calendar id |
|
|
|
|
* @param array $users_present present users during current class |
|
|
|
|
* @param int $attendance_id |
|
|
|
|
* @param int $attendanceId |
|
|
|
|
* @return int affected rows |
|
|
|
|
*/ |
|
|
|
|
public function attendance_sheet_add($calendar_id, $users_present, $attendance_id) |
|
|
|
|
public function attendance_sheet_add($calendar_id, $users_present, $attendanceId) |
|
|
|
|
{ |
|
|
|
|
$tbl_attendance_sheet = Database::get_course_table(TABLE_ATTENDANCE_SHEET); |
|
|
|
|
$tbl_attendance_calendar = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR); |
|
|
|
|
|
|
|
|
|
$calendar_id = intval($calendar_id); |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$users = $this->get_users_rel_course(); |
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
|
|
|
|
|
@ -830,12 +831,12 @@ class Attendance |
|
|
|
|
Database::query($sql); |
|
|
|
|
|
|
|
|
|
// save users' results |
|
|
|
|
$this->updateUsersResults($user_ids, $attendance_id); |
|
|
|
|
$this->updateUsersResults($user_ids, $attendanceId); |
|
|
|
|
|
|
|
|
|
if ($affected_rows) { |
|
|
|
|
//save attendance sheet log |
|
|
|
|
$this->saveAttendanceSheetLog( |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
api_get_utc_datetime(), |
|
|
|
|
$lastedit_type, |
|
|
|
|
api_get_user_id(), |
|
|
|
|
@ -849,18 +850,18 @@ class Attendance |
|
|
|
|
/** |
|
|
|
|
* update users' attendance results |
|
|
|
|
* @param array $user_ids registered users inside current course |
|
|
|
|
* @param int $attendance_id |
|
|
|
|
* @param int $attendanceId |
|
|
|
|
*/ |
|
|
|
|
public function updateUsersResults($user_ids, $attendance_id) |
|
|
|
|
public function updateUsersResults($user_ids, $attendanceId) |
|
|
|
|
{ |
|
|
|
|
$tbl_attendance_sheet = Database::get_course_table(TABLE_ATTENDANCE_SHEET); |
|
|
|
|
$tbl_attendance_result = Database::get_course_table(TABLE_ATTENDANCE_RESULT); |
|
|
|
|
$tbl_attendance = Database::get_course_table(TABLE_ATTENDANCE); |
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
// fill results about presence of students |
|
|
|
|
$attendance_calendar = $this->get_attendance_calendar( |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
'all', |
|
|
|
|
null, |
|
|
|
|
null, |
|
|
|
|
@ -894,7 +895,7 @@ class Attendance |
|
|
|
|
WHERE |
|
|
|
|
c_id = $course_id AND |
|
|
|
|
user_id = '$uid' AND |
|
|
|
|
attendance_id = '$attendance_id' "; |
|
|
|
|
attendance_id = '$attendanceId' "; |
|
|
|
|
$rs_check_result = Database::query($sql); |
|
|
|
|
|
|
|
|
|
if (Database::num_rows($rs_check_result) > 0) { |
|
|
|
|
@ -904,14 +905,14 @@ class Attendance |
|
|
|
|
WHERE |
|
|
|
|
c_id = $course_id AND |
|
|
|
|
user_id='$uid' AND |
|
|
|
|
attendance_id='$attendance_id'"; |
|
|
|
|
attendance_id='$attendanceId'"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
} else { |
|
|
|
|
// insert new result |
|
|
|
|
$sql = "INSERT INTO $tbl_attendance_result SET |
|
|
|
|
c_id = $course_id , |
|
|
|
|
user_id = '$uid', |
|
|
|
|
attendance_id = '$attendance_id', |
|
|
|
|
attendance_id = '$attendanceId', |
|
|
|
|
score = '$count_presences'"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
|
|
|
|
|
@ -925,10 +926,10 @@ class Attendance |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// update attendance qualify max |
|
|
|
|
$count_done_calendar = self::get_done_attendance_calendar($attendance_id); |
|
|
|
|
$count_done_calendar = self::get_done_attendance_calendar($attendanceId); |
|
|
|
|
$sql = "UPDATE $tbl_attendance SET |
|
|
|
|
attendance_qualify_max = '$count_done_calendar' |
|
|
|
|
WHERE c_id = $course_id AND id = '$attendance_id'"; |
|
|
|
|
WHERE c_id = $course_id AND id = '$attendanceId'"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -942,7 +943,7 @@ class Attendance |
|
|
|
|
* @return int Affected rows |
|
|
|
|
*/ |
|
|
|
|
public function saveAttendanceSheetLog( |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
$lastedit_date, |
|
|
|
|
$lastedit_type, |
|
|
|
|
$lastedit_user_id, |
|
|
|
|
@ -954,7 +955,7 @@ class Attendance |
|
|
|
|
$tbl_attendance_sheet_log = Database::get_course_table(TABLE_ATTENDANCE_SHEET_LOG); |
|
|
|
|
|
|
|
|
|
// protect data |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$lastedit_user_id = intval($lastedit_user_id); |
|
|
|
|
|
|
|
|
|
if (isset($calendar_date_value)) { |
|
|
|
|
@ -966,7 +967,7 @@ class Attendance |
|
|
|
|
// save data |
|
|
|
|
$params = [ |
|
|
|
|
'c_id' => $course_id, |
|
|
|
|
'attendance_id' => $attendance_id, |
|
|
|
|
'attendance_id' => $attendanceId, |
|
|
|
|
'lastedit_date' => $lastedit_date, |
|
|
|
|
'lastedit_type' => $lastedit_type, |
|
|
|
|
'lastedit_user_id' => $lastedit_user_id, |
|
|
|
|
@ -986,16 +987,16 @@ class Attendance |
|
|
|
|
* @param int attendance id |
|
|
|
|
* @return int number of done attendances |
|
|
|
|
*/ |
|
|
|
|
public static function get_done_attendance_calendar($attendance_id) |
|
|
|
|
public static function get_done_attendance_calendar($attendanceId) |
|
|
|
|
{ |
|
|
|
|
$table = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR); |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
$sql = "SELECT count(done_attendance) as count |
|
|
|
|
FROM $table |
|
|
|
|
WHERE |
|
|
|
|
c_id = $course_id AND |
|
|
|
|
attendance_id = '$attendance_id' AND |
|
|
|
|
attendance_id = '$attendanceId' AND |
|
|
|
|
done_attendance = 1 |
|
|
|
|
"; |
|
|
|
|
$rs = Database::query($sql); |
|
|
|
|
@ -1008,33 +1009,33 @@ class Attendance |
|
|
|
|
/** |
|
|
|
|
* Get results of faults (absents) by user |
|
|
|
|
* @param int $user_id |
|
|
|
|
* @param int $attendance_id |
|
|
|
|
* @param int $attendanceId |
|
|
|
|
* @param int $groupId |
|
|
|
|
* |
|
|
|
|
* @return array results containing number of faults, total done attendance, |
|
|
|
|
* percent of faults and color depend on result (red, orange) |
|
|
|
|
*/ |
|
|
|
|
public function get_faults_of_user($user_id, $attendance_id, $groupId = null) |
|
|
|
|
public function get_faults_of_user($user_id, $attendanceId, $groupId = null) |
|
|
|
|
{ |
|
|
|
|
$user_id = intval($user_id); |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$results = array(); |
|
|
|
|
$calendar_count = self::get_number_of_attendance_calendar( |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
$groupId, |
|
|
|
|
null, |
|
|
|
|
$user_id |
|
|
|
|
); |
|
|
|
|
// $total_done_attendance = $attendance_data['attendance_qualify_max']; |
|
|
|
|
$total_done_attendance = self::get_number_of_attendance_calendar( |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
$groupId, |
|
|
|
|
true, |
|
|
|
|
$user_id |
|
|
|
|
); |
|
|
|
|
$attendance_user_score = $this->get_user_score( |
|
|
|
|
$user_id, |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
$groupId |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
@ -1169,20 +1170,20 @@ class Attendance |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Get registered users' attendance sheet inside current course |
|
|
|
|
* @param int $attendance_id |
|
|
|
|
* @param int $attendanceId |
|
|
|
|
* @param int $user_id for showing data for only one user (optional) |
|
|
|
|
* @param int $groupId |
|
|
|
|
* @return array users attendance sheet data |
|
|
|
|
*/ |
|
|
|
|
public function get_users_attendance_sheet( |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
$user_id = 0, |
|
|
|
|
$groupId = 0 |
|
|
|
|
) { |
|
|
|
|
$tbl_attendance_sheet = Database::get_course_table(TABLE_ATTENDANCE_SHEET); |
|
|
|
|
$tbl_attendance_calendar = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR); |
|
|
|
|
$attendance_calendar = $this->get_attendance_calendar( |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
'all', |
|
|
|
|
null, |
|
|
|
|
$groupId |
|
|
|
|
@ -1248,16 +1249,16 @@ class Attendance |
|
|
|
|
* @param int attendance id |
|
|
|
|
* @return int attendance calendar id |
|
|
|
|
*/ |
|
|
|
|
public function get_next_attendance_calendar_id($attendance_id) |
|
|
|
|
public function get_next_attendance_calendar_id($attendanceId) |
|
|
|
|
{ |
|
|
|
|
$table = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR); |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
|
|
|
|
|
$sql = "SELECT id FROM $table |
|
|
|
|
WHERE |
|
|
|
|
c_id = $course_id AND |
|
|
|
|
attendance_id = '$attendance_id' AND |
|
|
|
|
attendance_id = '$attendanceId' AND |
|
|
|
|
done_attendance = 0 |
|
|
|
|
ORDER BY date_time |
|
|
|
|
LIMIT 1"; |
|
|
|
|
@ -1276,15 +1277,15 @@ class Attendance |
|
|
|
|
* @param int attendance id |
|
|
|
|
* @return int UNIX time format datetime |
|
|
|
|
*/ |
|
|
|
|
public function getNextAttendanceCalendarDatetime($attendance_id) |
|
|
|
|
public function getNextAttendanceCalendarDatetime($attendanceId) |
|
|
|
|
{ |
|
|
|
|
$table = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR); |
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$sql = "SELECT id, date_time FROM $table |
|
|
|
|
WHERE |
|
|
|
|
c_id = $course_id AND |
|
|
|
|
attendance_id = '$attendance_id' AND |
|
|
|
|
attendance_id = '$attendanceId' AND |
|
|
|
|
done_attendance = 0 |
|
|
|
|
ORDER BY date_time |
|
|
|
|
LIMIT 1"; |
|
|
|
|
@ -1299,20 +1300,20 @@ class Attendance |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Get user' score from current attendance |
|
|
|
|
* Get user's score from current attendance |
|
|
|
|
* @param int $user_id |
|
|
|
|
* @param int $attendance_id |
|
|
|
|
* @param int $attendanceId |
|
|
|
|
* @param int $groupId |
|
|
|
|
* @return int score |
|
|
|
|
*/ |
|
|
|
|
public function get_user_score($user_id, $attendance_id, $groupId = 0) |
|
|
|
|
public function get_user_score($user_id, $attendanceId, $groupId = 0) |
|
|
|
|
{ |
|
|
|
|
$tbl_attendance_result = Database::get_course_table(TABLE_ATTENDANCE_RESULT); |
|
|
|
|
$tbl_attendance_sheet = Database::get_course_table(TABLE_ATTENDANCE_SHEET); |
|
|
|
|
$tbl_attendance_cal_rel_group = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR_REL_GROUP); |
|
|
|
|
$tbl_attendance_cal = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR); |
|
|
|
|
$user_id = intval($user_id); |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$groupId = (int) $groupId; |
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
if (empty($groupId)) { |
|
|
|
|
@ -1320,7 +1321,7 @@ class Attendance |
|
|
|
|
WHERE |
|
|
|
|
c_id = $course_id AND |
|
|
|
|
user_id='$user_id' AND |
|
|
|
|
attendance_id='$attendance_id'"; |
|
|
|
|
attendance_id='$attendanceId'"; |
|
|
|
|
} else { |
|
|
|
|
$sql = "SELECT count(presence) as score FROM $tbl_attendance_sheet |
|
|
|
|
WHERE |
|
|
|
|
@ -1334,7 +1335,7 @@ class Attendance |
|
|
|
|
WHERE |
|
|
|
|
crg.c_id = $course_id AND |
|
|
|
|
crg.group_id = $groupId AND |
|
|
|
|
c.attendance_id = $attendance_id |
|
|
|
|
c.attendance_id = $attendanceId |
|
|
|
|
) |
|
|
|
|
"; |
|
|
|
|
} |
|
|
|
|
@ -1374,7 +1375,7 @@ class Attendance |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Get all attendance calendar data inside current attendance |
|
|
|
|
* @param int $attendance_id |
|
|
|
|
* @param int $attendanceId |
|
|
|
|
* @param string $type |
|
|
|
|
* @param int $calendar_id |
|
|
|
|
* @param int $groupId |
|
|
|
|
@ -1383,7 +1384,7 @@ class Attendance |
|
|
|
|
* @return array attendance calendar data |
|
|
|
|
*/ |
|
|
|
|
public function get_attendance_calendar( |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
$type = 'all', |
|
|
|
|
$calendar_id = null, |
|
|
|
|
$groupId = 0, |
|
|
|
|
@ -1391,17 +1392,17 @@ class Attendance |
|
|
|
|
) { |
|
|
|
|
$tbl_attendance_calendar = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR); |
|
|
|
|
$tbl_acrg = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR_REL_GROUP); |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
|
|
|
|
|
if ($showAll) { |
|
|
|
|
$sql = "SELECT * FROM $tbl_attendance_calendar c |
|
|
|
|
WHERE c_id = $course_id AND attendance_id = '$attendance_id'"; |
|
|
|
|
WHERE c_id = $course_id AND attendance_id = '$attendanceId'"; |
|
|
|
|
} else { |
|
|
|
|
$sql = "SELECT * FROM $tbl_attendance_calendar c |
|
|
|
|
WHERE |
|
|
|
|
c_id = $course_id AND |
|
|
|
|
attendance_id = '$attendance_id' AND |
|
|
|
|
attendance_id = '$attendanceId' AND |
|
|
|
|
id NOT IN ( |
|
|
|
|
SELECT calendar_id FROM $tbl_acrg |
|
|
|
|
WHERE c_id = $course_id AND group_id != 0 AND group_id IS NOT NULL |
|
|
|
|
@ -1417,7 +1418,7 @@ class Attendance |
|
|
|
|
WHERE |
|
|
|
|
c.c_id = $course_id AND |
|
|
|
|
g.group_id = '$groupId' AND |
|
|
|
|
c.attendance_id = '$attendance_id' |
|
|
|
|
c.attendance_id = '$attendanceId' |
|
|
|
|
"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -1471,12 +1472,14 @@ class Attendance |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Get number of attendance calendar inside current attendance |
|
|
|
|
* @param int $attendance_id |
|
|
|
|
* @param int $attendanceId |
|
|
|
|
* @param int $groupId |
|
|
|
|
* @param $done_attendance |
|
|
|
|
* @param int $userId |
|
|
|
|
* @return int number of dates in attendance calendar |
|
|
|
|
*/ |
|
|
|
|
public static function get_number_of_attendance_calendar( |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
$groupId = 0, |
|
|
|
|
$done_attendance = null, |
|
|
|
|
$userId = 0 |
|
|
|
|
@ -1484,7 +1487,7 @@ class Attendance |
|
|
|
|
$tbl_attendance_calendar = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR); |
|
|
|
|
$calendarRelGroup = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR_REL_GROUP); |
|
|
|
|
$tbl_groupRelUser = Database::get_course_table(TABLE_GROUP_USER); |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$groupId = intval($groupId); |
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
|
|
|
|
|
@ -1499,7 +1502,7 @@ class Attendance |
|
|
|
|
WHERE |
|
|
|
|
c_id = $course_id AND |
|
|
|
|
$where_attendance |
|
|
|
|
attendance_id = '$attendance_id' AND |
|
|
|
|
attendance_id = '$attendanceId' AND |
|
|
|
|
id NOT IN ( |
|
|
|
|
SELECT calendar_id FROM $calendarRelGroup |
|
|
|
|
WHERE |
|
|
|
|
@ -1516,7 +1519,7 @@ class Attendance |
|
|
|
|
WHERE |
|
|
|
|
a.c_id = $course_id AND |
|
|
|
|
$where_attendance |
|
|
|
|
attendance_id = '$attendance_id' AND |
|
|
|
|
attendance_id = '$attendanceId' AND |
|
|
|
|
group_id = $groupId |
|
|
|
|
"; |
|
|
|
|
} |
|
|
|
|
@ -1527,7 +1530,7 @@ class Attendance |
|
|
|
|
WHERE |
|
|
|
|
c_id = $course_id AND |
|
|
|
|
$where_attendance |
|
|
|
|
attendance_id = '$attendance_id' AND |
|
|
|
|
attendance_id = '$attendanceId' AND |
|
|
|
|
id NOT IN ( |
|
|
|
|
SELECT calendar_id FROM $calendarRelGroup |
|
|
|
|
WHERE |
|
|
|
|
@ -1549,7 +1552,7 @@ class Attendance |
|
|
|
|
WHERE |
|
|
|
|
a.c_id = $course_id AND |
|
|
|
|
$where_attendance |
|
|
|
|
attendance_id = '$attendance_id' AND |
|
|
|
|
attendance_id = '$attendanceId' AND |
|
|
|
|
group_id = $groupId |
|
|
|
|
"; |
|
|
|
|
} |
|
|
|
|
@ -1564,18 +1567,18 @@ class Attendance |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Get count dates inside attendance calendar by attendance id |
|
|
|
|
* @param int $attendance_id |
|
|
|
|
* @param int $attendanceId |
|
|
|
|
* @return int count of dates |
|
|
|
|
*/ |
|
|
|
|
public static function get_count_dates_inside_attendance_calendar($attendance_id) |
|
|
|
|
public static function get_count_dates_inside_attendance_calendar($attendanceId) |
|
|
|
|
{ |
|
|
|
|
$tbl_attendance_calendar = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR); |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
$sql = "SELECT count(id) FROM $tbl_attendance_calendar |
|
|
|
|
WHERE |
|
|
|
|
c_id = $course_id AND |
|
|
|
|
attendance_id = '$attendance_id'"; |
|
|
|
|
attendance_id = '$attendanceId'"; |
|
|
|
|
$rs = Database::query($sql); |
|
|
|
|
$count = 0; |
|
|
|
|
if (Database::num_rows($rs) > 0) { |
|
|
|
|
@ -1587,15 +1590,15 @@ class Attendance |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* check if all calendar of an attendance is done |
|
|
|
|
* @param int $attendance_id |
|
|
|
|
* @param int $attendanceId |
|
|
|
|
* @return bool True if all calendar is done, otherwise false |
|
|
|
|
*/ |
|
|
|
|
public static function is_all_attendance_calendar_done($attendance_id) |
|
|
|
|
public static function is_all_attendance_calendar_done($attendanceId) |
|
|
|
|
{ |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$done_calendar = self::get_done_attendance_calendar($attendance_id); |
|
|
|
|
$count_dates_in_calendar = self::get_count_dates_inside_attendance_calendar($attendance_id); |
|
|
|
|
$number_of_dates = self::get_number_of_attendance_calendar($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$done_calendar = self::get_done_attendance_calendar($attendanceId); |
|
|
|
|
$count_dates_in_calendar = self::get_count_dates_inside_attendance_calendar($attendanceId); |
|
|
|
|
$number_of_dates = self::get_number_of_attendance_calendar($attendanceId); |
|
|
|
|
|
|
|
|
|
$result = false; |
|
|
|
|
if ($number_of_dates && (intval($count_dates_in_calendar) == intval($done_calendar))) { |
|
|
|
|
@ -1606,42 +1609,42 @@ class Attendance |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* check if an attendance is locked |
|
|
|
|
* @param int $attendance_id |
|
|
|
|
* @param int $attendanceId |
|
|
|
|
* @param bool |
|
|
|
|
* @return bool |
|
|
|
|
*/ |
|
|
|
|
public static function is_locked_attendance($attendance_id) |
|
|
|
|
public static function is_locked_attendance($attendanceId) |
|
|
|
|
{ |
|
|
|
|
//use gradebook lock |
|
|
|
|
$result = api_resource_is_locked_by_gradebook($attendance_id, LINK_ATTENDANCE); |
|
|
|
|
$result = api_resource_is_locked_by_gradebook($attendanceId, LINK_ATTENDANCE); |
|
|
|
|
|
|
|
|
|
return $result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Add new datetime inside attendance calendar table |
|
|
|
|
* @param int $attendance_id |
|
|
|
|
* @param array $groupList |
|
|
|
|
* @return int affected rows |
|
|
|
|
* @param int $attendanceId |
|
|
|
|
* @param array $groupList |
|
|
|
|
* @return int affected rows |
|
|
|
|
*/ |
|
|
|
|
public function attendance_calendar_add($attendance_id, $groupList = array()) |
|
|
|
|
public function attendance_calendar_add($attendanceId, $groupList = array()) |
|
|
|
|
{ |
|
|
|
|
$tbl_attendance_calendar = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR); |
|
|
|
|
$affected_rows = 0; |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
// check if datetime already exists inside the table |
|
|
|
|
/*$sql = "SELECT id FROM $tbl_attendance_calendar |
|
|
|
|
WHERE |
|
|
|
|
c_id = $course_id AND |
|
|
|
|
date_time='".Database::escape_string($this->date_time)."' AND |
|
|
|
|
attendance_id = '$attendance_id'"; |
|
|
|
|
attendance_id = '$attendanceId'"; |
|
|
|
|
$rs = Database::query($sql); |
|
|
|
|
if (Database::num_rows($rs) == 0) {*/ |
|
|
|
|
$params = array( |
|
|
|
|
'c_id' => $course_id, |
|
|
|
|
'date_time' => $this->date_time, |
|
|
|
|
'attendance_id' => $attendance_id, |
|
|
|
|
'attendance_id' => $attendanceId, |
|
|
|
|
'done_attendance' => 0 |
|
|
|
|
); |
|
|
|
|
$id = Database::insert($tbl_attendance_calendar, $params); |
|
|
|
|
@ -1655,11 +1658,11 @@ class Attendance |
|
|
|
|
//} |
|
|
|
|
|
|
|
|
|
// update locked attendance |
|
|
|
|
$is_all_calendar_done = self::is_all_attendance_calendar_done($attendance_id); |
|
|
|
|
$is_all_calendar_done = self::is_all_attendance_calendar_done($attendanceId); |
|
|
|
|
if (!$is_all_calendar_done) { |
|
|
|
|
self::lock_attendance($attendance_id, false); |
|
|
|
|
self::lock_attendance($attendanceId, false); |
|
|
|
|
} else { |
|
|
|
|
self::lock_attendance($attendance_id); |
|
|
|
|
self::lock_attendance($attendanceId); |
|
|
|
|
} |
|
|
|
|
return $affected_rows; |
|
|
|
|
} |
|
|
|
|
@ -1747,7 +1750,6 @@ class Attendance |
|
|
|
|
* @param int $calendarId |
|
|
|
|
* @param int $courseId |
|
|
|
|
* |
|
|
|
|
* @return array |
|
|
|
|
*/ |
|
|
|
|
public function deleteAttendanceCalendarGroup($calendarId, $courseId) |
|
|
|
|
{ |
|
|
|
|
@ -1762,24 +1764,24 @@ class Attendance |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* save repeated date inside attendance calendar table |
|
|
|
|
* @param int $attendance_id |
|
|
|
|
* @param int $attendanceId |
|
|
|
|
* @param int $start_date start date in tms |
|
|
|
|
* @param int $end_date end date in tms |
|
|
|
|
* @param string $repeat_type daily, weekly, monthlyByDate |
|
|
|
|
* @param array $groupList |
|
|
|
|
*/ |
|
|
|
|
public function attendance_repeat_calendar_add( |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
$start_date, |
|
|
|
|
$end_date, |
|
|
|
|
$repeat_type, |
|
|
|
|
$groupList = array() |
|
|
|
|
) { |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
// save start date |
|
|
|
|
$datetimezone = api_get_utc_datetime($start_date); |
|
|
|
|
$this->set_date_time($datetimezone); |
|
|
|
|
$this->attendance_calendar_add($attendance_id, $groupList); |
|
|
|
|
$this->attendance_calendar_add($attendanceId, $groupList); |
|
|
|
|
|
|
|
|
|
// 86400 = 24 hours in seconds |
|
|
|
|
// 604800 = 1 week in seconds |
|
|
|
|
@ -1790,7 +1792,7 @@ class Attendance |
|
|
|
|
for ($i = $start_date + 86400; ($i <= $end_date); $i += 86400) { |
|
|
|
|
$datetimezone = api_get_utc_datetime($i); |
|
|
|
|
$this->set_date_time($datetimezone); |
|
|
|
|
$this->attendance_calendar_add($attendance_id, $groupList); |
|
|
|
|
$this->attendance_calendar_add($attendanceId, $groupList); |
|
|
|
|
$j++; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
@ -1799,7 +1801,7 @@ class Attendance |
|
|
|
|
for ($i = $start_date + 604800; ($i <= $end_date); $i += 604800) { |
|
|
|
|
$datetimezone = api_get_utc_datetime($i); |
|
|
|
|
$this->set_date_time($datetimezone); |
|
|
|
|
$this->attendance_calendar_add($attendance_id, $groupList); |
|
|
|
|
$this->attendance_calendar_add($attendanceId, $groupList); |
|
|
|
|
$j++; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
@ -1809,7 +1811,7 @@ class Attendance |
|
|
|
|
for ($i = $start_date + 2419200; ($i <= $end_date); $i += 2419200) { |
|
|
|
|
$datetimezone = api_get_utc_datetime($i); |
|
|
|
|
$this->set_date_time($datetimezone); |
|
|
|
|
$this->attendance_calendar_add($attendance_id, $groupList); |
|
|
|
|
$this->attendance_calendar_add($attendanceId, $groupList); |
|
|
|
|
$j++; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
@ -1822,18 +1824,18 @@ class Attendance |
|
|
|
|
* @param int attendance id |
|
|
|
|
* @return int affected rows |
|
|
|
|
*/ |
|
|
|
|
public function attendance_calendar_edit($calendar_id, $attendance_id) |
|
|
|
|
public function attendance_calendar_edit($calendar_id, $attendanceId) |
|
|
|
|
{ |
|
|
|
|
$tbl_attendance_calendar = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR); |
|
|
|
|
$affected_rows = 0; |
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
// check if datetime already exists inside the table |
|
|
|
|
$sql = "SELECT id FROM $tbl_attendance_calendar |
|
|
|
|
WHERE |
|
|
|
|
c_id = $course_id AND |
|
|
|
|
date_time = '".Database::escape_string($this->date_time)."' AND |
|
|
|
|
attendance_id = '$attendance_id'"; |
|
|
|
|
attendance_id = '$attendanceId'"; |
|
|
|
|
$rs = Database::query($sql); |
|
|
|
|
|
|
|
|
|
if (Database::num_rows($rs) == 0) { |
|
|
|
|
@ -1844,11 +1846,11 @@ class Attendance |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// update locked attendance |
|
|
|
|
$is_all_calendar_done = self::is_all_attendance_calendar_done($attendance_id); |
|
|
|
|
$is_all_calendar_done = self::is_all_attendance_calendar_done($attendanceId); |
|
|
|
|
if (!$is_all_calendar_done) { |
|
|
|
|
self::lock_attendance($attendance_id, false); |
|
|
|
|
self::lock_attendance($attendanceId, false); |
|
|
|
|
} else { |
|
|
|
|
self::lock_attendance($attendance_id); |
|
|
|
|
self::lock_attendance($attendanceId); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $affected_rows; |
|
|
|
|
@ -1863,20 +1865,20 @@ class Attendance |
|
|
|
|
*/ |
|
|
|
|
public function attendance_calendar_delete( |
|
|
|
|
$calendar_id, |
|
|
|
|
$attendance_id, |
|
|
|
|
$attendanceId, |
|
|
|
|
$all_delete = false |
|
|
|
|
) { |
|
|
|
|
$tbl_attendance_calendar = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR); |
|
|
|
|
$tbl_attendance_sheet = Database::get_course_table(TABLE_ATTENDANCE_SHEET); |
|
|
|
|
|
|
|
|
|
$attendance_id = intval($attendance_id); |
|
|
|
|
$attendanceId = intval($attendanceId); |
|
|
|
|
// get all registered users inside current course |
|
|
|
|
$users = $this->get_users_rel_course(); |
|
|
|
|
$user_ids = array_keys($users); |
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
$affected_rows = 0; |
|
|
|
|
if ($all_delete) { |
|
|
|
|
$attendance_calendar = $this->get_attendance_calendar($attendance_id); |
|
|
|
|
$attendance_calendar = $this->get_attendance_calendar($attendanceId); |
|
|
|
|
// get all dates from calendar by current attendance |
|
|
|
|
if (!empty($attendance_calendar)) { |
|
|
|
|
foreach ($attendance_calendar as $cal) { |
|
|
|
|
@ -1908,7 +1910,7 @@ class Attendance |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// update users' results |
|
|
|
|
$this->updateUsersResults($user_ids, $attendance_id); |
|
|
|
|
$this->updateUsersResults($user_ids, $attendanceId); |
|
|
|
|
|
|
|
|
|
return $affected_rows; |
|
|
|
|
} |
|
|
|
|
|