mirror of
https://github.com/moodle/moodle.git
synced 2025-01-18 05:58:34 +01:00
MDL-67178 mod_forum: Allow users to backup forum grades
This commit is contained in:
parent
1633a6035d
commit
2cac67a016
@ -44,7 +44,7 @@ class backup_forum_activity_structure_step extends backup_activity_structure_ste
|
||||
'maxbytes', 'maxattachments', 'forcesubscribe', 'trackingtype',
|
||||
'rsstype', 'rssarticles', 'timemodified', 'warnafter',
|
||||
'blockafter', 'blockperiod', 'completiondiscussions', 'completionreplies',
|
||||
'completionposts', 'displaywordcount', 'lockdiscussionafter'));
|
||||
'completionposts', 'displaywordcount', 'lockdiscussionafter', 'grade_forum'));
|
||||
|
||||
$discussions = new backup_nested_element('discussions');
|
||||
|
||||
@ -96,6 +96,17 @@ class backup_forum_activity_structure_step extends backup_activity_structure_ste
|
||||
$track = new backup_nested_element('track', array('id'), array(
|
||||
'userid'));
|
||||
|
||||
$grades = new backup_nested_element('grades');
|
||||
|
||||
$grade = new backup_nested_element('grade', ['id'], [
|
||||
'forum',
|
||||
'itemnumber',
|
||||
'userid',
|
||||
'grade',
|
||||
'timecreated',
|
||||
'timemodified',
|
||||
]);
|
||||
|
||||
// Build the tree
|
||||
|
||||
$forum->add_child($discussions);
|
||||
@ -116,6 +127,9 @@ class backup_forum_activity_structure_step extends backup_activity_structure_ste
|
||||
$forum->add_child($tags);
|
||||
$tags->add_child($tag);
|
||||
|
||||
$forum->add_child($grades);
|
||||
$grades->add_child($grade);
|
||||
|
||||
$discussion->add_child($posts);
|
||||
$posts->add_child($post);
|
||||
|
||||
@ -166,6 +180,8 @@ class backup_forum_activity_structure_step extends backup_activity_structure_ste
|
||||
backup_helper::is_sqlparam('mod_forum'),
|
||||
backup::VAR_CONTEXTID));
|
||||
}
|
||||
|
||||
$grade->set_source_table('forum_grades', array('forum' => backup::VAR_PARENTID));
|
||||
}
|
||||
|
||||
// Define id annotations
|
||||
@ -190,6 +206,9 @@ class backup_forum_activity_structure_step extends backup_activity_structure_ste
|
||||
|
||||
$track->annotate_ids('user', 'userid');
|
||||
|
||||
$grade->annotate_ids('userid', 'userid');
|
||||
|
||||
$grade->annotate_ids('forum', 'forum');
|
||||
// Define file annotations
|
||||
|
||||
$forum->annotate_files('mod_forum', 'intro', null); // This file area hasn't itemid
|
||||
|
@ -47,6 +47,7 @@ class restore_forum_activity_structure_step extends restore_activity_structure_s
|
||||
$paths[] = new restore_path_element('forum_digest', '/activity/forum/digests/digest');
|
||||
$paths[] = new restore_path_element('forum_read', '/activity/forum/readposts/read');
|
||||
$paths[] = new restore_path_element('forum_track', '/activity/forum/trackedprefs/track');
|
||||
$paths[] = new restore_path_element('forum_grade', '/activity/forum/grades/grade');
|
||||
}
|
||||
|
||||
// Return the paths wrapped into standard activity structure
|
||||
@ -214,6 +215,27 @@ class restore_forum_activity_structure_step extends restore_activity_structure_s
|
||||
$newitemid = $DB->insert_record('forum_digests', $data);
|
||||
}
|
||||
|
||||
protected function process_forum_grade($data) {
|
||||
global $DB;
|
||||
|
||||
$data = (object)$data;
|
||||
$oldid = $data->id;
|
||||
|
||||
$data->forum = $this->get_new_parentid('forum');
|
||||
|
||||
$data->userid = $this->get_mappingid('user', $data->userid);
|
||||
|
||||
// We want to ensure the current user has an ID that we can associate to a grade.
|
||||
if ($data->userid != 0) {
|
||||
$newitemid = $DB->insert_record('forum_grades', $data);
|
||||
|
||||
// Note - the old contextid is required in order to be able to restore files stored in
|
||||
// sub plugin file areas attached to the gradeid.
|
||||
$this->set_mapping('grade', $oldid, $newitemid, false, null, $this->task->get_old_contextid());
|
||||
$this->set_mapping(restore_gradingform_plugin::itemid_mapping('forum'), $oldid, $newitemid);
|
||||
}
|
||||
}
|
||||
|
||||
protected function process_forum_read($data) {
|
||||
global $DB;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user