mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00
Now readjusting course_modules instance and course modinfo
os implemented and working
This commit is contained in:
parent
d6d7461bd9
commit
5146bf9f54
2 changed files with 93 additions and 8 deletions
|
@ -23,6 +23,19 @@
|
||||||
error("Site not found!");
|
error("Site not found!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Checks for the required files/functions to restore every module
|
||||||
|
//and include them
|
||||||
|
if ($allmods = get_records("modules") ) {
|
||||||
|
foreach ($allmods as $mod) {
|
||||||
|
$modname = $mod->name;
|
||||||
|
$modfile = "$mods_home/$modname/restorelib.php";
|
||||||
|
//If file exists and we have selected to restore that type of module
|
||||||
|
if ((file_exists($modfile)) and ($restore->mods[$modname]->restore)) {
|
||||||
|
include_once($modfile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Start the main table
|
//Start the main table
|
||||||
echo "<table cellpadding=5>";
|
echo "<table cellpadding=5>";
|
||||||
echo "<tr><td>";
|
echo "<tr><td>";
|
||||||
|
@ -183,12 +196,22 @@
|
||||||
|
|
||||||
//Now create log entries as needed
|
//Now create log entries as needed
|
||||||
if ($status and ($restore->logs)) {
|
if ($status and ($restore->logs)) {
|
||||||
echo "<li>Creating Log Entries <b>(not implemented)</b>. Execute after everything...";
|
echo "<li>Creating Log Entries <b>(not implemented!!)</b>";
|
||||||
}
|
}
|
||||||
|
|
||||||
//Now, if all is OK, adjust the instance field in course_modules !!
|
//Now, if all is OK, adjust the instance field in course_modules !!
|
||||||
|
if ($status) {
|
||||||
|
echo "<li>Checking Instances";
|
||||||
|
$status = restore_check_instances($restore);
|
||||||
|
}
|
||||||
|
|
||||||
//Now if all is OK, update course modinfo field !!
|
//Now if all is OK, update course modinfo field !!
|
||||||
|
if ($status) {
|
||||||
|
echo "<li>Checking Course";
|
||||||
|
rebuild_course_cache($restore->course_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Cleanup temps (files and db)
|
||||||
|
|
||||||
//End the main ul
|
//End the main ul
|
||||||
echo "</ul>";
|
echo "</ul>";
|
||||||
|
|
|
@ -368,13 +368,18 @@
|
||||||
$course_module->deleted = $mod->deleted;
|
$course_module->deleted = $mod->deleted;
|
||||||
$course_module->score = $mod->score;
|
$course_module->score = $mod->score;
|
||||||
$course_module->visible = $mod->visible;
|
$course_module->visible = $mod->visible;
|
||||||
//NOTE: The instance is calculated and updaed in db in the
|
$course_module->instance = null;
|
||||||
|
//NOTE: The instance (new) is calculated and updated in db in the
|
||||||
// final step of the restore. We don't know it yet.
|
// final step of the restore. We don't know it yet.
|
||||||
|
//print_object($course_module); //Debug
|
||||||
//Save it to db
|
//Save it to db
|
||||||
$newidmod = insert_record("course_modules",$course_module);
|
$newidmod = insert_record("course_modules",$course_module);
|
||||||
if ($newidmod) {
|
if ($newidmod) {
|
||||||
//save old and new module id
|
//save old and new module id
|
||||||
backup_putid ($restore->backup_unique_code,"course_modules",$keym,$newidmod);
|
//In the info field, we save the original instance of the module
|
||||||
|
//to use it later
|
||||||
|
backup_putid ($restore->backup_unique_code,"course_modules",
|
||||||
|
$keym,$newidmod,$mod->instance);
|
||||||
} else {
|
} else {
|
||||||
$status = false;
|
$status = false;
|
||||||
}
|
}
|
||||||
|
@ -665,14 +670,69 @@
|
||||||
//Now, if we have anything in info, we have to restore that mods
|
//Now, if we have anything in info, we have to restore that mods
|
||||||
//from backup_ids (calling every mod restore function)
|
//from backup_ids (calling every mod restore function)
|
||||||
if ($info) {
|
if ($info) {
|
||||||
print_object($info);
|
//Iterate over each module
|
||||||
|
foreach ($info as $mod) {
|
||||||
|
$modrestore = $mod->modtype."_restore_mods";
|
||||||
|
if (function_exists($modrestore)) {
|
||||||
|
$status = $modrestore($mod,$restore);
|
||||||
|
} else {
|
||||||
|
//Something was wrong. Function should exist.
|
||||||
|
$status = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$status = false;
|
||||||
|
}
|
||||||
|
return $status;
|
||||||
|
}
|
||||||
|
|
||||||
|
//This function adjusts the instance field into course_modules. It's executed after
|
||||||
|
//modules restore. There, we KNOW the new instance id !!
|
||||||
|
function restore_check_instances($restore) {
|
||||||
|
|
||||||
|
global $CFG;
|
||||||
|
|
||||||
|
$status = true;
|
||||||
|
|
||||||
|
//We are going to iterate over each course_module saved in backup_ids
|
||||||
|
$course_modules = get_records_sql("SELECT new_id,info as instance
|
||||||
|
FROM {$CFG->prefix}backup_ids
|
||||||
|
WHERE backup_code = '$restore->backup_unique_code' AND
|
||||||
|
table_name = 'course_modules'");
|
||||||
|
if ($course_modules) {
|
||||||
|
foreach($course_modules as $cm) {
|
||||||
|
//Now we are going to the REAL course_modules to get its type (field module)
|
||||||
|
$module = get_record("course_modules","id",$cm->new_id);
|
||||||
|
if ($module) {
|
||||||
|
//We know the module type id. Get the name from modules
|
||||||
|
$type = get_record("modules","id",$module->module);
|
||||||
|
if ($type) {
|
||||||
|
//We know the type name and the old_id. Get its new_id
|
||||||
|
//from backup_ids. It's the instance !!!
|
||||||
|
$instance = get_record("backup_ids","backup_code",$restore->backup_unique_code,
|
||||||
|
"table_name",$type->name,
|
||||||
|
"old_id",$cm->instance);
|
||||||
|
if ($instance) {
|
||||||
|
//We have the new instance, so update the record in course_modules
|
||||||
|
$module->instance = $instance->new_id;
|
||||||
|
//print_object ($module); //Debug
|
||||||
|
$status = update_record("course_modules",$module);
|
||||||
|
} else {
|
||||||
|
$status = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$status = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$status = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$status = false;
|
$status = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $status;
|
|
||||||
|
|
||||||
|
return $status;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=====================================================================================
|
//=====================================================================================
|
||||||
|
@ -1213,8 +1273,8 @@ print_object($info);
|
||||||
// echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."<br>\n"; //Debug
|
// echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."<br>\n"; //Debug
|
||||||
//echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName."><br>\n"; //Debug
|
//echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName."><br>\n"; //Debug
|
||||||
//Acumulate data to info (content + close tag)
|
//Acumulate data to info (content + close tag)
|
||||||
//Reconvert it to utf & htmlchars and trim to generate xml data
|
//Reconvert: strip htmlchars again and trim to generate xml data
|
||||||
$this->temp .= utf8_encode(htmlspecialchars(trim($this->content)))."</".$tagName.">";
|
$this->temp .= htmlspecialchars(trim($this->content))."</".$tagName.">";
|
||||||
//If we've finished a mod, xmlize it an save to db
|
//If we've finished a mod, xmlize it an save to db
|
||||||
if (($this->level == 4) and ($tagName == "MOD")) {
|
if (($this->level == 4) and ($tagName == "MOD")) {
|
||||||
//Prepend XML standard header to info gathered
|
//Prepend XML standard header to info gathered
|
||||||
|
@ -1238,7 +1298,9 @@ print_object($info);
|
||||||
backup_putid($this->preferences->backup_unique_code,$mod_type,$mod_id,
|
backup_putid($this->preferences->backup_unique_code,$mod_type,$mod_id,
|
||||||
null,$sla_mod_temp);
|
null,$sla_mod_temp);
|
||||||
//Create returning info
|
//Create returning info
|
||||||
$this->info[] = array(id => $mod_id,modtype => $mod_type);
|
$ret_info->id = $mod_id;
|
||||||
|
$ret_info->modtype = $mod_type;
|
||||||
|
$this->info[] = $ret_info;
|
||||||
}
|
}
|
||||||
//Reset info to empty
|
//Reset info to empty
|
||||||
$this->temp = "";
|
$this->temp = "";
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue