MDL-64702 badges: Add missing data to backup

Backup and restore of badges is missing data:
* related badges
* alignments
* endorsement

Also added to "clone" (duplicate a badge).
This commit is contained in:
Damyon Wiese
2019-04-26 09:38:37 +08:00
parent da59e61407
commit 748117eb47
11 changed files with 172 additions and 32 deletions
+23 -1
View File
@@ -315,6 +315,28 @@ class badge {
$crit->make_clone($new);
}
// Copy endorsement.
$endorsement = $this->get_endorsement();
if ($endorsement) {
unset($endorsement->id);
$endorsement->badgeid = $new;
$newbadge->save_endorsement($endorsement);
}
// Copy alignments.
$alignments = $this->get_alignments();
foreach ($alignments as $alignment) {
unset($alignment->id);
$alignment->badgeid = $new;
$newbadge->save_alignment($alignment);
}
// Copy related badges.
$related = $this->get_related_badges(true);
if (!empty($related)) {
$newbadge->add_related_badges(array_keys($related));
}
// Trigger event, badge duplicated.
$eventparams = array('objectid' => $new, 'context' => $PAGE->context);
$event = \core\event\badge_duplicated::create($eventparams);
@@ -838,7 +860,7 @@ class badge {
*
* @return array List content competencies.
*/
public function get_alignment() {
public function get_alignments() {
global $DB;
return $DB->get_records('badge_competencies', array('badgeid' => $this->id));
}