ich die folgende Lösung getestet, aber es sollte die gewünschte Wirkung:
require($CFG->libdir . '/coursecatlib.php');
require($CFG->libdir . '/enrollib.php');
$categoryid = 0; // Replace with the desired category ID.
$category = coursecat::get($categoryid);
foreach ($category->get_courses() as $course) {
// Simulates the deletion of the course, a better solution is to copy
// the logic from `enrol_course_delete` here directly.
enrol_course_delete($course);
}
Das obige Skript kann eine Weile dauern, so dass Sie wahrscheinlich diese von der Kommandozeile ausgeführt werden soll .
Sie können Schleife über die Untergruppen mit:
$categories = $category->get_children();
foreach ($categories as $category) {
}
Um die ID einer Kategorie von Kurznamen zu erhalten, verwenden Sie Folgendes:
$name = "My category";
$categoryid = $DB->get_field('course_categories', 'id', array('name' => $name), MUST_EXIST);
Beachten Sie, dass Kategorien identische Namen haben können, Sie sollten stattdessen die Kategorie idnumber
verwenden.
Überprüfen Sie das Datenbankschema Ihrer Moodle-Version: https://docs.moodle.org/dev/Database_Schema. Kommen Sie mit den beteiligten Tischen zurück und Sie werden schneller reagieren. –
Direkte SQL-Anweisungen sind normalerweise eine sehr schlechte Idee, Sie müssen die Moodle-API verwenden. – FMCorz