$userorgroupchanged = $fromform->userid !== $override->userid; } else { $userorgroupchanged = $fromform->groupid !== $override->groupid; } } if ($userorgroupchanged) { $conditions = array('assignid' => $assign->get_context()->id, 'userid' => empty($fromform->userid) ? null : $fromform->userid, 'groupid' => empty($fromform->groupid) ? null : $fromform->groupid); if ($oldoverride = $DB->get_record('assign_overrides', $conditions)) { // There is an old override, so we merge any new settings on top of // the older override. foreach ($keys as $key) { if (is_null($fromform->{$key})) { $fromform->{$key} = $oldoverride->{$key}; } } $assign->delete_override($oldoverride->id); } } // Set the common parameters for one of the events we may be triggering. $params = array('context' => $context, 'other' => array('assignid' => $assign->get_context()->id)); if (!empty($override->id)) { $fromform->id = $override->id; $DB->update_record('assign_overrides', $fromform); // Determine which override updated event to fire. $params['objectid'] = $override->id; if (!$groupmode) { $params['relateduserid'] = $fromform->userid; $event = \mod_assign\event\user_override_updated::create($params); } else { $params['other']['groupid'] = $fromform->groupid; $event = \mod_assign\event\group_override_updated::create($params);