Merge branch 'MDL-59831_master' of git://github.com/markn86/moodle
authorDavid Monllao <davidm@moodle.com>
Tue, 12 Sep 2017 06:07:52 +0000 (08:07 +0200)
committerDavid Monllao <davidm@moodle.com>
Tue, 12 Sep 2017 06:07:52 +0000 (08:07 +0200)
1  2 
user/index.php

diff --combined user/index.php
@@@ -74,10 -74,16 +74,10 @@@ $frontpagectx = context_course::instanc
  
  if ($isfrontpage) {
      $PAGE->set_pagelayout('admin');
 -    if (!has_any_capability(['moodle/site:viewparticipants', 'moodle/course:enrolreview'], $systemcontext)) {
 -        // We know they do not have any of the capabilities, so lets throw an exception using the capability with the least access.
 -        throw new required_capability_exception($systemcontext, 'moodle/site:viewparticipants', 'nopermissions', '');
 -    }
 +    course_require_view_participants($systemcontext);
  } else {
      $PAGE->set_pagelayout('incourse');
 -    if (!has_any_capability(['moodle/course:viewparticipants', 'moodle/course:enrolreview'], $context)) {
 -        // We know they do not have any of the capabilities, so lets throw an exception using the capability with the least access.
 -        throw new required_capability_exception($context, 'moodle/course:viewparticipants', 'nopermissions', '');
 -    }
 +    course_require_view_participants($context);
  }
  
  // Trigger events.
@@@ -103,6 -109,7 +103,7 @@@ echo $OUTPUT->heading(get_string('parti
  
  // Get the currently applied filters.
  $filtersapplied = optional_param_array('unified-filters', [], PARAM_TEXT);
+ $filterwassubmitted = optional_param('unified-filter-submitted', 0, PARAM_BOOL);
  
  // Default group ID.
  $groupid = false;
@@@ -168,9 -175,19 +169,19 @@@ foreach ($filtersapplied as $filter) 
      }
  }
  
- // If course supports groups, but the user can't access all groups and there's no group filter set, apply a default group filter.
- if ($groupid !== false && !$canaccessallgroups && !$hasgroupfilter) {
-     $filtersapplied[] = USER_FILTER_GROUP . ':' . $groupid;
+ // If course supports groups we may need to set a default.
+ if ($groupid !== false) {
+     // If we are in a course with visible groups and the user has not submitted anything and does not have
+     // access to all groups, then set a default group. This is the same behaviour in 3.3.
+     if (!$canaccessallgroups && !$filterwassubmitted && $course->groupmode == VISIBLEGROUPS) {
+         $filtersapplied[] = USER_FILTER_GROUP . ':' . $groupid;
+     } else if (!$canaccessallgroups && !$hasgroupfilter && $course->groupmode != VISIBLEGROUPS) {
+         // The user can't access all groups and has not set a group filter in a course where the groups are not visible
+         // then apply a default group filter.
+         $filtersapplied[] = USER_FILTER_GROUP . ':' . $groupid;
+     } else if (!$hasgroupfilter) { // No need for the group id to be set.
+         $groupid = false;
+     }
  }
  
  // Manage enrolments.