diff --git a/course/amd/build/repository.min.js b/course/amd/build/repository.min.js index 2e4849bbfd8..8d7c2a2ecec 100644 --- a/course/amd/build/repository.min.js +++ b/course/amd/build/repository.min.js @@ -1,2 +1,2 @@ -define ("core_course/repository",["jquery","core/ajax"],function(a,b){return{getEnrolledCoursesByTimelineClassification:function getEnrolledCoursesByTimelineClassification(a,c,d,e){var f={classification:a};if("undefined"!=typeof c){f.limit=c}if("undefined"!=typeof d){f.offset=d}if("undefined"!=typeof e){f.sort=e}return b.call([{methodname:"core_course_get_enrolled_courses_by_timeline_classification",args:f}])[0]},getLastAccessedCourses:function getLastAccessedCourses(a,c,d,e){var f={};if("undefined"!=typeof a){f.userid=a}if("undefined"!=typeof c){f.limit=c}if("undefined"!=typeof d){f.offset=d}if("undefined"!=typeof e){f.sort=e}return b.call([{methodname:"core_course_get_recent_courses",args:f}])[0]},getUsersFromCourseModuleID:function getEnrolledUsersFromCourseModuleID(a){return b.call([{methodname:"core_course_get_enrolled_users_by_cmid",args:{cmid:a}}])[0]}}}); +define ("core_course/repository",["jquery","core/ajax"],function(a,b){return{getEnrolledCoursesByTimelineClassification:function getEnrolledCoursesByTimelineClassification(a,c,d,e){var f={classification:a};if("undefined"!=typeof c){f.limit=c}if("undefined"!=typeof d){f.offset=d}if("undefined"!=typeof e){f.sort=e}return b.call([{methodname:"core_course_get_enrolled_courses_by_timeline_classification",args:f}])[0]},getLastAccessedCourses:function getLastAccessedCourses(a,c,d,e){var f={};if("undefined"!=typeof a){f.userid=a}if("undefined"!=typeof c){f.limit=c}if("undefined"!=typeof d){f.offset=d}if("undefined"!=typeof e){f.sort=e}return b.call([{methodname:"core_course_get_recent_courses",args:f}])[0]},getUsersFromCourseModuleID:function getEnrolledUsersFromCourseModuleID(a,c){return b.call([{methodname:"core_course_get_enrolled_users_by_cmid",args:{cmid:a,groupid:c}}])[0]}}}); //# sourceMappingURL=repository.min.js.map diff --git a/course/amd/build/repository.min.js.map b/course/amd/build/repository.min.js.map index 1e49dc2d9b0..c6b8c7c7352 100644 --- a/course/amd/build/repository.min.js.map +++ b/course/amd/build/repository.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/repository.js"],"names":["define","$","Ajax","getEnrolledCoursesByTimelineClassification","classification","limit","offset","sort","args","call","methodname","getLastAccessedCourses","userid","getUsersFromCourseModuleID","getEnrolledUsersFromCourseModuleID","cmid"],"mappings":"AAsBAA,OAAM,0BAAC,CAAC,QAAD,CAAW,WAAX,CAAD,CAA0B,SAASC,CAAT,CAAYC,CAAZ,CAAkB,CA2F9C,MAAO,CACHC,0CAA0C,CAhFG,QAA7CA,CAAAA,0CAA6C,CAASC,CAAT,CAAyBC,CAAzB,CAAgCC,CAAhC,CAAwCC,CAAxC,CAA8C,CAC3F,GAAIC,CAAAA,CAAI,CAAG,CACPJ,cAAc,CAAEA,CADT,CAAX,CAIA,GAAqB,WAAjB,QAAOC,CAAAA,CAAX,CAAkC,CAC9BG,CAAI,CAACH,KAAL,CAAaA,CAChB,CAED,GAAsB,WAAlB,QAAOC,CAAAA,CAAX,CAAmC,CAC/BE,CAAI,CAACF,MAAL,CAAcA,CACjB,CAED,GAAoB,WAAhB,QAAOC,CAAAA,CAAX,CAAiC,CAC7BC,CAAI,CAACD,IAAL,CAAYA,CACf,CAOD,MAAOL,CAAAA,CAAI,CAACO,IAAL,CAAU,CALH,CACVC,UAAU,CAAE,6DADF,CAEVF,IAAI,CAAEA,CAFI,CAKG,CAAV,EAAqB,CAArB,CACV,CAwDM,CAEHG,sBAAsB,CA9CG,QAAzBA,CAAAA,sBAAyB,CAASC,CAAT,CAAiBP,CAAjB,CAAwBC,CAAxB,CAAgCC,CAAhC,CAAsC,CAC/D,GAAIC,CAAAA,CAAI,CAAG,EAAX,CAEA,GAAsB,WAAlB,QAAOI,CAAAA,CAAX,CAAmC,CAC/BJ,CAAI,CAACI,MAAL,CAAcA,CACjB,CAED,GAAqB,WAAjB,QAAOP,CAAAA,CAAX,CAAkC,CAC9BG,CAAI,CAACH,KAAL,CAAaA,CAChB,CAED,GAAsB,WAAlB,QAAOC,CAAAA,CAAX,CAAmC,CAC/BE,CAAI,CAACF,MAAL,CAAcA,CACjB,CAED,GAAoB,WAAhB,QAAOC,CAAAA,CAAX,CAAiC,CAC7BC,CAAI,CAACD,IAAL,CAAYA,CACf,CAOD,MAAOL,CAAAA,CAAI,CAACO,IAAL,CAAU,CALH,CACVC,UAAU,CAAE,gCADF,CAEVF,IAAI,CAAEA,CAFI,CAKG,CAAV,EAAqB,CAArB,CACV,CAmBM,CAGHK,0BAA0B,CAdW,QAArCC,CAAAA,kCAAqC,CAASC,CAAT,CAAe,CAQpD,MAAOb,CAAAA,CAAI,CAACO,IAAL,CAAU,CAPH,CACVC,UAAU,CAAE,wCADF,CAEVF,IAAI,CAAE,CACFO,IAAI,CAAEA,CADJ,CAFI,CAOG,CAAV,EAAqB,CAArB,CACV,CAEM,CAKV,CAhGK,CAAN","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see .\n\n/**\n * A javascript module to handle course ajax actions.\n *\n * @module core_course/repository\n * @copyright 2018 Ryan Wyllie \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(['jquery', 'core/ajax'], function($, Ajax) {\n\n /**\n * Get the list of courses that the logged in user is enrolled in for a given\n * timeline classification.\n *\n * @param {string} classification past, inprogress, or future\n * @param {int} limit Only return this many results\n * @param {int} offset Skip this many results from the start of the result set\n * @param {string} sort Column to sort by and direction, e.g. 'shortname asc'\n * @return {object} jQuery promise resolved with courses.\n */\n var getEnrolledCoursesByTimelineClassification = function(classification, limit, offset, sort) {\n var args = {\n classification: classification\n };\n\n if (typeof limit !== 'undefined') {\n args.limit = limit;\n }\n\n if (typeof offset !== 'undefined') {\n args.offset = offset;\n }\n\n if (typeof sort !== 'undefined') {\n args.sort = sort;\n }\n\n var request = {\n methodname: 'core_course_get_enrolled_courses_by_timeline_classification',\n args: args\n };\n\n return Ajax.call([request])[0];\n };\n\n /**\n * Get the list of courses that the user has most recently accessed.\n *\n * @method getLastAccessedCourses\n * @param {int} userid User from which the courses will be obtained\n * @param {int} limit Only return this many results\n * @param {int} offset Skip this many results from the start of the result set\n * @param {string} sort Column to sort by and direction, e.g. 'shortname asc'\n * @return {promise} Resolved with an array of courses\n */\n var getLastAccessedCourses = function(userid, limit, offset, sort) {\n var args = {};\n\n if (typeof userid !== 'undefined') {\n args.userid = userid;\n }\n\n if (typeof limit !== 'undefined') {\n args.limit = limit;\n }\n\n if (typeof offset !== 'undefined') {\n args.offset = offset;\n }\n\n if (typeof sort !== 'undefined') {\n args.sort = sort;\n }\n\n var request = {\n methodname: 'core_course_get_recent_courses',\n args: args\n };\n\n return Ajax.call([request])[0];\n };\n\n /**\n * Get the list of users enrolled in this cmid.\n *\n * @param {Number} cmid Course Module from which the users will be obtained\n * @returns {Promise} Promise containing a list of users\n */\n var getEnrolledUsersFromCourseModuleID = function(cmid) {\n var request = {\n methodname: 'core_course_get_enrolled_users_by_cmid',\n args: {\n cmid: cmid,\n },\n };\n\n return Ajax.call([request])[0];\n };\n\n return {\n getEnrolledCoursesByTimelineClassification: getEnrolledCoursesByTimelineClassification,\n getLastAccessedCourses: getLastAccessedCourses,\n getUsersFromCourseModuleID: getEnrolledUsersFromCourseModuleID,\n };\n});\n"],"file":"repository.min.js"} \ No newline at end of file +{"version":3,"sources":["../src/repository.js"],"names":["define","$","Ajax","getEnrolledCoursesByTimelineClassification","classification","limit","offset","sort","args","call","methodname","getLastAccessedCourses","userid","getUsersFromCourseModuleID","getEnrolledUsersFromCourseModuleID","cmid","groupID","groupid"],"mappings":"AAsBAA,OAAM,0BAAC,CAAC,QAAD,CAAW,WAAX,CAAD,CAA0B,SAASC,CAAT,CAAYC,CAAZ,CAAkB,CA6F9C,MAAO,CACHC,0CAA0C,CAlFG,QAA7CA,CAAAA,0CAA6C,CAASC,CAAT,CAAyBC,CAAzB,CAAgCC,CAAhC,CAAwCC,CAAxC,CAA8C,CAC3F,GAAIC,CAAAA,CAAI,CAAG,CACPJ,cAAc,CAAEA,CADT,CAAX,CAIA,GAAqB,WAAjB,QAAOC,CAAAA,CAAX,CAAkC,CAC9BG,CAAI,CAACH,KAAL,CAAaA,CAChB,CAED,GAAsB,WAAlB,QAAOC,CAAAA,CAAX,CAAmC,CAC/BE,CAAI,CAACF,MAAL,CAAcA,CACjB,CAED,GAAoB,WAAhB,QAAOC,CAAAA,CAAX,CAAiC,CAC7BC,CAAI,CAACD,IAAL,CAAYA,CACf,CAOD,MAAOL,CAAAA,CAAI,CAACO,IAAL,CAAU,CALH,CACVC,UAAU,CAAE,6DADF,CAEVF,IAAI,CAAEA,CAFI,CAKG,CAAV,EAAqB,CAArB,CACV,CA0DM,CAEHG,sBAAsB,CAhDG,QAAzBA,CAAAA,sBAAyB,CAASC,CAAT,CAAiBP,CAAjB,CAAwBC,CAAxB,CAAgCC,CAAhC,CAAsC,CAC/D,GAAIC,CAAAA,CAAI,CAAG,EAAX,CAEA,GAAsB,WAAlB,QAAOI,CAAAA,CAAX,CAAmC,CAC/BJ,CAAI,CAACI,MAAL,CAAcA,CACjB,CAED,GAAqB,WAAjB,QAAOP,CAAAA,CAAX,CAAkC,CAC9BG,CAAI,CAACH,KAAL,CAAaA,CAChB,CAED,GAAsB,WAAlB,QAAOC,CAAAA,CAAX,CAAmC,CAC/BE,CAAI,CAACF,MAAL,CAAcA,CACjB,CAED,GAAoB,WAAhB,QAAOC,CAAAA,CAAX,CAAiC,CAC7BC,CAAI,CAACD,IAAL,CAAYA,CACf,CAOD,MAAOL,CAAAA,CAAI,CAACO,IAAL,CAAU,CALH,CACVC,UAAU,CAAE,gCADF,CAEVF,IAAI,CAAEA,CAFI,CAKG,CAAV,EAAqB,CAArB,CACV,CAqBM,CAGHK,0BAA0B,CAfW,QAArCC,CAAAA,kCAAqC,CAASC,CAAT,CAAeC,CAAf,CAAwB,CAS7D,MAAOd,CAAAA,CAAI,CAACO,IAAL,CAAU,CARH,CACVC,UAAU,CAAE,wCADF,CAEVF,IAAI,CAAE,CACFO,IAAI,CAAEA,CADJ,CAEFE,OAAO,CAAED,CAFP,CAFI,CAQG,CAAV,EAAqB,CAArB,CACV,CAEM,CAKV,CAlGK,CAAN","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see .\n\n/**\n * A javascript module to handle course ajax actions.\n *\n * @module core_course/repository\n * @copyright 2018 Ryan Wyllie \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(['jquery', 'core/ajax'], function($, Ajax) {\n\n /**\n * Get the list of courses that the logged in user is enrolled in for a given\n * timeline classification.\n *\n * @param {string} classification past, inprogress, or future\n * @param {int} limit Only return this many results\n * @param {int} offset Skip this many results from the start of the result set\n * @param {string} sort Column to sort by and direction, e.g. 'shortname asc'\n * @return {object} jQuery promise resolved with courses.\n */\n var getEnrolledCoursesByTimelineClassification = function(classification, limit, offset, sort) {\n var args = {\n classification: classification\n };\n\n if (typeof limit !== 'undefined') {\n args.limit = limit;\n }\n\n if (typeof offset !== 'undefined') {\n args.offset = offset;\n }\n\n if (typeof sort !== 'undefined') {\n args.sort = sort;\n }\n\n var request = {\n methodname: 'core_course_get_enrolled_courses_by_timeline_classification',\n args: args\n };\n\n return Ajax.call([request])[0];\n };\n\n /**\n * Get the list of courses that the user has most recently accessed.\n *\n * @method getLastAccessedCourses\n * @param {int} userid User from which the courses will be obtained\n * @param {int} limit Only return this many results\n * @param {int} offset Skip this many results from the start of the result set\n * @param {string} sort Column to sort by and direction, e.g. 'shortname asc'\n * @return {promise} Resolved with an array of courses\n */\n var getLastAccessedCourses = function(userid, limit, offset, sort) {\n var args = {};\n\n if (typeof userid !== 'undefined') {\n args.userid = userid;\n }\n\n if (typeof limit !== 'undefined') {\n args.limit = limit;\n }\n\n if (typeof offset !== 'undefined') {\n args.offset = offset;\n }\n\n if (typeof sort !== 'undefined') {\n args.sort = sort;\n }\n\n var request = {\n methodname: 'core_course_get_recent_courses',\n args: args\n };\n\n return Ajax.call([request])[0];\n };\n\n /**\n * Get the list of users enrolled in this cmid.\n *\n * @param {Number} cmid Course Module from which the users will be obtained\n * @param {Number} groupID Group ID from which the users will be obtained\n * @returns {Promise} Promise containing a list of users\n */\n var getEnrolledUsersFromCourseModuleID = function(cmid, groupID) {\n var request = {\n methodname: 'core_course_get_enrolled_users_by_cmid',\n args: {\n cmid: cmid,\n groupid: groupID,\n },\n };\n\n return Ajax.call([request])[0];\n };\n\n return {\n getEnrolledCoursesByTimelineClassification: getEnrolledCoursesByTimelineClassification,\n getLastAccessedCourses: getLastAccessedCourses,\n getUsersFromCourseModuleID: getEnrolledUsersFromCourseModuleID,\n };\n});\n"],"file":"repository.min.js"} \ No newline at end of file diff --git a/course/amd/src/repository.js b/course/amd/src/repository.js index 7e530a72543..956f30979f5 100644 --- a/course/amd/src/repository.js +++ b/course/amd/src/repository.js @@ -98,13 +98,15 @@ define(['jquery', 'core/ajax'], function($, Ajax) { * Get the list of users enrolled in this cmid. * * @param {Number} cmid Course Module from which the users will be obtained + * @param {Number} groupID Group ID from which the users will be obtained * @returns {Promise} Promise containing a list of users */ - var getEnrolledUsersFromCourseModuleID = function(cmid) { + var getEnrolledUsersFromCourseModuleID = function(cmid, groupID) { var request = { methodname: 'core_course_get_enrolled_users_by_cmid', args: { cmid: cmid, + groupid: groupID, }, }; diff --git a/course/externallib.php b/course/externallib.php index 992ba224188..b39acfe3a0f 100644 --- a/course/externallib.php +++ b/course/externallib.php @@ -4062,6 +4062,7 @@ class core_course_external extends external_api { public static function get_enrolled_users_by_cmid_parameters() { return new external_function_parameters([ 'cmid' => new external_value(PARAM_INT, 'id of the course module', VALUE_REQUIRED), + 'groupid' => new external_value(PARAM_INT, 'id of the group', VALUE_DEFAULT, 0), ]); } @@ -4069,24 +4070,27 @@ class core_course_external extends external_api { * Get all users in a course for a given cmid. * * @param int $cmid Course Module id from which the users will be obtained + * @param int $groupid Group id from which the users will be obtained * @return array List of users * @throws invalid_parameter_exception */ - public static function get_enrolled_users_by_cmid(int $cmid) { - global $PAGE; + public static function get_enrolled_users_by_cmid(int $cmid, int $groupid = 0) { + global $PAGE; $warnings = []; [ 'cmid' => $cmid, + 'groupid' => $groupid, ] = self::validate_parameters(self::get_enrolled_users_by_cmid_parameters(), [ 'cmid' => $cmid, + 'groupid' => $groupid, ]); list($course, $cm) = get_course_and_cm_from_cmid($cmid); $coursecontext = context_course::instance($course->id); self::validate_context($coursecontext); - $enrolledusers = get_enrolled_users($coursecontext); + $enrolledusers = get_enrolled_users($coursecontext, '', $groupid); $users = array_map(function ($user) use ($PAGE) { $user->fullname = fullname($user); diff --git a/lib/db/services.php b/lib/db/services.php index 15adc29f627..b629e937be7 100644 --- a/lib/db/services.php +++ b/lib/db/services.php @@ -625,7 +625,7 @@ $functions = array( 'classname' => 'core_course_external', 'methodname' => 'get_enrolled_users_by_cmid', 'classpath' => 'course/externallib.php', - 'description' => 'List users bycourse module id.', + 'description' => 'List users by course module id & filter by group id.', 'type' => 'read', 'ajax' => true, ),