Skip to content

Commit 006982e

Browse files
authored
Filter report by the user groups (#125)
1 parent ef9719e commit 006982e

File tree

3 files changed

+29
-2
lines changed

3 files changed

+29
-2
lines changed

classes/lib/utils.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ public static function timespent($courseid, $userid, $rawformat=false) {
300300
* @param bool $filter
301301
* @return array
302302
*/
303-
public static function get_average($courseid, $duration = null, bool $filter = false) {
303+
public static function get_average($courseid, $duration = null, bool $filter = false, array $groups = []) {
304304
global $DB, $CFG, $SESSION;
305305

306306
$params = ['courseid' => $courseid];
@@ -333,9 +333,25 @@ public static function get_average($courseid, $duration = null, bool $filter = f
333333
$sqltotal = "SELECT SUM(timespent)
334334
FROM {block_dedication}
335335
WHERE courseid = :courseid" . $sqlextra;
336+
336337
$sqlusers = "SELECT count(DISTINCT userid)
337338
FROM {block_dedication}
338339
WHERE courseid = :courseid" . $sqlextra;
340+
341+
if (!empty($groups)) {
342+
343+
[$sqlgroups, $paramsmembers] = $DB->get_in_or_equal($groups, SQL_PARAMS_NAMED);
344+
$sqlmembers = "SELECT id, userid from {groups_members} WHERE groupid {$sqlgroups}";
345+
$userids = $DB->get_records_sql_menu($sqlmembers, $paramsmembers);
346+
$userids = array_values($userids);
347+
348+
[$sqlmembers, $paramsmembers] = $DB->get_in_or_equal($userids, SQL_PARAMS_NAMED);
349+
$sqltotal .= " AND userid {$sqlmembers}";
350+
$sqlusers .= " AND userid {$sqlmembers}";
351+
352+
$params = array_merge($params, $paramsmembers);
353+
}
354+
339355
$totaldedication = $DB->get_field_sql($sqltotal, $params);
340356
$totalusers = $DB->get_field_sql($sqlusers, $params);
341357
}

index.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,22 @@
4747
$PAGE->set_title("$course->fullname: ".get_string('sessionduration', 'block_dedication'));
4848
$PAGE->set_heading($course->fullname);
4949

50+
// Fetch the current groupid.
51+
$groups = groups_get_user_groups($courseid);
52+
$groups = array_pop($groups);
53+
5054
echo $OUTPUT->header();
51-
$average = \block_dedication\lib\utils::get_average($course->id);
55+
$average = \block_dedication\lib\utils::get_average($course->id, null, false, $groups);
5256

5357
echo $OUTPUT->heading(get_string('timespentincourse', 'block_dedication'));
5458
echo html_writer::div(get_string('totaltimespent', 'block_dedication', $average['total']));
5559
echo html_writer::div(get_string('averagetimespent', 'block_dedication', $average['average']));
60+
if (!empty($groups)) {
61+
[$groupssql, $groupsparams] = $DB->get_in_or_equal($groups);
62+
$groupsnamessql = "SELECT CONCAT(name) FROM {groups} WHERE id {$groupssql}";
63+
$groupsnames = $DB->get_field_sql($groupsnamessql, $groupsparams);
64+
echo html_writer::div(get_string('groups', 'block_dedication', $groupsnames));
65+
}
5666

5767
$config = get_config('block_dedication');
5868

lang/en/block_dedication.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
$string['perioddiff'] = '<strong>Elapsed time:</strong> {$a}';
7878
$string['totaltimespent'] = '<strong>Total of all time spent in course:</strong> {$a}';
7979
$string['averagetimespent'] = '<strong>Average time spent in course:</strong> {$a}';
80+
$string['groups'] = '<strong>Group(s):</strong> {$a}';
8081
$string['sessionstart'] = 'Session start';
8182
$string['userdedication'] = 'Detailed course dedication of <em>{$a}</em>.';
8283
$string['timespentincourse'] = 'Time spent in course';

0 commit comments

Comments
 (0)