diff --git a/admin/cli/delete_course.php b/admin/cli/delete_course.php new file mode 100644 index 00000000000..2dfe9d8dbe4 --- /dev/null +++ b/admin/cli/delete_course.php @@ -0,0 +1,124 @@ +. + +/** + * CLI script to delete a course. + * + * @package core + * @subpackage cli + * @author Mikhail Golenkov + * @copyright 2022 Catalyst IT + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +define('CLI_SCRIPT', true); + +require(__DIR__ . '/../../config.php'); +require_once($CFG->libdir . '/clilib.php'); +require_once($CFG->libdir . '/cronlib.php'); + +list($options, $unrecognized) = cli_get_params( + [ + 'courseid' => false, + 'help' => false, + 'showsql' => false, + 'showdebugging' => false, + 'disablerecyclebin' => false, + 'non-interactive' => false, + ], [ + 'c' => 'courseid', + 'h' => 'help', + ] +); + +if ($unrecognized) { + $unrecognized = implode("\n ", $unrecognized); + cli_error(get_string('cliunknowoption', 'admin', $unrecognized)); +} + +if ($options['help'] || empty($options['courseid'])) { + $help = <<set_debug(true); +} + +if (CLI_MAINTENANCE) { + cli_error('CLI maintenance mode active, CLI execution suspended'); +} + +if (moodle_needs_upgrading()) { + cli_error('Moodle upgrade pending, CLI execution suspended'); +} + +$course = $DB->get_record('course', array('id' => $options['courseid'])); +if (empty($course)) { + cli_error('Course not found'); +} + +mtrace('Deleting course id ' . $course->id); +mtrace('Course name: ' . $course->fullname); +mtrace('Short name: ' . $course->shortname); + +if ($interactive) { + mtrace(''); + $input = cli_input('Are you sure you wish to delete this course? (y/N)', 'N', ['y', 'Y', 'n', 'N']); + if (strtolower($input) != 'y') { + exit(0); + } +} + +if ($options['disablerecyclebin']) { + mtrace('Disabling recycle bin...'); + $overrideconfig = ['tool_recyclebin' => ['coursebinenable' => false, 'categorybinenable' => false]]; + $CFG->forced_plugin_settings = array_merge($CFG->forced_plugin_settings, $overrideconfig); +} + +core_php_time_limit::raise(); +delete_course($course); + +mtrace('Updating course count in categories...'); +fix_course_sortorder(); + +mtrace('Done!');