if ($confirm) {
$plugin->delete_instance($instance);
- $context->mark_dirty(); // invalidate all enrol caches
redirect($PAGE->url);
}
} else if ($action === 'disable') {
$instance = $instances[$instanceid];
- if ($instance->status == ENROL_INSTANCE_ENABLED) {
- $instance->status = ENROL_INSTANCE_DISABLED;
- $DB->update_record('enrol', $instance);
- $context->mark_dirty(); // invalidate all enrol caches
+ $plugin = $plugins[$instance->enrol];
+ if ($instance->status != ENROL_INSTANCE_DISABLED) {
+ $plugin->update_status($instance, ENROL_INSTANCE_DISABLED);
redirect($PAGE->url);
}
} else if ($action === 'enable') {
$instance = $instances[$instanceid];
- if ($instance->status == ENROL_INSTANCE_DISABLED) {
- $instance->status = ENROL_INSTANCE_ENABLED;
- $DB->update_record('enrol', $instance);
- $context->mark_dirty(); // invalidate all enrol caches
+ $plugin = $plugins[$instance->enrol];
+ if ($instance->status != ENROL_INSTANCE_ENABLED) {
+ $plugin->update_status($instance, ENROL_INSTANCE_ENABLED);
redirect($PAGE->url);
}
}
return null;
}
+ /**
+ * Update instance status
+ *
+ * Override when plugin needs to do some action when enabled or disabled.
+ *
+ * @param stdClass $instance
+ * @param int $newstatus ENROL_INSTANCE_ENABLED, ENROL_INSTANCE_DISABLED
+ * @return void
+ */
+ public function update_status($instance, $newstatus) {
+ global $DB;
+
+ $instance->status = $newstatus;
+ $DB->update_record('enrol', $instance);
+
+ // invalidate all enrol caches
+ $context = context_course::instance($instance->courseid);
+ $context->mark_dirty();
+ }
+
/**
* Delete course enrol plugin instance, unenrol all users.
* @param object $instance
// finally drop the enrol row
$DB->delete_records('enrol', array('id'=>$instance->id));
+
+ // invalidate all enrol caches
+ $context = context_course::instance($instance->courseid);
+ $context->mark_dirty();
}
/**