From a35630573d25a98939aee6fad2a388f440e80c3d Mon Sep 17 00:00:00 2001
From: Adrian Greeve <adrian@moodle.com>
Date: Wed, 2 Nov 2016 13:56:16 +0800
Subject: [PATCH] MDL-56363 mod_assign: Restrictions added for tutors.

If the grader does not have the accessallgroups capability,
or groups mode is set to separate groups and the user is not
a member of the group then no participants are shown.
---
 mod/assign/amd/build/participant_selector.min.js | Bin 1087 -> 1115 bytes
 mod/assign/amd/src/participant_selector.js       |   3 ++-
 mod/assign/externallib.php                       |   5 ++++-
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/mod/assign/amd/build/participant_selector.min.js b/mod/assign/amd/build/participant_selector.min.js
index 23a7ce58b27a4bc305808bb3957beb18b82fc712..c5b045258ff07a60d6b012d420ec99b4668b2a21 100644
GIT binary patch
delta 104
zcmdnbahqepAITI=y~L7|A`PXK#F9ka^rHOIg3J^pO`WWXKkcQnZKGqYv-DCElQT5Z
zO7oISGV}8^5_OU_tFtEuGwL(uOm1fMWz3v>kx>W8{>RwGm_50ZNdri3V$x#F-h7uS
Gi4g$1KqP7a

delta 79
zcmcc3v7ckYpUD!8Hqu$P(XrN<dZ~%Y85(J&dC4W2`FR?NI?0;VS(Eb_^%=7#&u8>y
hG?@IBQ3uGDV(Mbdn!J=r14y1@(qhco{F5n(5dcmW8j=72

diff --git a/mod/assign/amd/src/participant_selector.js b/mod/assign/amd/src/participant_selector.js
index f92f4fb82d..f03466cccf 100644
--- a/mod/assign/amd/src/participant_selector.js
+++ b/mod/assign/amd/src/participant_selector.js
@@ -54,6 +54,7 @@ define(['core/ajax', 'jquery', 'core/templates'], function(ajax, $, templates) {
          */
         transport: function(selector, query, success, failure) {
             var assignmentid = $(selector).attr('data-assignmentid');
+            var groupid = $(selector).attr('data-groupid');
             var filters = $('[data-region="configure-filters"] input[type="checkbox"]');
             var filterstrings = [];
 
@@ -63,7 +64,7 @@ define(['core/ajax', 'jquery', 'core/templates'], function(ajax, $, templates) {
 
             var promise = ajax.call([{
                 methodname: 'mod_assign_list_participants',
-                args: {assignid: assignmentid, groupid: 0, filter: query, limit: 30, includeenrolments: false}
+                args: {assignid: assignmentid, groupid: groupid, filter: query, limit: 30, includeenrolments: false}
             }]);
 
             promise[0].then(function(results) {
diff --git a/mod/assign/externallib.php b/mod/assign/externallib.php
index b190040756..b59bb509ba 100644
--- a/mod/assign/externallib.php
+++ b/mod/assign/externallib.php
@@ -2565,7 +2565,10 @@ class mod_assign_external extends external_api {
 
         $assign->require_view_grades();
 
-        $participants = $assign->list_participants_with_filter_status_and_group($params['groupid']);
+        $participants = array();
+        if (groups_group_visible($params['groupid'], $course, $cm)) {
+            $participants = $assign->list_participants_with_filter_status_and_group($params['groupid']);
+        }
 
         $userfields = user_get_default_fields();
         if (!$params['includeenrolments']) {
-- 
1.9.1

