Skip to content

Commit 3001ea7

Browse files
committed
Tracking: Fix quarterly report - Round down time spent to 6 hours to avoid excess deviation
1 parent ca4adf2 commit 3001ea7

2 files changed

Lines changed: 29 additions & 10 deletions

File tree

public/main/inc/ajax/statistics.ajax.php

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1064,6 +1064,9 @@
10641064
case 'report_quarterly_hours_of_training':
10651065
// Close the session as we don't need it any further
10661066
session_write_close();
1067+
// The maximum time spent, in number of hours, to be considered.
1068+
// Anything above that is considered a time registration error.
1069+
$maxTimeSpent = 6;
10671070
$currentQuarterDates = getQuarterDates();
10681071
$pre1QuarterDates = getQuarterDates(
10691072
date_create($currentQuarterDates['quarter_start'])
@@ -1104,27 +1107,33 @@
11041107
// Get data for the row
11051108
$timeSpentCoursesCurrentQuarter = Tracking::getTotalTimeSpentInCourses(
11061109
$currentQuarterDates['quarter_start'],
1107-
$currentQuarterDates['quarter_end']
1110+
$currentQuarterDates['quarter_end'],
1111+
$maxTimeSpent
11081112
);
11091113
$timeSpentCourses1PreQuarter = Tracking::getTotalTimeSpentInCourses(
11101114
$pre1QuarterDates['quarter_start'],
1111-
$pre1QuarterDates['quarter_end']
1115+
$pre1QuarterDates['quarter_end'],
1116+
$maxTimeSpent
11121117
);
11131118
$timeSpentCourses2PreQuarter = Tracking::getTotalTimeSpentInCourses(
11141119
$pre2QuarterDates['quarter_start'],
1115-
$pre2QuarterDates['quarter_end']
1120+
$pre2QuarterDates['quarter_end'],
1121+
$maxTimeSpent
11161122
);
11171123
$timeSpentCourses3PreQuarter = Tracking::getTotalTimeSpentInCourses(
11181124
$pre3QuarterDates['quarter_start'],
1119-
$pre3QuarterDates['quarter_end']
1125+
$pre3QuarterDates['quarter_end'],
1126+
$maxTimeSpent
11201127
);
11211128
$timeSpentCourses4PreQuarter = Tracking::getTotalTimeSpentInCourses(
11221129
$pre4QuarterDates['quarter_start'],
1123-
$pre4QuarterDates['quarter_end']
1130+
$pre4QuarterDates['quarter_end'],
1131+
$maxTimeSpent
11241132
);
11251133
$timeSpentCourses5PreQuarter = Tracking::getTotalTimeSpentInCourses(
11261134
$pre5QuarterDates['quarter_start'],
1127-
$pre5QuarterDates['quarter_end']
1135+
$pre5QuarterDates['quarter_end'],
1136+
$maxTimeSpent
11281137
);
11291138
// Calculate percent for the row
11301139
$percentIncrementTimeSpent = api_calculate_increment_percent(

public/main/inc/lib/tracking.lib.php

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8222,7 +8222,8 @@ public static function getCourseQuizLastFinalizationDate(
82228222
*/
82238223
public static function getTotalTimeSpentInCourses(
82248224
string $dateFrom = '',
8225-
string $dateUntil = ''
8225+
string $dateUntil = '',
8226+
?int $maxTimeSpent = 6
82268227
): int {
82278228
$tableTrackLogin = Database::get_main_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS);
82288229
$tableUrlRelUser = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
@@ -8240,12 +8241,21 @@ public static function getTotalTimeSpentInCourses(
82408241
$dateUntil = Database::escape_string($dateUntil);
82418242
$conditionTime = " (login_course_date >= '$dateFrom' AND logout_course_date <= '$dateUntil' ) ";
82428243
}
8243-
$sql = "SELECT SUM(TIMESTAMPDIFF(HOUR, login_course_date, logout_course_date)) diff
8244+
$sql = "SELECT TIMESTAMPDIFF(HOUR, login_course_date, logout_course_date) diff
82448245
FROM $tableTrackLogin u $tableUrl
82458246
WHERE $conditionTime $urlCondition";
82468247
$rs = Database::query($sql);
8247-
$row = Database::fetch_array($rs, 'ASSOC');
8248-
$diff = $row['diff'];
8248+
$diff = 0;
8249+
if (!empty($rs)) {
8250+
while ($row = Database::fetch_array($rs)) {
8251+
// Anything above $maxTimeSpent is rounded down to $maxTimeSpent hours
8252+
if ($row['diff'] <= $maxTimeSpent) {
8253+
$diff += $row['diff'];
8254+
} else {
8255+
$diff += $maxTimeSpent;
8256+
}
8257+
}
8258+
}
82498259
if ($diff >= 0 and !empty($diff)) {
82508260
return $diff;
82518261
}

0 commit comments

Comments
 (0)