MDL-17445 course deletion cleanup and adding new event that is triggered after removing course content
This commit is contained in:
+4
-1
@@ -33,6 +33,8 @@ $handlers = array (
|
||||
|
||||
/*
|
||||
* portfolio queued event - for non interactive file transfers
|
||||
* NOTE: this is a hack, please do not add any more things like this here
|
||||
* (it is just abusing cron to do very time consuming things which is wrong)
|
||||
*/
|
||||
'portfolio_send' => array (
|
||||
'handlerfile' => '/lib/portfolio.php',
|
||||
@@ -63,6 +65,7 @@ course_category_deleted - object course_categories table record
|
||||
|
||||
course_created - object course table record
|
||||
course_updated - object course table record
|
||||
course_content_removed - object course table record
|
||||
course_deleted - object course table record
|
||||
|
||||
==== group related events ====
|
||||
@@ -83,7 +86,7 @@ groups_groupings_groups_removed - int course id - removed all groups from all gr
|
||||
groups_groups_deleted - int course id - deleted all course groups
|
||||
groups_groupings_deleted - int course id - deleted all course groupings
|
||||
|
||||
==== role related evetns ====
|
||||
==== role related events ====
|
||||
|
||||
role_assigned - object role_assignments table record
|
||||
role_unassigned - object role_assignments table record
|
||||
|
||||
+16
-44
@@ -4018,7 +4018,6 @@ function set_login_session_preferences() {
|
||||
*/
|
||||
function delete_course($courseorid, $showfeedback = true) {
|
||||
global $CFG, $DB, $OUTPUT;
|
||||
$result = true;
|
||||
|
||||
if (is_object($courseorid)) {
|
||||
$courseid = $courseorid->id;
|
||||
@@ -4035,36 +4034,17 @@ function delete_course($courseorid, $showfeedback = true) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!remove_course_contents($courseid, $showfeedback)) {
|
||||
if ($showfeedback) {
|
||||
echo $OUTPUT->notification("An error occurred while deleting some of the course contents.");
|
||||
}
|
||||
$result = false;
|
||||
}
|
||||
remove_course_contents($courseid, $showfeedback);
|
||||
|
||||
$DB->delete_records("course", array("id"=>$courseid));
|
||||
|
||||
/// Delete all roles and overiddes in the course context
|
||||
if (!delete_context(CONTEXT_COURSE, $courseid)) {
|
||||
if ($showfeedback) {
|
||||
echo $OUTPUT->notification("An error occurred while deleting the main course context.");
|
||||
}
|
||||
$result = false;
|
||||
}
|
||||
// Delete all roles and overiddes in the course context
|
||||
delete_context(CONTEXT_COURSE, $courseid);
|
||||
|
||||
if (!fulldelete($CFG->dataroot.'/'.$courseid)) {
|
||||
if ($showfeedback) {
|
||||
echo $OUTPUT->notification("An error occurred while deleting the course files.");
|
||||
}
|
||||
$result = false;
|
||||
}
|
||||
//trigger events
|
||||
events_trigger('course_deleted', $course);
|
||||
|
||||
if ($result) {
|
||||
//trigger events
|
||||
events_trigger('course_deleted', $course);
|
||||
}
|
||||
|
||||
return $result;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -4084,12 +4064,8 @@ function remove_course_contents($courseid, $showfeedback=true) {
|
||||
require_once($CFG->libdir.'/questionlib.php');
|
||||
require_once($CFG->libdir.'/gradelib.php');
|
||||
|
||||
$result = true;
|
||||
|
||||
if (! $course = $DB->get_record('course', array('id'=>$courseid))) {
|
||||
print_error('invalidcourseid');
|
||||
}
|
||||
$context = get_context_instance(CONTEXT_COURSE, $courseid);
|
||||
$course = $DB->get_record('course', array('id'=>$courseid), '*', MUST_EXIST);
|
||||
$context = get_context_instance(CONTEXT_COURSE, $courseid, MUST_EXIST);
|
||||
|
||||
$strdeleted = get_string('deleted');
|
||||
|
||||
@@ -4132,7 +4108,6 @@ function remove_course_contents($courseid, $showfeedback=true) {
|
||||
|
||||
} else {
|
||||
echo $OUTPUT->notification('Could not delete '. $modname .' instance '. $instance->id .' ('. format_string($instance->name) .')');
|
||||
$result = false;
|
||||
}
|
||||
if ($cm) {
|
||||
// delete cm and its context in correct order
|
||||
@@ -4143,7 +4118,6 @@ function remove_course_contents($courseid, $showfeedback=true) {
|
||||
}
|
||||
} else {
|
||||
echo $OUTPUT->notification('Function '.$moddelete.'() doesn\'t exist!');
|
||||
$result = false;
|
||||
}
|
||||
|
||||
if (function_exists($moddeletecourse)) {
|
||||
@@ -4154,8 +4128,6 @@ function remove_course_contents($courseid, $showfeedback=true) {
|
||||
echo $OUTPUT->notification($strdeleted .' '. $count .' x '. $modname);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
print_error('nomodules', 'debug');
|
||||
}
|
||||
|
||||
/// Delete course blocks
|
||||
@@ -4180,13 +4152,7 @@ function remove_course_contents($courseid, $showfeedback=true) {
|
||||
'backup_log' => 'courseid'
|
||||
);
|
||||
foreach ($tablestoclear as $table => $col) {
|
||||
if ($DB->delete_records($table, array($col=>$course->id))) {
|
||||
if ($showfeedback) {
|
||||
echo $OUTPUT->notification($strdeleted . ' ' . $table);
|
||||
}
|
||||
} else {
|
||||
$result = false;
|
||||
}
|
||||
$DB->delete_records($table, array($col=>$course->id));
|
||||
}
|
||||
|
||||
|
||||
@@ -4220,7 +4186,13 @@ function remove_course_contents($courseid, $showfeedback=true) {
|
||||
require_once($CFG->dirroot.'/tag/coursetagslib.php');
|
||||
coursetag_delete_course_tags($course->id, $showfeedback);
|
||||
|
||||
return $result;
|
||||
// Delete legacy files
|
||||
fulldelete($CFG->dataroot.'/'.$courseid);
|
||||
|
||||
//trigger events
|
||||
events_trigger('course_content_removed', $course);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user