From: donal72 Date: Fri, 19 Jan 2007 00:23:55 +0000 (+0000) Subject: Mnet: More enrolment data in the back channel - stash in mnet_enrol_assignments... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=0855c4cab3f614a6e9b4cf2cdd452108b5d95ca8;p=moodle.git Mnet: More enrolment data in the back channel - stash in mnet_enrol_assignments table --- diff --git a/admin/mnet/enr_course_enrol.html b/admin/mnet/enr_course_enrol.html index 6429c4fce4..7941d204e4 100755 --- a/admin/mnet/enr_course_enrol.html +++ b/admin/mnet/enr_course_enrol.html @@ -22,7 +22,7 @@ getElementById('assignform').addselect.selectedIndex=-1;"> ismnetenrolment)) { + if ($enrolleduser->enroltype == 'mnet') { $fullname = fullname($enrolleduser, true); echo "\n"; } @@ -94,7 +94,7 @@ :
ismnetenrolment)) { + if ($enrolleduser->enroltype != 'mnet') { $fullname = fullname($enrolleduser, true); echo $fullname.', '.$enrolleduser->email."
\n"; } diff --git a/admin/mnet/enr_course_enrol.php b/admin/mnet/enr_course_enrol.php index cc8d05d508..93577125f1 100644 --- a/admin/mnet/enr_course_enrol.php +++ b/admin/mnet/enr_course_enrol.php @@ -88,25 +88,30 @@ $select = ''; $all_enrolled_usernames = ''; + $timemodified = array(); /// List all the users (homed on this server) who are enrolled on the course /// This will include mnet-enrolled users, and those who have enrolled /// themselves, etc. if (is_array($all_enrolled_users) && count($all_enrolled_users)) { - foreach($all_enrolled_users as $user) { - $all_enrolled_usernames .= "'{$user['username']}', "; + foreach($all_enrolled_users as $username => $data) { + $all_enrolled_usernames .= "'$username', "; } - $select = ' u.username IN (' .substr($all_enrolled_usernames, 0, -2) .') AND'; + $select = ' u.username IN (' .substr($all_enrolled_usernames, 0, -2) .') AND '; + } else { + $all_enrolled_users = array(); } -/// Pseudocode for query - get records for all users that are enrolled in the -/// course, and if they were enrolled via mnet, ismnetenrolment will be > 0 +/// Synch our mnet_enrol_assignments with remote server $sql = " SELECT u.id, u.firstname, u.lastname, + u.username, u.email, - COALESCE(a.hostid, 0) as ismnetenrolment, + a.enroltype, + a.id as enrolid, + COALESCE(a.hostid, 0) as wehaverecord, a.courseid FROM {$CFG->prefix}user u @@ -127,6 +132,58 @@ $enrolledusers = array(); } + foreach($enrolledusers as $user) { + + $dataobj = new stdClass(); + $dataobj->userid = $user->id; + $dataobj->hostid = $mnet_peer->id; + $dataobj->courseid = $courseid; + $dataobj->rolename = $all_enrolled_users[$user->username]['name']; + $dataobj->enroltype = $all_enrolled_users[$user->username]['enrol']; + + if ($user->wehaverecord == 0) { + $dataobj->enroltime = $all_enrolled_users[$user->username]['timemodified']; + $dataobj->id = insert_record('mnet_enrol_assignments', $dataobj); + } elseif (array_key_exists($user->username, $all_enrolled_users)) { + $dataobj->id = $user->enrolid; + update_record('mnet_enrol_assignments', $dataobj); + } elseif (is_array($all_enrolled_users) && count($all_enrolled_users)) { + delete_record('mnet_enrol_assignments', 'id', $user->enrolid); + } + } + + + $sql = " + SELECT + u.id, + u.firstname, + u.lastname, + u.email, + a.enroltype, + a.courseid + FROM + {$CFG->prefix}user u, + {$CFG->prefix}mnet_enrol_assignments a + WHERE + a.userid = u.id AND + a.courseid={$courseid} AND + u.deleted = 0 AND + u.confirmed = 1 AND + u.mnethostid = {$CFG->mnet_localhost_id} + ORDER BY + u.firstname ASC, + u.lastname ASC"; + + if (!$enrolledusers = get_records_sql($sql)) { + $enrolledusers = array(); + } + + $excludeids = ' '; + foreach($enrolledusers as $user) { + $excludeids .= "$user->id, "; + } + $select = 'AND u.id NOT IN ( 0, ' .substr($excludeids, 0, -2) .') '; + $searchtext = trim($searchtext); $select = ''; @@ -137,14 +194,6 @@ $select .= " AND ($FULLNAME $LIKE '%$searchtext%' OR email $LIKE '%$searchtext%') "; } - /**** start of NOT IN block ****/ - - $select .= " AND username NOT IN ('guest', 'changeme', "; - $select .= $all_enrolled_usernames; - $select = substr($select, 0, -2) .') '; - - /**** end of NOT IN block ****/ - $availableusers = get_recordset_sql('SELECT id, firstname, lastname, email FROM '.$CFG->prefix.'user WHERE deleted = 0 AND confirmed = 1 AND mnethostid = '.$CFG->mnet_localhost_id.' '.$select.' diff --git a/enrol/mnet/enrol.php b/enrol/mnet/enrol.php index ea3ac76115..faee465552 100644 --- a/enrol/mnet/enrol.php +++ b/enrol/mnet/enrol.php @@ -263,12 +263,17 @@ class enrolment_plugin_mnet { SELECT u.id, u.username, - a.enrol + a.enrol, + a.timemodified, + r.name, + r.shortname FROM {$CFG->prefix}role_assignments a, + {$CFG->prefix}role r, {$CFG->prefix}user u WHERE a.contextid = '{$context->id}' AND + a.roleid = r.id AND a.userid = u.id AND u.mnethostid = '{$MNET_REMOTE_CLIENT->id}' "; @@ -283,7 +288,10 @@ class enrolment_plugin_mnet { $returnarray = array(); foreach($enrolments as $user) { - $returnarray[] = array('username' => $user->username, 'enrol' => $user->enrol); + $returnarray[$user->username] = array('enrol' => $user->enrol, + 'timemodified' => $user->timemodified, + 'shortname' => $user->shortname, + 'name' => $user->name); } return $returnarray; }