Fix group count see BT#9428

1.10.x
Julio Montoya 10 years ago
parent 635280ea3d
commit aadab8c462
  1. 36
      main/inc/lib/attendance.lib.php

@ -651,7 +651,7 @@ class Attendance
}
if (!empty($attendance_id)) {
$user_faults = $this->get_faults_of_user($uid, $attendance_id);
$user_faults = $this->get_faults_of_user($uid, $attendance_id, $groupId);
$value['attendance_result'] = $user_faults['faults'].'/'.$user_faults['total'].' ('.$user_faults['faults_porcent'].'%)';
$value['result_color_bar'] = $user_faults['color_bar'];
}
@ -935,19 +935,20 @@ class Attendance
/**
* Get results of faults (absents) by user
* @param int user id
* @param int attendance id
* @param int $user_id
* @param int $attendance_id
* @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)
public function get_faults_of_user($user_id, $attendance_id, $groupId = null)
{
// initializing database table and variables
$user_id = intval($user_id);
$attendance_id = intval($attendance_id);
$results = array();
$attendance_data = $this->get_attendance_by_id($attendance_id);
$calendar_count = self::get_number_of_attendance_calendar($attendance_id);
$calendar_count = self::get_number_of_attendance_calendar($attendance_id, $groupId);
$total_done_attendance = $attendance_data['attendance_qualify_max'];
$attendance_user_score = $this->get_user_score($user_id, $attendance_id);
@ -1323,15 +1324,32 @@ class Attendance
/**
* Get number of attendance calendar inside current attendance
* @param int $attendance_id
* @return int number of dates in attendance calendar
* @param int $groupId
* @return int number of dates in attendance calendar
*/
public static function get_number_of_attendance_calendar($attendance_id)
public static function get_number_of_attendance_calendar($attendance_id, $groupId = 0)
{
$tbl_attendance_calendar = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR);
$calendarRelGroup = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR_REL_GROUP);
$attendance_id = intval($attendance_id);
$groupId = intval($groupId);
$groupCondition = " group_id = $groupId ";
if (empty($groupId)) {
$groupCondition = "group_id IS NULL OR group_id = 0 ";
}
$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'";
$sql = "SELECT count(a.id)
FROM $tbl_attendance_calendar a
INNER JOIN $calendarRelGroup g
ON (a.id = g.calendar_id AND a.c_id = g.c_id)
WHERE
a.c_id = $course_id AND
attendance_id = '$attendance_id' AND
$groupCondition
";
$rs = Database::query($sql);
$row = Database::fetch_row($rs);
$count = $row[0];

Loading…
Cancel
Save