Skip to content

Commit

Permalink
MDL-45500 gradingform: allow plugin uninstall
Browse files Browse the repository at this point in the history
  • Loading branch information
marinaglancy committed Nov 28, 2017
1 parent c099963 commit 8b283a6
Showing 1 changed file with 25 additions and 1 deletion.
26 changes: 25 additions & 1 deletion lib/classes/plugininfo/gradingform.php
Expand Up @@ -31,6 +31,30 @@
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();
}
}

0 comments on commit 8b283a6

Please sign in to comment.