mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 00:46:50 +02:00
Now scheduled backup supports new blocks.
Moved blocks code to library. Fixed a missing global preventing restore to work.
This commit is contained in:
parent
00363c7033
commit
94df8a48c3
4 changed files with 72 additions and 53 deletions
|
@ -28,7 +28,8 @@ Now I show the specific detailed status of every item in the process:
|
||||||
(in backup process).
|
(in backup process).
|
||||||
18. TODO: If the course hasn't users and the importer is a teacher, make him
|
18. TODO: If the course hasn't users and the importer is a teacher, make him
|
||||||
teacher in the restored course.
|
teacher in the restored course.
|
||||||
19. TODO: Move blocks code to libraries and use it in a standard way.
|
19. DONE: Move blocks code to libraries and use it in a standard way. Now new
|
||||||
|
blocks are supported by scheduled backup.
|
||||||
20. TODO: Review the lesson module completely! Check the upgrade process to
|
20. TODO: Review the lesson module completely! Check the upgrade process to
|
||||||
mimic it.
|
mimic it.
|
||||||
21. TODO: Review the workshop module completely! Check the upgrade process to
|
21. TODO: Review the workshop module completely! Check the upgrade process to
|
||||||
|
|
|
@ -558,6 +558,12 @@ function schedule_backup_course_execute($preferences,$starttime = 0) {
|
||||||
$status = backup_course_start($backup_file,$preferences);
|
$status = backup_course_start($backup_file,$preferences);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Block info
|
||||||
|
if ($status) {
|
||||||
|
schedule_backup_log($starttime,$preferences->backup_course," blocks info");
|
||||||
|
$status = backup_course_blocks($backup_file,$preferences);
|
||||||
|
}
|
||||||
|
|
||||||
//Section info
|
//Section info
|
||||||
if ($status) {
|
if ($status) {
|
||||||
schedule_backup_log($starttime,$preferences->backup_course," sections info");
|
schedule_backup_log($starttime,$preferences->backup_course," sections info");
|
||||||
|
|
|
@ -120,60 +120,12 @@
|
||||||
|
|
||||||
//Bring back the course blocks
|
//Bring back the course blocks
|
||||||
if($status) {
|
if($status) {
|
||||||
echo '<li>'.get_string('creatingblocks');
|
|
||||||
//If we are deleting and bringing into a course or making a new course, same situation
|
//If we are deleting and bringing into a course or making a new course, same situation
|
||||||
if($restore->restoreto == 0 || $restore->restoreto == 2) {
|
if($restore->restoreto == 0 || $restore->restoreto == 2) {
|
||||||
delete_records('block_instance', 'pageid', $course_header->course_id, 'pagetype', MOODLE_PAGE_COURSE);
|
echo '<li>'.get_string('creatingblocks');
|
||||||
if (empty($info->backup_block_format)) { // This is a backup from Moodle < 1.5
|
if (!$status = restore_create_blocks($restore, $xml_file)) {
|
||||||
if (empty($course_header->blockinfo)) {
|
notify("Error while creating the course blocks");
|
||||||
// Looks like it's from Moodle < 1.3. Let's give the course default blocks...
|
|
||||||
$newpage = page_create_object(MOODLE_PAGE_COURSE, $course_header->course_id);
|
|
||||||
blocks_repopulate_page($newpage);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
// We just have a blockinfo field, this is a legacy 1.4 or 1.3 backup
|
|
||||||
$blockrecords = get_records_select('block', '', '', 'name, id');
|
|
||||||
$temp_blocks_l = array();
|
|
||||||
$temp_blocks_r = array();
|
|
||||||
@list($temp_blocks_l, $temp_blocks_r) = explode(':', $course_header->blockinfo);
|
|
||||||
$temp_blocks = array(BLOCK_POS_LEFT => explode(',', $temp_blocks_l), BLOCK_POS_RIGHT => explode(',', $temp_blocks_r));
|
|
||||||
foreach($temp_blocks as $blockposition => $blocks) {
|
|
||||||
$blockweight = 0;
|
|
||||||
foreach($blocks as $blockname) {
|
|
||||||
if(!isset($blockrecords[$blockname])) {
|
|
||||||
// We don't know anything about this block!
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
$blockinstance = new stdClass;
|
|
||||||
// Remove any - prefix before doing the name-to-id mapping
|
|
||||||
if(substr($blockname, 0, 1) == '-') {
|
|
||||||
$blockname = substr($blockname, 1);
|
|
||||||
$blockinstance->visible = 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$blockinstance->visible = 1;
|
|
||||||
}
|
|
||||||
$blockinstance->blockid = $blockrecords[$blockname]->id;
|
|
||||||
$blockinstance->pageid = $course_header->course_id;
|
|
||||||
$blockinstance->pagetype = MOODLE_PAGE_COURSE;
|
|
||||||
$blockinstance->position = $blockposition;
|
|
||||||
$blockinstance->weight = $blockweight;
|
|
||||||
if(!$status = insert_record('block_instance', $blockinstance)) {
|
|
||||||
notify('Error while creating the course blocks');
|
|
||||||
}
|
|
||||||
++$blockweight;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if($info->backup_block_format == 'instances') {
|
|
||||||
if(!$status = restore_create_block_instances($restore,$xml_file)) {
|
|
||||||
notify('Error while creating the course blocks');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//Otherwise we are adding the backup into an existing course; do nothing
|
|
||||||
else {
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -583,6 +583,66 @@
|
||||||
return $status;
|
return $status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//This function creates all the block stuff when restoring courses
|
||||||
|
//It calls selectively to restore_create_block_instances() for 1.5
|
||||||
|
//and above backups. Upwards compatible with old blocks.
|
||||||
|
function restore_create_blocks($restore, $backup_block_format, $blockinfo, $xml_file) {
|
||||||
|
|
||||||
|
$status = true;
|
||||||
|
|
||||||
|
delete_records('block_instance', 'pageid', $restore->course_id, 'pagetype', MOODLE_PAGE_COURSE);
|
||||||
|
if (empty($backup_block_format)) { // This is a backup from Moodle < 1.5
|
||||||
|
if (empty($blockinfo)) {
|
||||||
|
echo " from pre 1.3"; //debug
|
||||||
|
// Looks like it's from Moodle < 1.3. Let's give the course default blocks...
|
||||||
|
$newpage = page_create_object(MOODLE_PAGE_COURSE, $restore->course_id);
|
||||||
|
blocks_repopulate_page($newpage);
|
||||||
|
} else {
|
||||||
|
echo " from 1.3-1.4"; //debug
|
||||||
|
// We just have a blockinfo field, this is a legacy 1.4 or 1.3 backup
|
||||||
|
$blockrecords = get_records_select('block', '', '', 'name, id');
|
||||||
|
$temp_blocks_l = array();
|
||||||
|
$temp_blocks_r = array();
|
||||||
|
@list($temp_blocks_l, $temp_blocks_r) = explode(':', $blockinfo);
|
||||||
|
$temp_blocks = array(BLOCK_POS_LEFT => explode(',', $temp_blocks_l), BLOCK_POS_RIGHT => explode(',', $temp_blocks_r));
|
||||||
|
foreach($temp_blocks as $blockposition => $blocks) {
|
||||||
|
$blockweight = 0;
|
||||||
|
foreach($blocks as $blockname) {
|
||||||
|
if(!isset($blockrecords[$blockname])) {
|
||||||
|
// We don't know anything about this block!
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$blockinstance = new stdClass;
|
||||||
|
// Remove any - prefix before doing the name-to-id mapping
|
||||||
|
if(substr($blockname, 0, 1) == '-') {
|
||||||
|
$blockname = substr($blockname, 1);
|
||||||
|
$blockinstance->visible = 0;
|
||||||
|
} else {
|
||||||
|
$blockinstance->visible = 1;
|
||||||
|
}
|
||||||
|
$blockinstance->blockid = $blockrecords[$blockname]->id;
|
||||||
|
$blockinstance->pageid = $restore->course_id;
|
||||||
|
$blockinstance->pagetype = MOODLE_PAGE_COURSE;
|
||||||
|
$blockinstance->position = $blockposition;
|
||||||
|
$blockinstance->weight = $blockweight;
|
||||||
|
if(!$status = insert_record('block_instance', $blockinstance)) {
|
||||||
|
$status = false;
|
||||||
|
}
|
||||||
|
++$blockweight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if($info->backup_block_format == 'instances') {
|
||||||
|
echo " from 1.5"; //debug
|
||||||
|
if(!$status = restore_create_block_instances($restore,$xml_file)) {
|
||||||
|
$status = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $status;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//This function creates all the block_instances from xml when restoring in a
|
//This function creates all the block_instances from xml when restoring in a
|
||||||
//new course
|
//new course
|
||||||
function restore_create_block_instances($restore,$xml_file) {
|
function restore_create_block_instances($restore,$xml_file) {
|
||||||
|
@ -3168,7 +3228,7 @@
|
||||||
|
|
||||||
function restore_precheck($id,$file,$silent=false) {
|
function restore_precheck($id,$file,$silent=false) {
|
||||||
|
|
||||||
global $CFG;
|
global $CFG, $SESSION;
|
||||||
|
|
||||||
//Prepend dataroot to variable to have the absolute path
|
//Prepend dataroot to variable to have the absolute path
|
||||||
$file = $CFG->dataroot."/".$file;
|
$file = $CFG->dataroot."/".$file;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue