MDL-30789 add new update_status() method to enrol plugins and improve enrol cache invalidation
This commit is contained in:
+6
-9
@@ -98,7 +98,6 @@ if ($canconfig and $action and confirm_sesskey()) {
|
||||
|
||||
if ($confirm) {
|
||||
$plugin->delete_instance($instance);
|
||||
$context->mark_dirty(); // invalidate all enrol caches
|
||||
redirect($PAGE->url);
|
||||
}
|
||||
|
||||
@@ -113,19 +112,17 @@ if ($canconfig and $action and confirm_sesskey()) {
|
||||
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1553,6 +1553,26 @@ abstract class enrol_plugin {
|
||||
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
|
||||
@@ -1579,6 +1599,10 @@ abstract class enrol_plugin {
|
||||
|
||||
// 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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user