diff --git a/mod/wiki/backup/moodle2/backup_wiki_stepslib.php b/mod/wiki/backup/moodle2/backup_wiki_stepslib.php index 662a0b03182..39a8ad07400 100644 --- a/mod/wiki/backup/moodle2/backup_wiki_stepslib.php +++ b/mod/wiki/backup/moodle2/backup_wiki_stepslib.php @@ -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); diff --git a/mod/wiki/backup/moodle2/restore_wiki_activity_task.class.php b/mod/wiki/backup/moodle2/restore_wiki_activity_task.class.php index be0d2f183e9..0e81e5f3fd9 100644 --- a/mod/wiki/backup/moodle2/restore_wiki_activity_task.class.php +++ b/mod/wiki/backup/moodle2/restore_wiki_activity_task.class.php @@ -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; diff --git a/mod/wiki/backup/moodle2/restore_wiki_stepslib.php b/mod/wiki/backup/moodle2/restore_wiki_stepslib.php index 4fd4c33e8cc..245dcff8cfc 100644 --- a/mod/wiki/backup/moodle2/restore_wiki_stepslib.php +++ b/mod/wiki/backup/moodle2/restore_wiki_stepslib.php @@ -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'); } }