Move the code for clearing out a course into a new function:

remove_course_contents()
This commit is contained in:
moodler
2003-08-02 11:32:59 +00:00
parent 1692281e40
commit 07aeb7b0bf
2 changed files with 103 additions and 56 deletions
+4 -56
View File
@@ -68,64 +68,12 @@
print_heading($strdeletingcourse);
$strdeleted = get_string("deleted");
// First delete every instance of every module
if ($allmods = get_records("modules") ) {
foreach ($allmods as $mod) {
$modname = $mod->name;
$modfile = "../mod/$modname/lib.php";
$moddelete = $modname."_delete_instance";
$count=0;
if (file_exists($modfile)) {
include_once($modfile);
if (function_exists($moddelete)) {
if ($instances = get_records($modname, "course", $course->id)) {
foreach ($instances as $instance) {
if ($moddelete($instance->id)) {
$count++;
} else {
notify("Could not delete $modname instance $instance->id ($instance->name)");
}
}
}
} else {
notify("Function $moddelete() doesn't exist!");
}
}
notify("$strdeleted $count instances of $modname");
}
} else {
error("No modules are installed!");
}
// Delete any user stuff
if (delete_records("user_students", "course", $course->id)) {
notify("$strdeleted student enrolments");
if (!remove_course_contents($course->id)) {
notify("An error occurred while deleting some of the course contents.");
}
if (delete_records("user_teachers", "course", $course->id)) {
notify("$strdeleted teachers");
}
// Delete logs
if (delete_records("log", "course", $course->id)) {
notify("$strdeleted logs");
}
// Delete any course stuff
if (delete_records("course_sections", "course", $course->id)) {
notify("$strdeleted course sections");
}
if (delete_records("course_modules", "course", $course->id)) {
notify("$strdeleted course modules");
}
if (delete_records("course", "id", $course->id)) {
notify("$strdeleted the main course record");
if (!delete_records("course", "id", $course->id)) {
notify("An error occurred while deleting the main course record.");
}
print_heading( get_string("deletedcourse", "", $course->shortname) );
+99
View File
@@ -662,6 +662,105 @@ function remove_admin($user) {
}
function remove_course_contents($courseid, $showfeedback=true) {
/// Clear a course out completely, deleting all content
/// but don't delete the course itself
global $CFG;
$result = true;
if (! $course = get_record("course", "id", $courseid)) {
error("Course ID was incorrect (can't find it)");
}
$strdeleted = get_string("deleted");
// First delete every instance of every module
if ($allmods = get_records("modules") ) {
foreach ($allmods as $mod) {
$modname = $mod->name;
$modfile = "$CFG->dirroot/mod/$modname/lib.php";
$moddelete = $modname."_delete_instance";
$count=0;
if (file_exists($modfile)) {
include_once($modfile);
if (function_exists($moddelete)) {
if ($instances = get_records($modname, "course", $course->id)) {
foreach ($instances as $instance) {
if ($moddelete($instance->id)) {
$count++;
} else {
notify("Could not delete $modname instance $instance->id ($instance->name)");
$result = false;
}
}
}
} else {
notify("Function $moddelete() doesn't exist!");
$result = false;
}
}
if ($showfeedback) {
notify("$strdeleted $count x $modname");
}
}
} else {
error("No modules are installed!");
}
// Delete any user stuff
if (delete_records("user_students", "course", $course->id)) {
if ($showfeedback) {
notify("$strdeleted user_students");
}
} else {
$result = false;
}
if (delete_records("user_teachers", "course", $course->id)) {
if ($showfeedback) {
notify("$strdeleted user_teachers");
}
} else {
$result = false;
}
// Delete logs
if (delete_records("log", "course", $course->id)) {
if ($showfeedback) {
notify("$strdeleted log");
}
} else {
$result = false;
}
// Delete any course stuff
if (delete_records("course_sections", "course", $course->id)) {
if ($showfeedback) {
notify("$strdeleted course_sections");
}
} else {
$result = false;
}
if (delete_records("course_modules", "course", $course->id)) {
if ($showfeedback) {
notify("$strdeleted course_modules");
}
} else {
$result = false;
}
return $result;
}
/// CORRESPONDENCE ////////////////////////////////////////////////