Skip to content

Commit 7f09faf

Browse files
committed
MDL-83905 core_badges: Replace manual JSON with exporters
1 parent f5a70d9 commit 7f09faf

File tree

2 files changed

+57
-5
lines changed

2 files changed

+57
-5
lines changed

badges/classes/assertion.php

+48-5
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
require_once($CFG->libdir . '/badgeslib.php');
2929
require_once($CFG->dirroot . '/badges/renderer.php');
3030

31+
use core_badges\local\backpack\ob\exporter_base;
32+
3133
/**
3234
* Class that represents badge assertion.
3335
*
@@ -116,6 +118,13 @@ public function get_assertion_hash() {
116118
* @return array Badge assertion.
117119
*/
118120
public function get_badge_assertion($issued = true, $usesalt = true) {
121+
$assertionexporter = exporter_base::create_assertion_exporter_from_hash(
122+
$this->_data->uniquehash,
123+
exporter_base::convert_apiversion(OPEN_BADGES_V2),
124+
);
125+
return $assertionexporter->export();
126+
127+
/*
119128
global $CFG;
120129
$assertion = array();
121130
if ($this->_data) {
@@ -163,6 +172,7 @@ public function get_badge_assertion($issued = true, $usesalt = true) {
163172
$this->embed_data_badge_version2($assertion, OPEN_BADGES_V2_TYPE_ASSERTION);
164173
}
165174
return $assertion;
175+
*/
166176
}
167177

168178
/**
@@ -172,6 +182,14 @@ public function get_badge_assertion($issued = true, $usesalt = true) {
172182
* @return array Badge Class information.
173183
*/
174184
public function get_badge_class($issued = true) {
185+
// TODO: Should the image be added with the data:image/png;base64, prefix?
186+
$badgeexporter = exporter_base::create_badge_exporter_from_id(
187+
$this->get_badge_id(),
188+
exporter_base::convert_apiversion(OPEN_BADGES_V2),
189+
);
190+
return $badgeexporter->export();
191+
/*
192+
// TODO: This badge contains less information, for instance, version or language are not present).
175193
$class = [];
176194
if ($this->_data) {
177195
if (empty($this->_data->courseid)) {
@@ -214,6 +232,7 @@ public function get_badge_class($issued = true) {
214232
}
215233
}
216234
return $class;
235+
*/
217236
}
218237

219238
/**
@@ -222,11 +241,11 @@ public function get_badge_class($issued = true) {
222241
* @return array Issuer information.
223242
*/
224243
public function get_issuer() {
225-
$badge = new badge($this->get_badge_id());
226-
$issuer = $badge->get_badge_issuer();
227-
228-
$this->embed_data_badge_version2($issuer, OPEN_BADGES_V2_TYPE_ISSUER);
229-
return $issuer;
244+
$issuerexporter = exporter_base::create_issuer_exporter_from_id(
245+
$this->get_badge_id(),
246+
exporter_base::convert_apiversion(OPEN_BADGES_V2),
247+
);
248+
return $issuerexporter->export();
230249
}
231250

232251
/**
@@ -236,6 +255,13 @@ public function get_issuer() {
236255
* @return array|bool List related badges.
237256
*/
238257
public function get_related_badges(badge $badge) {
258+
$badgeexporter = exporter_base::create_badge_exporter_from_id(
259+
$badge->id,
260+
exporter_base::convert_apiversion(OPEN_BADGES_V2),
261+
);
262+
return $badgeexporter->export_related_badges();
263+
264+
/*
239265
global $DB;
240266
$arraybadges = array();
241267
$relatedbadges = $badge->get_related_badges(true);
@@ -250,6 +276,7 @@ public function get_related_badges(badge $badge) {
250276
}
251277
}
252278
return $arraybadges;
279+
*/
253280
}
254281

255282
/**
@@ -270,6 +297,13 @@ public function get_endorsement() {
270297
* @return array|string Criteria information.
271298
*/
272299
public function get_criteria_badge_class() {
300+
$badgeexporter = exporter_base::create_badge_exporter_from_id(
301+
$this->get_badge_id(),
302+
exporter_base::convert_apiversion(OPEN_BADGES_V2),
303+
);
304+
return $badgeexporter->export_criteria();
305+
306+
/*
273307
$badge = new badge($this->_data->id);
274308
$narrative = $badge->markdown_badge_criteria();
275309
$params = ['id' => $this->get_badge_id()];
@@ -282,6 +316,7 @@ public function get_criteria_badge_class() {
282316
} else {
283317
return $badgeurl->out(false);
284318
}
319+
*/
285320
}
286321

287322
/**
@@ -290,6 +325,13 @@ public function get_criteria_badge_class() {
290325
* @return array information.
291326
*/
292327
public function get_alignments() {
328+
$badgeexporter = exporter_base::create_badge_exporter_from_id(
329+
$this->get_badge_id(),
330+
exporter_base::convert_apiversion(OPEN_BADGES_V2),
331+
);
332+
return $badgeexporter->export_alignments();
333+
334+
/*
293335
global $DB;
294336
$badgeid = $this->_data->id;
295337
$alignments = array();
@@ -308,6 +350,7 @@ public function get_alignments() {
308350
$alignments[] = $alignment;
309351
}
310352
return $alignments;
353+
*/
311354
}
312355

313356
/**

badges/classes/badge.php

+9
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
namespace core_badges;
1818

19+
use core_badges\local\backpack\ob\exporter_base;
20+
1921
defined('MOODLE_INTERNAL') || die();
2022

2123
require_once($CFG->dirroot.'/lib/badgeslib.php');
@@ -946,6 +948,12 @@ public function markdown_badge_criteria() {
946948
* @return array Issuer informations of the badge.
947949
*/
948950
public function get_badge_issuer(?int $obversion = null) {
951+
$issuerexporter = exporter_base::create_issuer_exporter_from_id(
952+
$this->id,
953+
exporter_base::convert_apiversion($obversion),
954+
);
955+
return $issuerexporter->export();
956+
/*
949957
return [
950958
'name' => $this->issuername,
951959
'url' => $this->issuerurl,
@@ -954,6 +962,7 @@ public function get_badge_issuer(?int $obversion = null) {
954962
'id' => (new moodle_url('/badges/issuer_json.php', ['id' => $this->id]))->out(false),
955963
'type' => OPEN_BADGES_V2_TYPE_ISSUER,
956964
];
965+
*/
957966
}
958967

959968
/**

0 commit comments

Comments
 (0)