id) (CL,pk->id,fk->glossaryid) // | | // | | // | | // glossary_entries -------------- glossary_entries_categories // (UL,pk->id, fk->glossaryid, files) (UL, [pk->categoryid,entryid] // // Meaning: pk->primary key field of the table // fk->foreign key to link with parent // nt->nested field (recursive data) // CL->course level info // UL->user level info // files->table may have files) // //----------------------------------------------------------- //This function executes all the restore procedure about this mod function glossary_restore_mods($mod,$restore) { global $CFG; $status = true; //Get record from backup_ids $data = backup_getid($restore->backup_unique_code,$mod->modtype,$mod->id); if ($data) { //Now get completed xmlized object $info = $data->info; //traverse_xmlize($info); //Debug //print_object ($GLOBALS['traverse_array']); //Debug //$GLOBALS['traverse_array']=""; //Debug //Now, build the glossary record structure $glossary->course = $restore->course_id; $glossary->name = backup_todb($info['MOD']['#']['NAME']['0']['#']); $glossary->intro = backup_todb($info['MOD']['#']['INTRO']['0']['#']); $glossary->studentcanpost = backup_todb($info['MOD']['#']['STUDENTCANPOST']['0']['#']); $glossary->allowduplicatedentries = backup_todb($info['MOD']['#']['ALLOWDUPLICATEDENTRIES']['0']['#']); $glossary->displayformat = backup_todb($info['MOD']['#']['DISPLAYFORMAT']['0']['#']); $glossary->mainglossary = backup_todb($info['MOD']['#']['MAINGLOSSARY']['0']['#']); $glossary->showspecial = backup_todb($info['MOD']['#']['SHOWSPECIAL']['0']['#']); $glossary->showalphabet = backup_todb($info['MOD']['#']['SHOWALPHABET']['0']['#']); $glossary->showall = backup_todb($info['MOD']['#']['SHOWALL']['0']['#']); $glossary->allowcomments = backup_todb($info['MOD']['#']['ALLOWCOMMENTS']['0']['#']); $glossary->timecreated = backup_todb($info['MOD']['#']['TIMECREATED']['0']['#']); $glossary->timemodified = backup_todb($info['MOD']['#']['TIMEMODIFIED']['0']['#']); //The structure is equal to the db, so insert the glossary $newid = insert_record ("glossary",$glossary); //Do some output echo ""; } else { $status = false; } return $status; } //This function restores the glossary_entries function glossary_entries_restore_mods($old_glossary_id,$new_glossary_id,$info,$restore) { global $CFG; $status = true; //Get the entries array $entries = $info['MOD']['#']['ENTRIES']['0']['#']['ENTRY']; //Iterate over entries for($i = 0; $i < sizeof($entries); $i++) { $ent_info = $entries[$i]; //traverse_xmlize($ent_info); //Debug //print_object ($GLOBALS['traverse_array']); //Debug //$GLOBALS['traverse_array']=""; //Debug //We'll need this later!! $oldid = backup_todb($ent_info['#']['ID']['0']['#']); $olduserid = backup_todb($ent_info['#']['USERID']['0']['#']); //Now, build the GLOSSARY_ENTRIES record structure $entry->glossaryid = $new_glossary_id; $entry->userid = backup_todb($ent_info['#']['USERID']['0']['#']); $entry->concept = backup_todb($ent_info['#']['CONCEPT']['0']['#']); $entry->definition = backup_todb($ent_info['#']['DEFINITION']['0']['#']); $entry->format = backup_todb($ent_info['#']['FORMAT']['0']['#']); $entry->attachment = backup_todb($ent_info['#']['ATTACHMENT']['0']['#']); $entry->sourceglossaryid = backup_todb($ent_info['#']['SOURCEGLOSSARYID']['0']['#']); $entry->timecreated = backup_todb($ent_info['#']['TIMECREATED']['0']['#']); $entry->timemodified = backup_todb($ent_info['#']['TIMEMODIFIED']['0']['#']); $entry->teacherentry = backup_todb($ent_info['#']['TEACHERENTRY']['0']['#']); //We have to recode the userid field $user = backup_getid($restore->backup_unique_code,"user",$entry->userid); if ($user) { $entry->userid = $user->new_id; } //We have to recode the sourceglossaryid field $source = backup_getid($restore->backup_unique_code,"glossary",$entry->sourceglossaryid); if ($source) { $entry->sourceglossaryid = $source->new_id; } //If it's a teacher entry or userinfo was selected, restore the entry if ($entry->teacherentry or $restore->mods['glossary']->userinfo) { //The structure is equal to the db, so insert the glossary_entries $newid = insert_record ("glossary_entries",$entry); //Do some output if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { echo "
"; } backup_flush(300); } if ($newid) { //We have the newid, update backup_ids backup_putid($restore->backup_unique_code,"glossary_entries",$oldid,$newid); //Now copy moddata associated files if needed if ($entry->attachment) { $status = glossary_restore_files ($old_glossary_id, $new_glossary_id, $oldid, $newid, $restore); } } else { $status = false; } } } return $status; } //This function restores the glossary_categories function glossary_categories_restore_mods($old_glossary_id,$new_glossary_id,$info,$restore) { global $CFG; $status = true; //Get the categories array $categories = $info['MOD']['#']['CATEGORIES']['0']['#']['CATEGORY']; //Iterate over categories for($i = 0; $i < sizeof($categories); $i++) { $cat_info = $categories[$i]; //traverse_xmlize($cat_info); //Debug //print_object ($GLOBALS['traverse_array']); //Debug //$GLOBALS['traverse_array']=""; //Debug //We'll need this later!! $oldid = backup_todb($cat_info['#']['ID']['0']['#']); //Now, build the GLOSSARY_CATEGORIES record structure $category->glossaryid = $new_glossary_id; $category->name = backup_todb($cat_info['#']['NAME']['0']['#']); $newid = insert_record ("glossary_categories",$category); //Do some output if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { echo "
"; } backup_flush(300); } if ($newid) { //We have the newid, update backup_ids backup_putid($restore->backup_unique_code,"glossary_categories",$oldid,$newid); //Now restore glossary_entries_categories $status = glossary_entries_categories_restore_mods($old,$newid,$cat_info,$restore); } else { $status = false; } } return $status; } //This function restores the glossary_entries_categories function glossary_entries_categories_restore_mods($old_category_id,$new_category_id,$info,$restore) { global $CFG; $status = true; //Get the entryids array $entryids = $info['#']['ENTRIES']['0']['#']['ENTRY']; //Iterate over entryids for($i = 0; $i < sizeof($entryids); $i++) { $ent_info = $entryids[$i]; //traverse_xmlize($ent_info); //Debug //print_object ($GLOBALS['traverse_array']); //Debug //$GLOBALS['traverse_array']=""; //Debug //Now, build the GLOSSARY_ENTRIES_CATEGORIES record structure $entry_category->categoryid = $new_category_id; $entry_category->entryid = backup_todb($ent_info['#']['ENTRYID']['0']['#']); //We have to recode the entryid field $entry = backup_getid($restore->backup_unique_code,"glossary_entries",$entry_category->entryid); if ($entry) { $entry_category->entryid = $entry->new_id; } $newid = insert_record ("glossary_entries_categories",$entry_category); //Do some output if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { echo "
"; } backup_flush(300); } if (!$newid) { $status = false; } } return $status; } //This function copies the glossary related info from backup temp dir to course moddata folder, //creating it if needed and recoding everything (glossary id and entry id) function glossary_restore_files ($oldgloid, $newgloid, $oldentryid, $newentryid, $restore) { global $CFG; $status = true; $todo = false; $moddata_path = ""; $glossary_path = ""; $temp_path = ""; //First, we check to "course_id" exists and create is as necessary //in CFG->dataroot $dest_dir = $CFG->dataroot."/".$restore->course_id; $status = check_dir_exists($dest_dir,true); //Now, locate course's moddata directory $moddata_path = $CFG->dataroot."/".$restore->course_id."/".$CFG->moddata; //Check it exists and create it $status = check_dir_exists($moddata_path,true); //Now, locate glossary directory if ($status) { $glossary_path = $moddata_path."/glossary"; //Check it exists and create it $status = check_dir_exists($glossary_path,true); } //Now locate the temp dir we are restoring from if ($status) { $temp_path = $CFG->dataroot."/temp/backup/".$restore->backup_unique_code. "/moddata/glossary/".$oldgloid."/".$oldentryid; //Check it exists if (is_dir($temp_path)) { $todo = true; } } //If todo, we create the neccesary dirs in course moddata/glossary if ($status and $todo) { //First this glossary id $this_glossary_path = $glossary_path."/".$newgloid; $status = check_dir_exists($this_glossary_path,true); //Now this entry id $entry_glossary_path = $this_glossary_path."/".$newentryid; //And now, copy temp_path to entry_glossary_path $status = backup_copy_file($temp_path, $entry_glossary_path); } return $status; } ?>