Skip to content

Commit 2c2819b

Browse files
committed
Event handling logic.
1 parent 4885d5f commit 2c2819b

File tree

3 files changed

+42
-8
lines changed

3 files changed

+42
-8
lines changed

classes/domain/autogroup_set.php

+1
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ public function delete(\moodle_database $db, $cleanupgroups = true)
100100
//this has to be done first to prevent event handler getting in the way
101101
$db->delete_records('local_autogroup_set', array('id'=>$this->id));
102102
$db->delete_records('local_autogroup_roles', array('setid'=>$this->id));
103+
$db->delete_records('local_autogroup_manual', array('groupid'=>$this->id));
103104

104105
if($cleanupgroups){
105106
foreach($this->groups as $k => $group){

classes/domain/group.php

+10
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,16 @@ public function ensure_user_is_member($userid){
9090
* @param int $userid
9191
*/
9292
public function ensure_user_is_not_member($userid){
93+
94+
// Do not allow autogroup to remove this User if they were manually assigned to group.
95+
$pluginconfig = get_config('local_autogroup');
96+
if($pluginconfig->preservemanual) {
97+
global $DB;
98+
if($DB->record_exists('local_autogroup_manual', array('userid' => $userid, 'groupid' => $this->id))) {
99+
return;
100+
}
101+
}
102+
93103
foreach($this->members as $member){
94104
if ($member == $userid) {
95105
\groups_remove_member($this->as_object(), $userid);

classes/event_handler.php

+31-8
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,23 @@ public static function group_member_added(event\group_member_added $event) {
7676
return false;
7777
}
7878

79+
global $DB;
7980
$pluginconfig = get_config('local_autogroup');
81+
82+
// Add to manually assigned list (local_autogroup_manual).
83+
$userid = (int) $event->relateduserid;
84+
$groupid = (int) $event->objectid;
85+
86+
if(!$DB->record_exists('local_autogroup_manual', array('userid' => $userid, 'groupid' => $groupid))) {
87+
$record = (object) array('userid' => $userid, 'groupid' => $groupid);
88+
$DB->insert_record('local_autogroup_manual', $record);
89+
}
90+
// End of add to manually assigned list (local_autogroup_manual)
91+
8092
if(!$pluginconfig->listenforgroupmembership){
8193
return false;
8294
}
8395

84-
global $DB;
85-
8696
$courseid = (int) $event->courseid;
8797
$userid = (int) $event->relateduserid;
8898

@@ -101,10 +111,17 @@ public static function group_member_removed(event\group_member_removed $event) {
101111
return false;
102112
}
103113

114+
global $DB, $PAGE;
104115
$pluginconfig = get_config('local_autogroup');
105116

117+
// Remove from manually assigned list (local_autogroup_manual).
118+
$userid = (int) $event->relateduserid;
119+
$groupid = (int) $event->objectid;
106120

107-
global $DB, $PAGE;
121+
if($DB->record_exists('local_autogroup_manual', array('userid' => $userid, 'groupid' => $groupid))) {
122+
$DB->delete_records('local_autogroup_manual', array('userid' => $userid, 'groupid' => $groupid));
123+
}
124+
// End of remove from manually assigned list (local_autogroup_manual)
108125

109126
$groupid = (int) $event->objectid;
110127
$courseid = (int) $event->courseid;
@@ -174,16 +191,22 @@ public static function group_change(event\base $event) {
174191
return false;
175192
}
176193

177-
$pluginconfig = get_config('local_autogroup');
178-
if(!$pluginconfig->listenforgroupchanges){
179-
return false;
180-
}
181-
182194
global $DB, $PAGE;
183195

184196
$courseid = (int) $event->courseid;
185197
$groupid = (int) $event->objectid;
186198

199+
// Remove from manually assigned list (local_autogroup_manual).
200+
if ($event->eventname === '\core\event\group_deleted') {
201+
$DB->delete_records('local_autogroup_manual', array('groupid' => $groupid));
202+
}
203+
// End of remove from manually assigned list (local_autogroup_manual)
204+
205+
$pluginconfig = get_config('local_autogroup');
206+
if(!$pluginconfig->listenforgroupchanges){
207+
return false;
208+
}
209+
187210
if($DB->record_exists('groups', array('id'=>$groupid))) {
188211
$verifygroupidnumber = new usecase\verify_group_idnumber($groupid, $DB, $PAGE);
189212
$verifygroupidnumber();

0 commit comments

Comments
 (0)