. /** * This script allows to import a course from CLI. * * @package core * @subpackage cli * @author Tomo Tsuyuki * @copyright 2023 Catalyst IT * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ define('CLI_SCRIPT', 1); require(__DIR__ . '/../../config.php'); require_once($CFG->libdir . '/clilib.php'); require_once($CFG->dirroot . '/backup/util/includes/backup_includes.php'); require_once($CFG->dirroot . "/backup/util/includes/restore_includes.php"); list($options, $unrecognized) = cli_get_params([ 'srccourseid' => '', 'srccmid' => '', 'dstcourseid' => '', 'showdebugging' => false, 'help' => false, ], [ 's' => 'showdebugging', 'h' => 'help', ]); if ($unrecognized) { $unrecognized = implode("\n ", $unrecognized); cli_error(get_string('cliunknowoption', 'admin', $unrecognized)); } if ($options['help'] || !(($options['srccourseid'] && $options['dstcourseid']) || ($options['srccmid'] && $options['dstcourseid']))) { $help = <<get_record('course', ['id' => $options['srccourseid']], 'id')) { throw new \moodle_exception('invalidcourseid'); } if (!$dstcourse = $DB->get_record('course', ['id' => $options['dstcourseid']], 'id')) { throw new \moodle_exception('invalidcourseid'); } cli_heading(get_string('importfromcoursetocourse', 'backup', (object)$options)); $bc = new backup_controller(backup::TYPE_1COURSE, $srccourse->id, backup::FORMAT_MOODLE, backup::INTERACTIVE_NO, backup::MODE_IMPORT, $admin->id); $backupid = $bc->get_backupid(); $bc->execute_plan(); $bc->destroy(); cli_heading(get_string('backupthenrestore', 'backup')); $rc = new restore_controller($backupid, $dstcourse->id, backup::INTERACTIVE_NO, backup::MODE_SAMESITE, $admin->id, backup::TARGET_EXISTING_ADDING); $rc->execute_precheck(); $rc->execute_plan(); $rc->destroy(); cli_heading(get_string('restoredcourseid', 'backup', $dstcourse->id)); } else if (!empty($options['srccmid']) && !empty($options['dstcourseid'])) { // Import from course module into course. if (!$cm = $DB->get_record('course_modules', ['id' => $options['srccmid']], 'id')) { throw new \moodle_exception('invalidcoursemoduleid', 'error', '', $options['srccmid']); } if (!$course = $DB->get_record('course', ['id' => $options['dstcourseid']], 'id')) { throw new \moodle_exception('invalidcourseid'); } cli_heading(get_string('importfromccmidtocourse', 'backup', (object)$options)); $bc = new backup_controller(backup::TYPE_1ACTIVITY, $cm->id, backup::FORMAT_MOODLE, backup::INTERACTIVE_NO, backup::MODE_IMPORT, $admin->id); $backupid = $bc->get_backupid(); $bc->execute_plan(); $bc->destroy(); cli_heading(get_string('backupthenrestore', 'backup')); $rc = new restore_controller($backupid, $course->id, backup::INTERACTIVE_NO, backup::MODE_SAMESITE, $admin->id, backup::TARGET_EXISTING_ADDING); $rc->execute_precheck(); $rc->execute_plan(); $rc->destroy(); cli_heading(get_string('restoredcourseid', 'backup', $course->id)); } else { throw new \moodle_exception('invalidoption'); } exit(0);