From bae736241a8b173d0e50e441ffb35c4d81969b38 Mon Sep 17 00:00:00 2001 From: skodak <skodak> Date: Wed, 4 Jun 2008 20:51:02 +0000 Subject: [PATCH] MDL-15095 core backup/restore conversion finished --- backup/backuplib.php | 466 +++++++++++------------ question/backuplib.php | 122 +++--- question/type/multianswer/db/upgrade.php | 17 +- 3 files changed, 279 insertions(+), 326 deletions(-) diff --git a/backup/backuplib.php b/backup/backuplib.php index 690693fd7a..a7e51542ee 100644 --- a/backup/backuplib.php +++ b/backup/backuplib.php @@ -17,6 +17,7 @@ * @return array one array (key, value) sumarizing the result of the function (number of users) */ function user_check_backup($courseid,$backup_unique_code,$backup_users,$backup_messages,$backup_blogs) { + global $DB; $context = get_context_instance(CONTEXT_COURSE, $courseid); $count_users = 0; @@ -68,7 +69,7 @@ /// And read data acordingly with backup_getid() when needed. /// TODO: Also analyse it the "needed" info is really needed for anything. Drop if not. /// Insert the user to the backup_ids table. backup_user_info() will use that info - $status = insert_record('backup_ids', $backupids_rec, false); + $status = $DB->insert_record('backup_ids', $backupids_rec, false); $count_users++; } /// Do some output @@ -91,18 +92,15 @@ //WARNING: It returns only NEEDED users, not every // every student and teacher in the course, so it //must be merged with backup_get_enrrolled_users !! - function backup_get_needed_users ($courseid, $includemessages=false, $includeblogs=false) { - - global $CFG; + global $CFG, $DB; $result = false; - $course_modules = get_records_sql ("SELECT cm.id, m.name, cm.instance - FROM {$CFG->prefix}modules m, - {$CFG->prefix}course_modules cm - WHERE m.id = cm.module and - cm.course = '$courseid'"); + $course_modules = $DB->get_records_sql("SELECT cm.id, m.name, cm.instance + FROM {modules} m, {course_modules} cm + WHERE m.id = cm.module and + cm.course = ?", array($courseid)); if ($course_modules) { //Iterate over each module @@ -126,9 +124,9 @@ //Now, add scale users (from site and course scales) //Get users - $scaleusers = get_records_sql("SELECT DISTINCT userid,userid - FROM {$CFG->prefix}scale - WHERE courseid = '0' or courseid = '$courseid'"); + $scaleusers = $DB->get_records_sql("SELECT DISTINCT userid,userid + FROM {scale} + WHERE courseid = 0 or courseid = ?", array($courseid)); //Add scale users to results if ($scaleusers) { foreach ($scaleusers as $scaleuser) { @@ -178,7 +176,6 @@ //Returns every enrolled user (student and teacher) in a course function backup_get_enrolled_users ($courseid) { - global $CFG; // get all users with moodle/course:view capability, this will include people @@ -189,18 +186,18 @@ //Returns all users ids (every record in users table) function backup_get_all_users() { + global $DB; - return get_records('user', '', '', '', 'id, id'); + return $DB->get_records('user', null, '', 'id, id'); } //Calculate the number of log entries to backup //Return an array of info (name,value) function log_check_backup($course) { - - global $CFG; + global $CFG, $DB; //Now execute the count - $ids = count_records("log","course",$course); + $ids = $DB->count_records("log", array("course"=>$course)); //Gets the user data $info[0][0] = get_string("logs"); @@ -217,14 +214,14 @@ //Under $CFG->dataroot/users //Return an array of info (name,value) function user_files_check_backup($course,$backup_unique_code) { + global $CFG, $DB; - global $CFG; $count = 0; - - $backup_users = get_recordset_select("backup_ids", - "backup_code='$backup_unique_code' AND table_name='user'", "", "id, old_id"); - - while ($user = rs_fetch_next_record($backup_users)) { + + $backup_users = $DB->get_recordset("backup_ids", + array('backup_code'=>$backup_unique_code, 'table_name'=>'user'), "", "id, old_id"); + + foreach ($backup_users as $user) { //Is this user needed in the backup? $userdir = make_user_directory($user->old_id, true); if (check_dir_exists($userdir)) { @@ -233,7 +230,7 @@ //Do some output backup_flush(30); } - rs_close($backup_users); + $backup_users->close(); //Gets the user data $info[0][0] = get_string("userswithfiles"); $info[0][1] = $count; @@ -248,8 +245,7 @@ * Return an array of info (name,value) */ function course_files_check_backup($course, $backup_unique_code) { - - global $CFG; + global $CFG, $DB; $rootdir = $CFG->dataroot."/$course"; //Check if directory exists @@ -261,10 +257,11 @@ //Check it isn't backupdata_dir if (strpos($dir,$backupdata_dir)!==0) { //Insert them into backup_files - $status = execute_sql("INSERT INTO {$CFG->prefix}backup_files - (backup_code, file_type, path) - VALUES - ('$backup_unique_code','course','".addslashes($dir)."')",false); + $file = new object(); + $file->backup_code = $backup_unique_code; + $file->file_type = 'course'; + $file->path = $dir; + $status = $DB->insert("backup_files", $file); } //Do some output backup_flush(30); @@ -272,10 +269,10 @@ } //Now execute the select - $ids = get_records_sql("SELECT DISTINCT b.path, b.old_id - FROM {$CFG->prefix}backup_files b - WHERE backup_code = '$backup_unique_code' AND - file_type = 'course'"); + $ids = $DB->get_records_sql("SELECT DISTINCT b.path, b.old_id + FROM {backup_files} b + WHERE backup_code = ? AND + file_type = 'course'", array($backup_unique_code)); //Gets the user data $info = array(); $info[0] = array(); @@ -298,13 +295,13 @@ * Return an array of info (name,value) */ function site_files_check_backup($course, $backup_unique_code) { - global $CFG; + global $CFG, $DB; //execute the select, records have been inserted by modules during their ****_check_backup_mods function. - $ids = get_records_sql("SELECT DISTINCT b.path - FROM {$CFG->prefix}backup_files b - WHERE backup_code = '$backup_unique_code' AND - file_type = 'site'"); + $ids = $DB->get_records_sql("SELECT DISTINCT b.path + FROM {backup_files} b + WHERE backup_code = ? AND + file_type = 'site'", array($backup_unique_code)); //Gets the user data $info = array(); $info[0] = array(); @@ -323,7 +320,6 @@ //to be able to restore it, but in restore we check for //$CFG->moddata !! function check_and_create_moddata_dir($backup_unique_code) { - global $CFG; $status = check_dir_exists($CFG->dataroot."/temp/backup/".$backup_unique_code."/moddata",true); @@ -334,7 +330,6 @@ //Function to check and create the "user_files" dir to //save all the user files we need from "users" dir function check_and_create_user_files_dir($backup_unique_code) { - global $CFG; $status = check_dir_exists($CFG->dataroot."/temp/backup/".$backup_unique_code."/user_files",true); @@ -345,7 +340,6 @@ //Function to check and create the "group_files" dir to //save all the user files we need from "groups" dir function check_and_create_group_files_dir($backup_unique_code) { - global $CFG; $status = check_dir_exists($CFG->dataroot."/temp/backup/".$backup_unique_code."/group_files",true); @@ -356,7 +350,6 @@ //Function to check and create the "course_files" dir to //save all the course files we need from "CFG->datadir/course" dir function check_and_create_course_files_dir($backup_unique_code) { - global $CFG; $status = check_dir_exists($CFG->dataroot."/temp/backup/".$backup_unique_code."/course_files",true); @@ -367,7 +360,6 @@ //Function to check and create the "site_files" dir to //save all the course files we need from "CFG->datadir/SITEID" dir function check_and_create_site_files_dir($backup_unique_code) { - global $CFG; $status = check_dir_exists($CFG->dataroot."/temp/backup/".$backup_unique_code."/site_files",true); @@ -377,7 +369,6 @@ //Function to create, open and write header of the xml file function backup_open_xml($backup_unique_code) { - global $CFG; $status = true; @@ -433,12 +424,12 @@ //Return the start tag, the contents and the end tag function full_tag($tag,$level=0,$endline=true,$content,$attributes=null) { - global $CFG; + //Here we encode absolute links // MDL-10770 if (is_null($content)) { - $content = '$@NULL@$'; + $content = '$@NULL@$'; } else { $content = backup_encode_absolute_links($content); } @@ -466,8 +457,7 @@ //Prints General info about the course //name, moodle_version (internal and release), backup_version, date, info in file... function backup_general_info ($bf,$preferences) { - - global $CFG; + global $CFG, $DB; fwrite ($bf,start_tag("INFO",1,true)); @@ -491,11 +481,11 @@ } //Indicate if it includes external MNET users $sql = "SELECT b.old_id - FROM {$CFG->prefix}backup_ids b - JOIN {$CFG->prefix}user u ON b.old_id=u.id - WHERE b.backup_code = '$preferences->backup_unique_code' - AND b.table_name = 'user' AND u.mnethostid != '{$CFG->mnet_localhost_id}'"; - if (record_exists_sql($sql)) { + FROM {backup_ids} b + JOIN {user} u ON b.old_id=u.id + WHERE b.backup_code = ? + AND b.table_name = 'user' AND u.mnethostid != ?"; + if ($DB->record_exists_sql($sql, array($preferences->backup_unique_code, $CFG->mnet_localhost_id))) { fwrite ($bf,full_tag("MNET_REMOTEUSERS",2,false,'true')); } fwrite ($bf,full_tag("ZIP_METHOD",2,false,$zipmethod)); @@ -638,11 +628,11 @@ fwrite ($bf,full_tag('PERMISSION', 5, false, $value)); // use this to pull out the other info (timemodified and modifierid) - $cap = get_record_sql("SELECT * - FROM {$CFG->prefix}role_capabilities - WHERE capability = '$capability' - AND contextid = $sitecontext->id - AND roleid = $role->id"); + $cap = $DB->get_record_sql("SELECT * + FROM {role_capabilities} + WHERE capability = ? + AND contextid = ? + AND roleid = ?", array($capability, $sitecontext->id, $role->id)); fwrite ($bf, full_tag("TIMEMODIFIED", 5, false, $cap->timemodified)); fwrite ($bf, full_tag("MODIFIERID", 5, false, $cap->modifierid)); fwrite ($bf,end_tag('CAPABILITY',4,true)); @@ -657,8 +647,7 @@ //Prints course's general info (table course) function backup_course_start ($bf,$preferences) { - - global $CFG; + global $CFG, $DB; $status = true; @@ -668,13 +657,13 @@ fwrite ($bf,start_tag("HEADER",2,true)); //Get info from course - $course = get_record("course","id",$preferences->backup_course); + $course = $DB->get_record("course", array("id"=>$preferences->backup_course)); $context = get_context_instance(CONTEXT_COURSE, $course->id); if ($course) { //Prints course info fwrite ($bf,full_tag("ID",3,false,$course->id)); //Obtain the category - $category = get_record("course_categories","id","$course->category"); + $category = $DB->get_record("course_categories", array("id"=>"$course->category")); if ($category) { //Prints category info fwrite ($bf,start_tag("CATEGORY",3,true)); @@ -753,22 +742,19 @@ //Prints course's metacourse info (table course_meta) function backup_course_metacourse ($bf,$preferences) { - - global $CFG; + global $CFG, $DB; $status = true; //Get info from meta - $parents = get_records_sql ("SELECT m.*, c.idnumber, c.shortname - FROM {$CFG->prefix}course_meta m, - {$CFG->prefix}course c - WHERE m.child_course = '$preferences->backup_course' AND - m.parent_course = c.id"); - $childs = get_records_sql ("SELECT m.*, c.idnumber, c.shortname - FROM {$CFG->prefix}course_meta m, - {$CFG->prefix}course c - WHERE m.parent_course = '$preferences->backup_course' AND - m.child_course = c.id"); + $parents = $DB->get_records_sql ("SELECT m.*, c.idnumber, c.shortname + FROM {course_meta} m, {course} c + WHERE m.child_course = ? AND + m.parent_course = c.id", array($preferences->backup_course)); + $childs = $DB->get_records_sql ("SELECT m.*, c.idnumber, c.shortname + FROM {course_meta} m, {course} c + WHERE m.parent_course = ? AND + m.child_course = c.id", array($preferences->backup_course)); if ($parents || $childs) { //metacourse open tag @@ -811,15 +797,14 @@ //Prints course's messages info (tables message, message_read and message_contacts) function backup_messages ($bf,$preferences) { - - global $CFG; + global $CFG, $DB; $status = true; /// Check we have something to backup - $unreads = count_records ('message'); - $reads = count_records ('message_read'); - $contacts= count_records ('message_contacts'); + $unreads = $DB->count_records ('message'); + $reads = $DB->count_records ('message_read'); + $contacts= $DB->count_records ('message_contacts'); if ($unreads || $reads || $contacts) { $counter = 0; @@ -827,9 +812,9 @@ fwrite ($bf,start_tag("MESSAGES",2,true)); if ($unreads) { - $rs_unreads = get_recordset('message'); + $rs_unreads = $DB->get_recordset('message'); /// Iterate over every unread - while ($unread = rs_fetch_next_record($rs_unreads)) { + foreach ($rs_unreads as $unread) { /// start message fwrite($bf, start_tag("MESSAGE",3,true)); fwrite ($bf,full_tag("ID",4,false,$unread->id)); @@ -853,13 +838,13 @@ backup_flush(300); } } - rs_close($rs_unreads); + $rs_unreads->close(); } if ($reads) { - $rs_reads = get_recordset('message_read'); + $rs_reads = $DB->get_recordset('message_read'); /// Iterate over every unread - while ($read = rs_fetch_next_record($rs_reads)) { + foreach ($rs_reads as $read) { /// start message fwrite($bf, start_tag("MESSAGE",3,true)); fwrite ($bf,full_tag("ID",4,false,$read->id)); @@ -885,14 +870,14 @@ backup_flush(300); } } - rs_close($rs_reads); + $rs_reads->close(); } if ($contacts) { fwrite($bf, start_tag("CONTACTS",3,true)); - $rs_contacts = get_recordset('message_contacts'); + $rs_contacts = $DB->get_recordset('message_contacts'); /// Iterate over every contact - while ($contact = rs_fetch_next_record($rs_contacts)) { + foreach ($rs_contacts as $contact) { /// start contact fwrite($bf, start_tag("CONTACT",4,true)); fwrite ($bf,full_tag("ID",5,false,$contact->id)); @@ -912,7 +897,7 @@ backup_flush(300); } } - rs_close($rs_contacts); + $rs_contacts->close(); fwrite($bf, end_tag("CONTACTS",3,true)); } @@ -926,13 +911,12 @@ //Print blogs info (post table, module=blog, course=0) function backup_blogs($bf, $preferences) { - - global $CFG; + global $CFG, $DB; $status = true; /// Check we have something to backup - $siteblogs = count_records('post', 'module', 'blog', 'courseid', 0); + $siteblogs = $DB->count_records('post', array('module'=>'blog', 'courseid'=>0)); if ($siteblogs) { $counter = 0; @@ -940,11 +924,9 @@ fwrite ($bf, start_tag("BLOGS",2,true)); if ($siteblogs) { - $rs_blogs = get_recordset_sql("SELECT * from {$CFG->prefix}post - WHERE module = 'blog' - AND courseid = 0"); + $rs_blogs = $DB->get_recordset('post', array('module'=>'blog', 'courseid'=>0)); /// Iterate over every blog - while ($blog = rs_fetch_next_record($rs_blogs)) { + foreach ($rs_blogs as $blog) { /// start blog fwrite($bf, start_tag("BLOG",3,true)); /// blog body @@ -1001,7 +983,7 @@ backup_flush(300); } } - rs_close($rs_blogs); + $rs_blogs-close(); } /// blogs close tag $status = fwrite($bf, end_tag("BLOGS",2,true)); @@ -1010,10 +992,11 @@ return $status; } - //Prints course's blocks info (table block_instance) + /** + * Prints course's blocks info (table block_instance) + */ function backup_course_blocks ($bf,$preferences) { - - global $CFG; + global $CFG, $DB; $status = true; @@ -1025,7 +1008,7 @@ if (!empty($CFG->showblocksonmodpages)) { // get course structure - $course = get_record('course', 'id', $preferences->backup_course); + $course = $DB->get_record('course', array('id'=>$preferences->backup_course)); $modinfo =& get_fast_modinfo($course); foreach($preferences->mods as $module) { @@ -1111,15 +1094,14 @@ //Prints course's sections info (table course_sections) function backup_course_sections ($bf,$preferences) { - - global $CFG; + global $CFG, $DB; $status = true; //Get info from sections $section=false; - if ($sections = get_records("course_sections","course",$preferences->backup_course,"section")) { + if ($sections = $DB->get_records("course_sections", array("course"=>$preferences->backup_course),"section")) { //Section open tag fwrite ($bf,start_tag("SECTIONS",2,true)); //Iterate over every section (ordered by section) @@ -1145,10 +1127,10 @@ //Prints course's format data (any data the format might want to save). function backup_format_data ($bf,$preferences) { - global $CFG; + global $CFG, $DB; // Check course format - if(!($format=get_field('course','format','id',$preferences->backup_course))) { + if(!($format = $DB->get_field('course','format', array('id'=>$preferences->backup_course)))) { return false; } // Write appropriate tag. Note that we always put this tag there even if @@ -1175,8 +1157,7 @@ //Prints course's modules info (table course_modules) //Only for selected mods in preferences function backup_course_modules ($bf,$preferences,$section) { - - global $CFG; + global $CFG, $DB; $status = true; @@ -1199,11 +1180,11 @@ $context = get_context_instance(CONTEXT_MODULE, $tok); //Gets course_module data from db - verify activity exists and is enabled! $sql = "SELECT cm.* - FROM {$CFG->prefix}course_modules cm - JOIN {$CFG->prefix}modules m ON m.id = cm.module - JOIN {$CFG->prefix}$moduletype a ON a.id = cm.instance + FROM {course_modules} cm + JOIN {modules} m ON m.id = cm.module + JOIN {".$moduletype."} a ON a.id = cm.instance WHERE m.visible = 1 AND cm.id = $tok"; - if (!$course_module = get_record_sql($sql)) { + if (!$course_module = $DB->get_record_sql($sql)) { // cm exists but activity instance missing - probably caused by double clicking $tok = strtok(","); continue; @@ -1224,7 +1205,7 @@ } // find all role values that has an override in this context - $roles = get_records('role_capabilities', 'contextid', $context->id); + $roles = $DB->get_records('role_capabilities', array('contextid'=>$context->id)); //Print mod info from course_modules fwrite ($bf,start_tag("MOD",5,true)); @@ -1264,29 +1245,28 @@ //Only users previously calculated in backup_ids will output // function backup_user_info ($bf,$preferences) { - - global $CFG; + global $CFG, $DB; require_once ($CFG->dirroot.'/tag/lib.php'); $status = true; // Use a recordset to for the memory handling on to // the DB and run faster - $users = get_recordset_sql("SELECT b.old_id, b.table_name, b.info, - u.*, m.wwwroot - FROM {$CFG->prefix}backup_ids b - JOIN {$CFG->prefix}user u ON b.old_id=u.id - JOIN {$CFG->prefix}mnet_host m ON u.mnethostid=m.id - WHERE b.backup_code = '$preferences->backup_unique_code' AND - b.table_name = 'user'"); + $users = $DB->get_recordset_sql("SELECT b.old_id, b.table_name, b.info, + u.*, m.wwwroot + FROM {backup_ids} b + JOIN {user} u ON b.old_id=u.id + JOIN {mnet_host} m ON u.mnethostid=m.id + WHERE b.backup_code = ? AND + b.table_name = 'user'", array($preferences->backup_unique_code)); //If we have users to backup - if ($users && !rs_EOF($users)) { + if ($users && $users->valid()) { //Begin Users tag fwrite ($bf,start_tag("USERS",2,true)); $counter = 0; //With every user - while ($user = rs_fetch_next_record($users)) { + foreach ($users as $user) { //Begin User tag fwrite ($bf,start_tag("USER",3,true)); //Output all user data @@ -1370,11 +1350,11 @@ fwrite ($bf,end_tag("ROLES",4,true)); //Check if we have custom profile fields to backup - if ($cpfields = get_records_sql("SELECT uif.shortname, uif.datatype, uid.data - FROM {$CFG->prefix}user_info_field uif, - {$CFG->prefix}user_info_data uid - WHERE uif.id = uid.fieldid - AND uid.userid = $user->id")) { + if ($cpfields = $DB->get_records_sql("SELECT uif.shortname, uif.datatype, uid.data + FROM {user_info_field} uif, + {user_info_data} uid + WHERE uif.id = uid.fieldid + AND uid.userid = ?", array($user->id))) { //Start USER_CUSTOM_PROFILE_FIELDS tag fwrite ($bf,start_tag("USER_CUSTOM_PROFILE_FIELDS",4,true)); //Write custom profile fields @@ -1407,7 +1387,7 @@ } //Check if we have user_preferences to backup - if ($preferences_data = get_records("user_preferences","userid",$user->old_id)) { + if ($preferences_data = $DB->get_records("user_preferences", array("userid"=>$user->old_id))) { //Start USER_PREFERENCES tag fwrite ($bf,start_tag("USER_PREFERENCES",4,true)); //Write each user_preference @@ -1446,7 +1426,7 @@ } if ($users) { - rs_close($users); + $users->close(); } return $status; @@ -1454,8 +1434,7 @@ //Backup log info (time ordered) function backup_log_info($bf,$preferences) { - - global $CFG; + global $CFG, $DB; //Number of records to get in every chunk $recordset_size = 1000; @@ -1466,7 +1445,7 @@ $counter = 0; //Count records - $count_logs = count_records("log","course",$preferences->backup_course); + $count_logs = $DB->count_records("log", array("course"=>$preferences->backup_course)); //Pring logs header if ($count_logs > 0 ) { @@ -1474,7 +1453,7 @@ } while ($counter < $count_logs) { //Get a chunk of records - $logs = get_records ("log","course",$preferences->backup_course,"time","*",$counter,$recordset_size); + $logs = $DB->get_records ("log", array("course"=>$preferences->backup_course),"time","*",$counter,$recordset_size); //We have logs if ($logs) { @@ -1523,7 +1502,7 @@ //Backup gradebook info function backup_gradebook_info($bf, $preferences) { - global $CFG; + global $CFG, $DB; require_once($CFG->libdir.'/gradelib.php'); //first make sure items are properly sorted and everything is ok @@ -1536,10 +1515,10 @@ // if not, we do not need to backup grade category and associated grade items/grades $backupall = true; - if ($grade_items = get_records_sql("SELECT * - FROM {$CFG->prefix}grade_items - WHERE courseid = $preferences->backup_course - AND itemtype = 'mod'")) { + if ($grade_items = $DB->get_records_sql("SELECT * + FROM {grade_items} + WHERE courseid = ? + AND itemtype = 'mod'", array($preferences->backup_course))) { foreach ($grade_items as $grade_item) { // get module information // if no user data selected, we do not backup categories @@ -1578,18 +1557,17 @@ } function backup_gradebook_category_info($bf, $preferences) { - global $CFG; + global $CFG, $DB; $status = true; // get grade categories in proper order - specified in category grade items $course_item = grade_item::fetch_course_item($preferences->backup_course); - $grade_categories = get_records_sql("SELECT gc.*, gi.sortorder - FROM {$CFG->prefix}grade_categories gc - JOIN {$CFG->prefix}grade_items gi - ON (gi.iteminstance = gc.id) - WHERE gc.courseid = $preferences->backup_course - AND (gi.itemtype='course' OR gi.itemtype='category') - ORDER BY gi.sortorder ASC"); + $grade_categories = $DB->get_records_sql("SELECT gc.*, gi.sortorder + FROM {grade_categories} gc + JOIN {grade_items} gi ON (gi.iteminstance = gc.id) + WHERE gc.courseid = ? + AND (gi.itemtype='course' OR gi.itemtype='category') + ORDER BY gi.sortorder ASC", array($preferences->backup_course)); if ($grade_categories) { //Begin grade_categories tag @@ -1625,16 +1603,16 @@ //Backup gradebook_item (called from backup_gradebook_info function backup_gradebook_item_info($bf, $preferences, $backupall) { - global $CFG; + global $CFG, $DB; $status = true; // get all the grade_items, ordered by sort order since upon restoring, it is not always // possible to use the same sort order. We could at least preserve the sortorder by restoring // grade_items in the original sortorder - if ($grade_items = get_records_sql("SELECT * - FROM {$CFG->prefix}grade_items - WHERE courseid = $preferences->backup_course - ORDER BY sortorder ASC")) { + if ($grade_items = $DB->get_records_sql("SELECT * + FROM {grade_items} + WHERE courseid = ? + ORDER BY sortorder ASC", array($preferences->backup_course))) { //Begin grade_items tag fwrite ($bf,start_tag("GRADE_ITEMS",3,true)); @@ -1711,13 +1689,13 @@ //Backup gradebook_item (called from backup_gradebook_info function backup_gradebook_grade_letters_info($bf, $preferences) { - global $CFG; + global $CFG, $DB; $status = true; $context = get_context_instance(CONTEXT_COURSE, $preferences->backup_course); - $grade_letters = get_records_sql("SELECT * - FROM {$CFG->prefix}grade_letters - WHERE contextid = $context->id"); + $grade_letters = $DB->get_records_sql("SELECT * + FROM {grade_letters} + WHERE contextid = ?", array($context->id)); if ($grade_letters) { //Begin grade_l tag fwrite ($bf,start_tag("GRADE_LETTERS",3,true)); @@ -1741,15 +1719,14 @@ } function backup_gradebook_outcomes_info($bf, $preferences) { + global $CFG, $DB; - global $CFG; $status = true; // only back up courses already in the grade_outcomes_courses table - $grade_outcomes = get_records_sql("SELECT go.* - FROM {$CFG->prefix}grade_outcomes go - JOIN {$CFG->prefix}grade_outcomes_courses goc - ON (goc.outcomeid = go.id) - WHERE goc.courseid = $preferences->backup_course"); + $grade_outcomes = $DB->get_records_sql("SELECT go.* + FROM {grade_outcomes} go + JOIN {grade_outcomes_courses} goc ON (goc.outcomeid = go.id) + WHERE goc.courseid = ?", array($preferences->backup_course)); if (!empty($grade_outcomes)) { //Begin grade_outcomes tag @@ -1780,13 +1757,12 @@ } function backup_gradebook_grades_info($bf,$preferences, $itemid) { - - global $CFG; + global $CFG, $DB; $status = true; // find all grades belonging to this item - if ($grades = get_records('grade_grades', 'itemid', $itemid)) { + if ($grades = $DB->get_records('grade_grades', array('itemid'=>$itemid))) { fwrite ($bf,start_tag("GRADE_GRADES",5,true)); foreach ($grades as $grade) { /// Grades are only sent to backup if the user is one target user @@ -1821,12 +1797,12 @@ } function backup_gradebook_categories_history_info($bf, $preferences) { + global $CFG, $DB; - global $CFG; $status = true; // find all grade categories history - if ($chs = get_records('grade_categories_history', 'courseid', $preferences->backup_course)) { + if ($chs = $DB->get_records('grade_categories_history', array('courseid'=>$preferences->backup_course))) { fwrite ($bf,start_tag("GRADE_CATEGORIES_HISTORIES",5,true)); foreach ($chs as $ch) { fwrite ($bf,start_tag("GRADE_CATEGORIES_HISTORY",6,true)); @@ -1854,16 +1830,14 @@ } function backup_gradebook_grades_history_info($bf, $preferences) { - - global $CFG; + global $CFG, $DB; $status = true; // find all grade categories history - if ($chs = get_records_sql("SELECT ggh.* - FROM {$CFG->prefix}grade_grades_history ggh - JOIN {$CFG->prefix}grade_items gi - ON gi.id = ggh.itemid - WHERE gi.courseid = $preferences->backup_course")) { + if ($chs = $DB->get_records_sql("SELECT ggh.* + FROM {grade_grades_history} ggh + JOIN {grade_item} gi ON gi.id = ggh.itemid + WHERE gi.courseid = ?", array($preferences->backup_course))) { fwrite ($bf,start_tag("GRADE_GRADES_HISTORIES",5,true)); foreach ($chs as $ch) { /// Grades are only sent to backup if the user is one target user @@ -1902,12 +1876,11 @@ } function backup_gradebook_items_history_info($bf, $preferences) { - - global $CFG; + global $CFG, $DB; $status = true; // find all grade categories history - if ($chs = get_records('grade_items_history','courseid', $preferences->backup_course)) { + if ($chs = $DB->get_records('grade_items_history', array('courseid'=>$preferences->backup_course))) { fwrite ($bf,start_tag("GRADE_ITEM_HISTORIES",5,true)); foreach ($chs as $ch) { fwrite ($bf,start_tag("GRADE_ITEM_HISTORY",6,true)); @@ -1951,11 +1924,11 @@ } function backup_gradebook_outcomes_history($bf, $preferences) { - global $CFG; + global $CFG, $DB; $status = true; // find all grade categories history - if ($chs = get_records('grade_outcomes_history','courseid', $preferences->backup_course)) { + if ($chs = $DB->get_records('grade_outcomes_history', array('courseid'=>$preferences->backup_course))) { fwrite ($bf,start_tag("GRADE_OUTCOME_HISTORIES",5,true)); foreach ($chs as $ch) { fwrite ($bf,start_tag("GRADE_OUTCOME_HISTORY",6,true)); @@ -1978,8 +1951,7 @@ //Backup scales info (common and course scales) function backup_scales_info($bf,$preferences) { - - global $CFG; + global $CFG, $DB; $status = true; @@ -1987,9 +1959,9 @@ $counter = 0; //Get scales (common and course scales) - $scales = get_records_sql("SELECT id, courseid, userid, name, scale, description, timemodified - FROM {$CFG->prefix}scale - WHERE courseid = 0 OR courseid = $preferences->backup_course"); + $scales = $DB->get_records_sql("SELECT id, courseid, userid, name, scale, description, timemodified + FROM {scale} + WHERE courseid = 0 OR courseid = ?", array($preferences->backup_course)); //Copy only used scales to $backupscales. They will be in backup (unused no). See Bug 1223. $backupscales = array(); @@ -2028,8 +2000,7 @@ //Backup events info (course events) function backup_events_info($bf,$preferences) { - - global $CFG; + global $CFG, $DB; $status = true; @@ -2037,7 +2008,7 @@ $counter = 0; //Get events (course events) - $events = get_records_select("event","courseid='$preferences->backup_course' AND instance='0'","id"); + $events = $DB->get_records("event", array("courseid"=>$preferences->backup_course, 'instance'=>0),"id"); //Pring events header if ($events) { @@ -2072,14 +2043,13 @@ //Backup groups info function backup_groups_info($bf,$preferences) { - - global $CFG; + global $CFG, $DB; $status = true; $status2 = true; //Get groups - $groups = get_records("groups","courseid",$preferences->backup_course); + $groups = $DB->get_records("groups", array("courseid"=>$preferences->backup_course)); //Pring groups header if ($groups) { @@ -2121,18 +2091,16 @@ //Backup groups_members info function backup_groups_members_info($bf,$preferences,$groupid) { - - global $CFG; + global $CFG, $DB; $status = true; //Get groups_members that are being included in backup - $groups_members = get_records_sql("SELECT gm.* - FROM {$CFG->prefix}groups_members gm, - {$CFG->prefix}backup_ids bi - WHERE gm.groupid = $groupid - AND bi.backup_code = $preferences->backup_unique_code - AND bi.table_name = 'user'"); + $groups_members = $DB->get_records_sql("SELECT gm.* + FROM {groups_members} gm, {backup_ids} bi + WHERE gm.groupid = ? + AND bi.backup_code = ? + AND bi.table_name = 'user'", array($groupid, $preferences->backup_unique_code)); //Pring groups_members header if ($groups_members) { @@ -2157,13 +2125,12 @@ //Backup groupings info function backup_groupings_info($bf,$preferences) { - - global $CFG; + global $CFG, $DB; $status = true; //Get groups - $groupings = get_records("groupings","courseid",$preferences->backup_course); + $groupings = $DB->get_records("groupings", array("courseid"=>$preferences->backup_course)); //Pring groups header if ($groupings) { @@ -2195,16 +2162,15 @@ //Backup groupings-groups info function backup_groupings_groups_info($bf,$preferences) { - - global $CFG; + global $CFG, $DB; $status = true; //Get grouping_groups $courseid = $preferences->backup_course; - $sql = "SELECT gg.* FROM {$CFG->prefix}groupings g, {$CFG->prefix}groupings_groups gg - WHERE g.courseid=$courseid AND g.id=gg.groupingid"; - $grouping_groups = get_records_sql($sql); + $sql = "SELECT gg.* FROM {groupings} g, {groupings_groups} gg + WHERE g.courseid=? AND g.id=gg.groupingid"; + $grouping_groups = $DB->get_records_sql($sql, array($courseid)); //Pring grouping_groups header if ($grouping_groups) { @@ -2243,8 +2209,7 @@ //This function makes all the necesary calls to every mod //to export itself and its files !!! function backup_module($bf,$preferences,$module) { - - global $CFG; + global $CFG, $DB; $status = true; $statusm = true; @@ -2292,8 +2257,7 @@ // - Every module xxxx_encode_content_links() is executed too // function backup_encode_absolute_links($content) { - - global $CFG,$preferences; + global $CFG,$preferences, $DB; /// MDL-14072: Prevent NULLs, empties and numbers to be processed by the /// heavy interlinking. Just a few cpu cycles saved. @@ -2354,7 +2318,7 @@ static $blockobjects = null; if (!isset($blockobjects)) { $blockobjects = array(); - if ($blocks = get_records('block', 'visible', 1)) { + if ($blocks = $DB->get_records('block', array('visible'=>1))) { foreach ($blocks as $block) { if ($blockobject = block_instance($block->name)) { $blockobjects[] = $blockobject; @@ -2377,8 +2341,7 @@ //This function copies all the needed files under the "user" directory to the "user_files" //directory under temp/backup function backup_copy_user_files ($preferences) { - - global $CFG; + global $CFG, $DB; $status = true; @@ -2386,9 +2349,9 @@ //in temp/backup/$backup_code dir $status = check_and_create_user_files_dir($preferences->backup_unique_code); //now get a list of users that we need for this backup. - $backup_users = get_recordset_select("backup_ids", - "backup_code='$preferences->backup_unique_code' AND table_name='user'", "", "id, old_id"); - while ($user = rs_fetch_next_record($backup_users)) { + $backup_users = $DB->get_recordset("backup_ids", + array('backup_code'=>$preferences->backup_unique_code, array('table_name'=>'user'), "", "id, old_id")); + foreach ($backup_users as $user) { //If this user's directory exists, copy it $userdir = make_user_directory($user->old_id, true); if (check_dir_exists($userdir)) { @@ -2403,13 +2366,13 @@ $status = check_dir_exists("$CFG->dataroot/temp/backup/$preferences->backup_unique_code/user_files/". $group, true); } - $status = $status && backup_copy_file($userdir, + $status = $status && backup_copy_file($userdir, "$CFG->dataroot/temp/backup/$preferences->backup_unique_code/user_files/$group/$user->old_id"); } //Do some output backup_flush(30); } - rs_close($backup_users); + $backup_users->close(); return $status; } @@ -2417,8 +2380,7 @@ //This function copies all the needed files under the "groups" directory to the "group_files" //directory under temp/backup function backup_copy_group_files ($preferences) { - - global $CFG; + global $CFG, $DB; $status = true; @@ -2437,8 +2399,7 @@ //Iterate foreach ($list as $dir) { //Look for dir like group in groups table - $data = get_record ('groups', 'courseid', $preferences->backup_course, - 'id',$dir); + $data = $DB->get_record ('groups', array('courseid'=>$preferences->backup_course, 'id'=>$dir)); //If exists, copy it if ($data) { $status = backup_copy_file($rootdir."/".$dir, @@ -2453,8 +2414,7 @@ //This function copies all the course files under the course directory (except the moddata //directory to the "course_files" directory under temp/backup function backup_copy_course_files ($preferences) { - - global $CFG; + global $CFG, $DB; $status = true; @@ -2484,13 +2444,13 @@ } return $status; } - /* + + /** * This function copies all the site files under the site directory (except the moddata and backupdata * directories to the "site_files" directory under temp/backup */ function backup_copy_site_files ($preferences) { - - global $CFG; + global $CFG, $DB; $status = true; @@ -2506,8 +2466,7 @@ - $files = get_records_select('backup_files', - "backup_code = '$preferences->backup_unique_code' AND file_type = 'site'"); + $files = $DB->get_records('backup_files', array('backup_code'=>$preferences->backup_unique_code, 'file_type'=>'site')); if ($files) { //Iterate foreach ($files as $fileobj) { @@ -2526,8 +2485,7 @@ //the "oficial" name of the backup //It uses "pclzip" if available or system "zip" (unix only) function backup_zip ($preferences) { - - global $CFG; + global $CFG, $DB; $status = true; @@ -2553,8 +2511,7 @@ //This function copies the final zip to the course dir function copy_zip_to_course_dir ($preferences) { - - global $CFG; + global $CFG, $DB; $status = true; @@ -2622,12 +2579,12 @@ && !empty($preferences->mods[$modname]->instances[$modid]->backup))); } - /* + /** * Checks for the required files/functions to backup every mod * And check if there is data about it */ function backup_fetch_prefs_from_request(&$preferences,&$count,$course) { - global $CFG,$SESSION; + global $CFG,$SESSION, $DB; // check to see if it's in the session already if (!empty($SESSION->backupprefs) && array_key_exists($course->id,$SESSION->backupprefs) && !empty($SESSION->backupprefs[$course->id])) { @@ -2642,7 +2599,7 @@ return true; } - if ($allmods = get_records("modules") ) { + if ($allmods = $DB->get_records("modules") ) { foreach ($allmods as $mod) { $modname = $mod->name; $modfile = "$CFG->dirroot/mod/$modname/backuplib.php"; @@ -2660,7 +2617,7 @@ $preferences->$var = true; $count++; // check that there are instances and we can back them up individually - if (!count_records('course_modules','course',$course->id,'module',$mod->id) || !function_exists($modbackupone)) { + if (!$DB->count_records('course_modules', array('course'=>$course->id,'module'=>$mod->id)) || !function_exists($modbackupone)) { continue; } $var = 'exists_one_'.$modname; @@ -2713,7 +2670,7 @@ $preferences->backup_name = required_param('backup_name',PARAM_FILE); $preferences->backup_unique_code = required_param('backup_unique_code'); - $roles = get_records('role', '', '', 'sortorder'); + $roles = $DB->get_records('role', null, 'sortorder'); $preferences->backuproleassignments = array(); foreach ($roles as $role) { if (optional_param('backupassignments_' . $role->shortname, 0, PARAM_INT)) { @@ -2725,14 +2682,15 @@ $SESSION->backupprefs[$course->id] = $preferences; } - /* Finds all related roles used in course, mod and blocks context + /** + * Finds all related roles used in course, mod and blocks context * @param object $preferences * @param object $course * @return array of role objects */ function backup_fetch_roles($preferences) { + global $CFG, $DB; - global $CFG; $contexts = array(); $roles = array(); @@ -2757,10 +2715,10 @@ // add all roles assigned at user context if ($preferences->backup_users) { - if ($users = get_records_sql("SELECT u.old_id, u.table_name,u.info - FROM {$CFG->prefix}backup_ids u - WHERE u.backup_code = '$preferences->backup_unique_code' AND - u.table_name = 'user'")) { + if ($users = $DB->get_records_sql("SELECT u.old_id, u.table_name,u.info + FROM {backup_ids} u + WHERE u.backup_code = ? AND + u.table_name = 'user'", array($preferences->backup_unique_code))) { foreach ($users as $user) { $context = get_context_instance(CONTEXT_USER, $user->old_id); $contexts[$context->id] = $context; @@ -2770,10 +2728,10 @@ } // add all roles assigned at block context - if ($courseblocks = get_records_sql("SELECT * - FROM {$CFG->prefix}block_instance - WHERE pagetype = '".PAGE_COURSE_VIEW."' - AND pageid = {$preferences->backup_course}")) { + if ($courseblocks = $DB->get_records_sql("SELECT * + FROM {block_instance} + WHERE pagetype = '".PAGE_COURSE_VIEW."' + AND pageid = ?", array($preferences->backup_course))) { foreach ($courseblocks as $courseblock) { @@ -2794,7 +2752,9 @@ return $roles; } - /* function to print xml for overrides */ + /** + * function to print xml for overrides + */ function write_role_overrides_xml($bf, $context, $startlevel) { fwrite ($bf, start_tag("ROLES_OVERRIDES", $startlevel, true)); if ($roles = get_roles_with_override_on_context($context)) { @@ -2824,7 +2784,9 @@ fwrite ($bf, end_tag("ROLES_OVERRIDES", $startlevel, true)); } - /* function to print xml for assignment */ + /** + * function to print xml for assignment + */ function write_role_assignments_xml($bf, $preferences, $context, $startlevel) { /// write role_assign code here fwrite ($bf, start_tag("ROLES_ASSIGNMENTS", $startlevel, true)); @@ -2869,7 +2831,7 @@ function backup_execute(&$preferences, &$errorstr) { - global $CFG; + global $CFG, $DB; $status = true; //Check for temp and backup and backup_unique_code directory diff --git a/question/backuplib.php b/question/backuplib.php index ad7c609a29..b24ec3776c 100644 --- a/question/backuplib.php +++ b/question/backuplib.php @@ -78,6 +78,8 @@ require_once("$CFG->libdir/questionlib.php"); function backup_question_category_context($bf, $contextid, $course) { + global $DB; + $status = true; $context = get_context_instance_by_id($contextid); $status = $status && fwrite($bf,start_tag("CONTEXT",4,true)); @@ -90,7 +92,7 @@ $status = $status && fwrite($bf,full_tag("LEVEL",5,false, 'course')); break; case CONTEXT_COURSECAT: - $thiscourse = get_record('course', 'id', $course); + $thiscourse = $DB->get_record('course', array('id'=>$course)); $cat = $thiscourse->category; $catno = 1; while($context->instanceid != $cat){ @@ -98,7 +100,7 @@ if ($cat ==0) { return false; } - $cat = get_field('course_categories', 'parent', 'id', $cat); + $cat = $DB->get_field('course_categories', 'parent', array('id'=>$cat)); } $status = $status && fwrite($bf,full_tag("LEVEL",5,false, 'coursecategory')); $status = $status && fwrite($bf,full_tag("COURSECATEGORYLEVEL",5,false, $catno)); @@ -114,8 +116,7 @@ } function backup_question_categories($bf,$preferences) { - - global $CFG; + global $CFG, $DB; $status = true; @@ -131,7 +132,7 @@ //Start category $status = $status && fwrite ($bf,start_tag("QUESTION_CATEGORY",3,true)); //Get category data from question_categories - $category = get_record ("question_categories","id",$cat->old_id); + $category = $DB->get_record ("question_categories", array("id"=>$cat->old_id)); //Print category contents $status = $status && fwrite($bf,full_tag("ID",4,false,$category->id)); $status = $status && fwrite($bf,full_tag("NAME",4,false,$category->name)); @@ -155,8 +156,7 @@ //This function backups all the questions in selected category and their //asociated data function backup_question($bf,$preferences,$category, $level = 4) { - - global $CFG, $QTYPES; + global $CFG, $QTYPES, $DB; $status = true; @@ -164,11 +164,11 @@ // (these are the ones which could be parents themselves) are backed up first. This // is important for the recoding of the parent field during the restore process // Only select questions with ids in backup_ids table - $questions = get_records_sql("SELECT q.* FROM {$CFG->prefix}backup_ids bk, {$CFG->prefix}question q ". - "WHERE q.category= $category AND ". - "bk.old_id=q.id AND ". - "bk.backup_code = {$preferences->backup_unique_code} ". - "ORDER BY parent ASC, id"); + $questions = $DB->get_records_sql("SELECT q.* FROM {backup_ids} bk, {question} q + WHERE q.category= ? AND + bk.old_id=q.id AND + bk.backup_code = ? + ORDER BY parent ASC, id", array($category, $preferences->backup_unique_code)); //If there are questions if ($questions) { //Write start tag @@ -220,12 +220,11 @@ //This function backups the answers data in some question types //(truefalse, shortanswer,multichoice,numerical,calculated) function question_backup_answers($bf,$preferences,$question, $level = 6) { - - global $CFG; + global $CFG, $DB; $status = true; - $answers = get_records("question_answers","question",$question,"id"); + $answers = $DB->get_records("question_answers", array("question"=>$question), "id"); //If there are answers if ($answers) { $status = $status && fwrite ($bf,start_tag("ANSWERS",$level,true)); @@ -246,12 +245,11 @@ //This function backups question_numerical_units from different question types function question_backup_numerical_units($bf,$preferences,$question,$level=7) { - - global $CFG; + global $CFG, $DB; $status = true; - $numerical_units = get_records("question_numerical_units","question",$question,"id"); + $numerical_units = $DB->get_records("question_numerical_units", array("question"=>$question), "id"); //If there are numericals_units if ($numerical_units) { $status = $status && fwrite ($bf,start_tag("NUMERICAL_UNITS",$level,true)); @@ -273,13 +271,12 @@ //This function backups dataset_definitions (via question_datasets) from different question types function question_backup_datasets($bf,$preferences,$question,$level=7) { - - global $CFG; + global $CFG, $DB; $status = true; //First, we get the used datasets for this question - $question_datasets = get_records("question_datasets","question",$question,"id"); + $question_datasets = $DB->get_records("question_datasets", array("question"=>$question), "id"); //If there are question_datasets if ($question_datasets) { $status = $status &&fwrite ($bf,start_tag("DATASET_DEFINITIONS",$level,true)); @@ -287,7 +284,7 @@ foreach ($question_datasets as $question_dataset) { $def = NULL; //Get dataset_definition - if ($def = get_record("question_dataset_definitions","id",$question_dataset->datasetdefinition)) {; + if ($def = $DB->get_record("question_dataset_definitions", array("id"=>$question_dataset->datasetdefinition))) {; $status = $status &&fwrite ($bf,start_tag("DATASET_DEFINITION",$level+1,true)); //Print question_dataset contents fwrite ($bf,full_tag("CATEGORY",$level+2,false,$def->category)); @@ -310,13 +307,12 @@ //This function backups datases_items from dataset_definitions function question_backup_dataset_items($bf,$preferences,$datasetdefinition,$level=9) { - - global $CFG; + global $CFG, $DB; $status = true; //First, we get the datasets_items for this dataset_definition - $dataset_items = get_records("question_dataset_items","definition",$datasetdefinition,"id"); + $dataset_items = $DB->get_records("question_dataset_items", array("definition"=>$datasetdefinition), "id"); //If there are dataset_items if ($dataset_items) { $status = $status &&fwrite ($bf,start_tag("DATASET_ITEMS",$level,true)); @@ -339,12 +335,11 @@ //Backup question_states contents (executed from backup_quiz_attempts) function backup_question_states ($bf,$preferences,$attempt, $level = 6) { - - global $CFG; + global $CFG, $DB; $status = true; - $question_states = get_records("question_states","attempt",$attempt,"id"); + $question_states = $DB->get_records("question_states", array("attempt"=>$attempt),"id"); //If there are states if ($question_states) { //Write start tag @@ -374,11 +369,11 @@ //Backup question_sessions contents (executed from backup_quiz_attempts) function backup_question_sessions ($bf,$preferences,$attempt, $level = 6) { - global $CFG; + global $CFG, $DB; $status = true; - $question_sessions = get_records("question_sessions","attemptid",$attempt,"id"); + $question_sessions = $DB->get_records("question_sessions", array("attemptid"=>$attempt), "id"); //If there are sessions if ($question_sessions) { //Write start tag (the funny name 'newest states' has historical reasons) @@ -405,54 +400,50 @@ //Returns an array of categories id function question_category_ids_by_backup ($backup_unique_code) { + global $CFG, $DB; - global $CFG; - - return get_records_sql ("SELECT a.old_id, a.backup_code - FROM {$CFG->prefix}backup_ids a - WHERE a.backup_code = '$backup_unique_code' AND - a.table_name = 'question_categories'"); + return $DB->get_records_sql("SELECT a.old_id, a.backup_code + FROM {backup_ids} a + WHERE a.backup_code = ? AND + a.table_name = 'question_categories'", array($backup_unique_code)); } function question_ids_by_backup ($backup_unique_code) { + global $CFG, $DB; - global $CFG; - - return get_records_sql ("SELECT old_id, backup_code - FROM {$CFG->prefix}backup_ids - WHERE backup_code = '$backup_unique_code' AND - table_name = 'question'"); + return $DB->get_records_sql("SELECT old_id, backup_code + FROM {backup_ids} + WHERE backup_code = ? AND + table_name = 'question'", array($backup_unique_code)); } //Function for inserting question and category ids into db that are all called from // quiz_check_backup_mods during execution of backup_check.html - function question_insert_c_and_q_ids_for_course($coursecontext, $backup_unique_code){ - global $CFG; + global $CFG, $DB; // First, all categories from this course's context. - $status = execute_sql("INSERT INTO {$CFG->prefix}backup_ids - (backup_code, table_name, old_id, info) - SELECT '$backup_unique_code', 'question_categories', qc.id, 'course' - FROM {$CFG->prefix}question_categories qc - WHERE qc.contextid = {$coursecontext->id}", false); + $status = $DB->execute("INSERT INTO {backup_ids} (backup_code, table_name, old_id, info) + SELECT '$backup_unique_code', 'question_categories', qc.id, 'course' + FROM {question_categories} qc + WHERE qc.contextid = ?", array($coursecontext->id)); $status = $status && question_insert_q_ids($backup_unique_code, 'course'); return $status; } - /* + + /** * Insert all question ids for categories whose ids have already been inserted in the backup_ids table * Insert code to identify categories to later insert all question ids later eg. course, quiz or other module name. */ function question_insert_q_ids($backup_unique_code, $info){ global $CFG; //put the ids of the questions from all these categories into the db. - $status = execute_sql("INSERT INTO {$CFG->prefix}backup_ids - (backup_code, table_name, old_id, info) - SELECT '$backup_unique_code', 'question', q.id, '' - FROM {$CFG->prefix}question q, {$CFG->prefix}backup_ids bk - WHERE q.category = bk.old_id AND bk.table_name = 'question_categories' - AND bk.info = '$info' - AND bk.backup_code = '$backup_unique_code'", false); + $status = $DB->execute("INSERT INTO {backup_ids} (backup_code, table_name, old_id, info) + SELECT '$backup_unique_code', 'question', q.id, '' + FROM {question} q, {backup_ids} bk + WHERE q.category = bk.old_id AND bk.table_name = 'question_categories' + AND bk.info = ? + AND bk.backup_code = ?", array($info, $backup_unique_code)); return $status; } @@ -471,24 +462,23 @@ } if ($cmcontexts){ - $status = $status && execute_sql("INSERT INTO {$CFG->prefix}backup_ids - (backup_code, table_name, old_id, info) - SELECT '$backup_unique_code', 'question_categories', qc.id, '$modulename' - FROM {$CFG->prefix}question_categories qc - WHERE qc.contextid IN (".join(array_keys($cmcontexts), ', ').")", false); + $status = $status && $DB->execute("INSERT INTO {backup_ids} (backup_code, table_name, old_id, info) + SELECT '$backup_unique_code', 'question_categories', qc.id, '$modulename' + FROM {question_categories} qc + WHERE qc.contextid IN (".join(array_keys($cmcontexts), ', ').")"); } $status = $status && question_insert_q_ids($backup_unique_code, $modulename); return $status; } function question_insert_site_file_names($course, $backup_unique_code){ - global $QTYPES, $CFG; + global $QTYPES, $CFG, $DB; $status = true; $questionids = question_ids_by_backup ($backup_unique_code); $urls = array(); if ($questionids){ foreach ($questionids as $question_bk){ - $question = get_record('question', 'id', $question_bk->old_id); + $question = $DB->get_record('question', array('id'=>$question_bk->old_id)); $QTYPES[$question->qtype]->get_question_options($question); $urls = array_merge_recursive($urls, $QTYPES[$question->qtype]->find_file_links($question, SITEID)); } @@ -500,8 +490,8 @@ $inserturl->backup_code = $backup_unique_code; $inserturl->file_type = 'site'; $url = clean_param($url, PARAM_PATH); - $inserturl->path = addslashes($url); - $status = $status && insert_record('backup_files', $inserturl); + $inserturl->path = $url; + $status = $status && $DB->insert_record('backup_files', $inserturl); } else { notify(get_string('linkedfiledoesntexist', 'question', $url)); } diff --git a/question/type/multianswer/db/upgrade.php b/question/type/multianswer/db/upgrade.php index 1ae2413370..d3b38892d2 100644 --- a/question/type/multianswer/db/upgrade.php +++ b/question/type/multianswer/db/upgrade.php @@ -45,20 +45,21 @@ function xmldb_qtype_multianswer_upgrade($oldversion=0) { * that have been moved between categories will be in the wrong category, This code fixes these up. */ function question_multianswer_fix_subquestion_parents_and_categories() { - global $CFG; + global $CFG, $DB; $result = true; - $rs = get_recordset_sql('SELECT q.id, q.category, qma.sequence FROM ' . $CFG->prefix . - 'question q JOIN ' . $CFG->prefix . 'question_multianswer qma ON q.id = qma.question'); + $rs = $DB->get_recordset_sql('SELECT q.id, q.category, qma.sequence + FROM {question} q JOIN {question_multianswer} qma ON q.id = qma.question'); if ($rs) { - while ($q = rs_fetch_next_record($rs)) { + foreach ($rs as $q) { if (!empty($q->sequence)) { - $result = $result && execute_sql('UPDATE ' . $CFG->prefix . 'question' . - ' SET parent = ' . $q->id . ', category = ' . $q->category . - ' WHERE id IN (' . $q->sequence . ') AND parent <> 0'); + $result = $result && $DB->execute("UPDATE {question} + SET parent = ?, category = ? + WHERE id IN ($q->sequence) AND parent <> 0", + array($q->id, $q->category)); } } - rs_close($rs); + $rs->close(); } else { $result = false; } -- 2.39.5