function move_courses($courseids, $categoryid) { global $CFG; if (!empty($courseids)) { $courseids = array_reverse($courseids); foreach ($courseids as $courseid) { if (!($course = get_record("course", "id", $courseid))) { notify("Error finding course {$courseid}"); } else { // figure out a sortorder that we can use in the destination category $sortorder = get_field_sql('SELECT MIN(sortorder)-1 AS min FROM ' . $CFG->prefix . 'course WHERE category=' . $categoryid); if (is_null($sortorder) || $sortorder === false) { // the category is empty // rather than let the db default to 0 // set it to > 100 and avoid extra work in fix_coursesortorder() $sortorder = 200; } else { if ($sortorder < 10) { fix_course_sortorder($categoryid); } } $course->category = $categoryid; $course->sortorder = $sortorder; $course->fullname = addslashes($course->fullname); $course->shortname = addslashes($course->shortname); $course->summary = addslashes($course->summary); $course->password = addslashes($course->password); $course->teacher = addslashes($course->teacher); $course->teachers = addslashes($course->teachers); $course->student = addslashes($course->student); $course->students = addslashes($course->students); if (!update_record('course', $course)) { notify("An error occurred - course not moved!"); } // parents changed (course category), do not delete child context relations insert_context_rel(get_context_instance(CONTEXT_COURSE, $course->id), false); } } fix_course_sortorder(); } return true; }
/** * rebuild context_rel table without deleting */ function build_context_rel() { global $db; $savedb = $db->debug; // total number of records $total = count_records('context'); // processed records $done = 0; print_progress($done, $total, 10, 0, 'Processing context relations'); $db->debug = false; if ($contexts = get_records('context')) { foreach ($contexts as $context) { // no need to delete because it's all empty insert_context_rel($context, false, false); $db->debug = true; print_progress(++$done, $total, 10, 0, 'Processing context relations'); $db->debug = false; } } $db->debug = $savedb; }