@@ -300,7 +300,7 @@ public static function timespent($courseid, $userid, $rawformat=false) {
300
300
* @param bool $filter
301
301
* @return array
302
302
*/
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 = [] ) {
304
304
global $ DB , $ CFG , $ SESSION ;
305
305
306
306
$ params = ['courseid ' => $ courseid ];
@@ -333,9 +333,25 @@ public static function get_average($courseid, $duration = null, bool $filter = f
333
333
$ sqltotal = "SELECT SUM(timespent)
334
334
FROM {block_dedication}
335
335
WHERE courseid = :courseid " . $ sqlextra ;
336
+
336
337
$ sqlusers = "SELECT count(DISTINCT userid)
337
338
FROM {block_dedication}
338
339
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
+
339
355
$ totaldedication = $ DB ->get_field_sql ($ sqltotal , $ params );
340
356
$ totalusers = $ DB ->get_field_sql ($ sqlusers , $ params );
341
357
}
0 commit comments