mirror of
https://github.com/moodle/moodle.git
synced 2025-01-18 05:58:34 +01:00
MDL-45500 gradingform: allow plugin uninstall
This commit is contained in:
parent
5bde2c2b62
commit
777720c833
@ -31,6 +31,30 @@ defined('MOODLE_INTERNAL') || die();
|
||||
class gradingform extends base {
|
||||
|
||||
public function is_uninstall_allowed() {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Pre-uninstall hook.
|
||||
* This is intended for disabling of plugin, some DB table purging, etc.
|
||||
*/
|
||||
public function uninstall_cleanup() {
|
||||
global $DB;
|
||||
|
||||
// Find all definitions and templates.
|
||||
$definitions = $DB->get_fieldset_select('grading_definitions', 'id', 'method = ?', [$this->name]);
|
||||
if ($definitions) {
|
||||
// Delete instances and definitions. Deleting instance will not delete grades because they were
|
||||
// already pushed to the module and gradebook.
|
||||
list($sqld, $paramsd) = $DB->get_in_or_equal($definitions);
|
||||
$DB->delete_records_select('grading_instances', 'definitionid ' . $sqld, $paramsd);
|
||||
$DB->delete_records_select('grading_definitions', 'id ' . $sqld, $paramsd);
|
||||
}
|
||||
// Delete templates for this grading method.
|
||||
$DB->delete_records_select('grading_areas', 'component = ? AND activemethod = ?', array('core_grading', $this->name));
|
||||
// Update the remaining grading areas to use simple grading method instead of this grading method.
|
||||
$DB->execute('UPDATE {grading_areas} SET activemethod = NULL WHERE activemethod = ?', [$this->name]);
|
||||
|
||||
parent::uninstall_cleanup();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user