From: Andrew Davis
Date: Mon, 21 Dec 2009 08:13:50 +0000 (+0000)
Subject: group MDL-20005 added display of other groups users are in
X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=bf1ac6d9ae4932f6ddd62bfced948ac6cbe27978;p=moodle.git
group MDL-20005 added display of other groups users are in
---
diff --git a/group/clientlib.js b/group/clientlib.js
index 2ab972424f..e1d61c7d92 100644
--- a/group/clientlib.js
+++ b/group/clientlib.js
@@ -202,6 +202,29 @@ var removeLoaderImgs = function (elClass, parentId) {
}
};
+function updateUserSummary() {
+ var selectEl = document.getElementById('addselect');
+ var summaryDiv = document.getElementById('group-usersummary');
+ var length = selectEl.length;
+ var selectCnt = 0;
+ var selectIdx = -1;
+
+ for(i=0;iheader();
display(); ?>
+
+
+
+
@@ -126,6 +130,9 @@ echo $OUTPUT->header();
print_user_summaries($course->id);
+
//this must be after calling display() on the selectors so their setup JS executes first
$PAGE->requires->js_function_call('init_add_remove_members_page');
diff --git a/user/selector/lib.php b/user/selector/lib.php
index 8b1d3b4a81..0bbf0ed845 100644
--- a/user/selector/lib.php
+++ b/user/selector/lib.php
@@ -718,15 +718,78 @@ class group_members_selector extends groups_user_selector_base {
/**
* User selector subclass for the list of users who are not in a certain group.
- * Used on the add group memebers page.
+ * Used on the add group members page.
*/
class group_non_members_selector extends groups_user_selector_base {
const MAX_USERS_PER_PAGE = 100;
+ /**
+ * An array of user ids populated by find_users() used in print_user_summaries()
+ */
+ private $potentialmembersids = array();
+
public function output_user($user) {
return parent::output_user($user) . ' (' . $user->numgroups . ')';
}
+ /**
+ * Outputs a Javascript array containing the other groups non-members are in.
+ * Used on the add group members page.
+ */
+ public function print_user_summaries($courseid) {
+ global $DB;
+
+ echo <<
+//potentialmembersids;
+ if( empty($potentialmembersids)==false ) {
+ list($membersidsclause, $params) = $DB->get_in_or_equal($potentialmembersids, SQL_PARAMS_NAMED, 'pm0');
+ $sql = "SELECT u.id AS userid, g.*
+ FROM {user} u
+ JOIN {groups_members} gm ON u.id = gm.userid
+ JOIN {groups} g ON gm.groupid = g.id
+ WHERE u.id $membersidsclause AND g.courseid = :courseid ";
+ $params['courseid'] = $courseid;
+ if ($rs = $DB->get_recordset_sql($sql, $params)) {
+ foreach ($rs as $usergroup) {
+ $usergroups[$usergroup->userid][$usergroup->id] = $usergroup;
+ }
+ $rs->close();
+ }
+
+ $membercnt = count($potentialmembersids);
+ $i=1;
+ foreach ($potentialmembersids as $userid) {
+ if (isset($usergroups[$userid])) {
+ $usergrouplist = '