MDL-17445 course deletion cleanup and adding new event that is triggered after removing course content

This commit is contained in:
Petr Skoda
2010-05-20 07:59:13 +00:00
parent a05bcfbaa5
commit 906fb8f883
2 changed files with 20 additions and 45 deletions
+4 -1
View File
@@ -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
View File
@@ -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;
}
/**