MDL-73325 core_badges: Add tags field to BadgeClass
This commit is contained in:
@@ -939,6 +939,9 @@ class backup_badges_structure_step extends backup_structure_step {
|
||||
$manual_award = new backup_nested_element('manual_award', array('id'), array('badgeid',
|
||||
'recipientid', 'issuerid', 'issuerrole', 'datemet'));
|
||||
|
||||
$tags = new backup_nested_element('tags');
|
||||
$tag = new backup_nested_element('tag', ['id'], ['name', 'rawname']);
|
||||
|
||||
// Build the tree.
|
||||
|
||||
$badges->add_child($badge);
|
||||
@@ -953,6 +956,8 @@ class backup_badges_structure_step extends backup_structure_step {
|
||||
$relatedbadges->add_child($relatedbadge);
|
||||
$badge->add_child($manual_awards);
|
||||
$manual_awards->add_child($manual_award);
|
||||
$badge->add_child($tags);
|
||||
$tags->add_child($tag);
|
||||
|
||||
// Define sources.
|
||||
|
||||
@@ -980,6 +985,12 @@ class backup_badges_structure_step extends backup_structure_step {
|
||||
|
||||
$manual_award->set_source_table('badge_manual_award', array('badgeid' => 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 = ?', [backup_helper::is_sqlparam('badge'), backup::VAR_PARENTID]);
|
||||
|
||||
// Define id annotations.
|
||||
|
||||
$badge->annotate_ids('user', 'usercreated');
|
||||
|
||||
@@ -2621,6 +2621,7 @@ class restore_badges_structure_step extends restore_structure_step {
|
||||
$paths[] = new restore_path_element('alignment', '/badges/badge/alignments/alignment');
|
||||
$paths[] = new restore_path_element('relatedbadge', '/badges/badge/relatedbadges/relatedbadge');
|
||||
$paths[] = new restore_path_element('manual_award', '/badges/badge/manual_awards/manual_award');
|
||||
$paths[] = new restore_path_element('tag', '/badges/badge/tags/tag');
|
||||
|
||||
return $paths;
|
||||
}
|
||||
@@ -2830,6 +2831,22 @@ class restore_badges_structure_step extends restore_structure_step {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process tag.
|
||||
*
|
||||
* @param array $data The data.
|
||||
* @throws base_step_exception
|
||||
*/
|
||||
public function process_tag(array $data): void {
|
||||
$data = (object)$data;
|
||||
$badgeid = $this->get_new_parentid('badge');
|
||||
|
||||
if (!empty($data->rawname)) {
|
||||
core_tag_tag::add_item_tag('core_badges', 'badge', $badgeid,
|
||||
context_course::instance($this->get_courseid()), $data->rawname);
|
||||
}
|
||||
}
|
||||
|
||||
protected function after_execute() {
|
||||
global $DB;
|
||||
// Add related files.
|
||||
|
||||
Reference in New Issue
Block a user