MDL-23479 backup - fix files/tags/comments/links backup & restore
(thanks Pigui for adapting module core so quickly)
This commit is contained in:
@@ -59,9 +59,9 @@ class backup_wiki_activity_structure_step extends backup_activity_structure_step
|
||||
|
||||
$version = new backup_nested_element('version', array('id'), array('content', 'contentformat', 'version', 'timecreated', 'userid'));
|
||||
|
||||
$comments = new backup_nested_element('comments');
|
||||
$tags = new backup_nested_element('tags');
|
||||
|
||||
$comment = new backup_nested_element('comment', array('id'), array('contextid', 'commentarea', 'content', 'format', 'userid', 'timecreated'));
|
||||
$tag = new backup_nested_element('tag', array('id'), array('name', 'rawname'));
|
||||
|
||||
// Build the tree
|
||||
$wiki->add_child($subwikis);
|
||||
@@ -79,8 +79,8 @@ class backup_wiki_activity_structure_step extends backup_activity_structure_step
|
||||
$page->add_child($versions);
|
||||
$versions->add_child($version);
|
||||
|
||||
$page->add_child($comments);
|
||||
$comments->add_child($comment);
|
||||
$page->add_child($tags);
|
||||
$tags->add_child($tag);
|
||||
|
||||
// Define sources
|
||||
$wiki->set_source_table('wiki', array('id' => backup::VAR_ACTIVITYID));
|
||||
@@ -100,7 +100,13 @@ class backup_wiki_activity_structure_step extends backup_activity_structure_step
|
||||
|
||||
$version->set_source_table('wiki_versions', array('pageid' => backup::VAR_PARENTID));
|
||||
|
||||
$comment->set_source_table('comments', array('itemid' => backup::VAR_PARENTID));
|
||||
$tag->set_source_sql('SELECT t.id, t.name, t.rawname
|
||||
FROM {tag} t
|
||||
JOIN {tag_instance} ti ON ti.tagid = t.id
|
||||
WHERE ti.itemtype = ?
|
||||
AND ti.itemid = ?', array(
|
||||
backup_helper::is_sqlparam('wiki_page'),
|
||||
backup::VAR_PARENTID));
|
||||
}
|
||||
|
||||
// Define id annotations
|
||||
@@ -112,11 +118,9 @@ class backup_wiki_activity_structure_step extends backup_activity_structure_step
|
||||
|
||||
$version->annotate_ids('user', 'userid');
|
||||
|
||||
$comment->annotate_ids('user', 'userid');
|
||||
|
||||
// Define file annotations
|
||||
$wiki->annotate_files('mod_wiki', 'intro', null); // This file area hasn't itemid
|
||||
//TODO: where are the attachments? (skodak)
|
||||
$page->annotate_files('mod_wiki', 'attachments', 'id'); // This file area hasn't itemid
|
||||
|
||||
// Return the root element (wiki), wrapped into standard activity structure
|
||||
return $this->prepare_activity_structure($wiki);
|
||||
|
||||
@@ -67,8 +67,9 @@ class restore_wiki_activity_task extends restore_activity_task {
|
||||
static public function define_decode_rules() {
|
||||
$rules = array();
|
||||
|
||||
$rules[] = new restore_decode_rule('WIKIVIEWBYID', '/mod/wiki/view.php?id=$1', 'course_module');
|
||||
$rules[] = new restore_decode_rule('WIKIINDEX', '/mod/wiki/index.php?id=$1', 'course');
|
||||
$rules[] = new restore_decode_rule('WIKIVIEWBYID', '/mod/wiki/view.php?id=$1', 'course_module');
|
||||
$rules[] = new restore_decode_rule('WIKIPAGEBYID', '/mod/wiki/view.php?pageid=$1', 'wiki_page');
|
||||
|
||||
return $rules;
|
||||
|
||||
|
||||
@@ -41,9 +41,9 @@ class restore_wiki_activity_structure_step extends restore_activity_structure_st
|
||||
$paths[] = new restore_path_element('wiki_subwiki', '/activity/wiki/subwikis/subwiki');
|
||||
$paths[] = new restore_path_element('wiki_page', '/activity/wiki/subwikis/subwiki/pages/page');
|
||||
$paths[] = new restore_path_element('wiki_version', '/activity/wiki/subwikis/subwiki/pages/page/versions/version');
|
||||
$paths[] = new restore_path_element('wiki_tag', '/activity/wiki/subwikis/subwiki/pages/page/tags/tag');
|
||||
$paths[] = new restore_path_element('wiki_synonym', '/activity/wiki/subwikis/subwiki/synonyms/synonym');
|
||||
$paths[] = new restore_path_element('wiki_link', '/activity/wiki/subwikis/subwiki/links/link');
|
||||
$paths[] = new restore_path_element('wiki_comment', '/activity/wiki/subwikis/subwiki/pages/page/comments/comment');
|
||||
}
|
||||
|
||||
// Return the paths wrapped into standard activity structure
|
||||
@@ -92,7 +92,7 @@ class restore_wiki_activity_structure_step extends restore_activity_structure_st
|
||||
$data->timerendered = $this->apply_date_offset($data->timerendered);
|
||||
|
||||
$newitemid = $DB->insert_record('wiki_pages', $data);
|
||||
$this->set_mapping('wiki_page', $oldid, $newitemid);
|
||||
$this->set_mapping('wiki_page', $oldid, $newitemid, true); // There are files related to this
|
||||
}
|
||||
protected function process_wiki_version($data) {
|
||||
global $DB;
|
||||
@@ -126,28 +126,30 @@ class restore_wiki_activity_structure_step extends restore_activity_structure_st
|
||||
$data->subwikiid = $this->get_new_parentid('wiki_subwiki');
|
||||
$data->frompageid = $this->get_mappingid('wiki_page', $data->frompageid);
|
||||
$data->topageid = $this->get_mappingid('wiki_page', $data->topageid);
|
||||
|
||||
|
||||
$newitemid = $DB->insert_record('wiki_links', $data);
|
||||
// No need to save this mapping as far as nothing depend on it
|
||||
// (child paths, file areas nor links decoder)
|
||||
}
|
||||
|
||||
protected function process_wiki_comment($data) {
|
||||
global $DB;
|
||||
protected function process_wiki_tag($data) {
|
||||
global $CFG, $DB;
|
||||
|
||||
$data = (object)$data;
|
||||
$oldid = $data->id;
|
||||
$data->contextid = $this->get_mappingid('context', $data->contextid);
|
||||
$data->userid = $this->get_mappingid('user', $data->userid);
|
||||
|
||||
$newitemid = $DB->insert_record('comments', $data);
|
||||
// No need to save this mapping as far as nothing depend on it
|
||||
// (child paths, file areas nor links decoder)
|
||||
if (empty($CFG->usetags)) { // tags disabled in server, nothing to process
|
||||
return;
|
||||
}
|
||||
|
||||
$tag = $data->rawname;
|
||||
$itemid = $this->get_new_parentid('wiki_page');
|
||||
tag_set_add('wiki_page', $itemid, $tag);
|
||||
}
|
||||
|
||||
|
||||
protected function after_execute() {
|
||||
// Add wiki related files, no need to match by itemname (just internally handled context)
|
||||
$this->add_related_files('mod_wiki', 'intro', null);
|
||||
$this->add_related_files('mod_wiki', 'attachments', 'wiki_page');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user