diff --git a/src/transformer/events/core/badge_awarded.php b/src/transformer/events/core/badge_awarded.php index b212e534f..db69cfb5f 100644 --- a/src/transformer/events/core/badge_awarded.php +++ b/src/transformer/events/core/badge_awarded.php @@ -18,14 +18,11 @@ * Transform for badge awarded event. * * @package logstore_xapi - * @copyright Jerret Fowler - * Ryan Smith - * David Pesce + * @copyright Daniel Bell * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace src\transformer\events\core; - use src\transformer\utils as utils; /** @@ -56,8 +53,6 @@ function badge_awarded(array $config, \stdClass $event) { $manual = $repo->read_record_by_id('badge_manual_award', $issuedid); $awarder = $manual ? (utils\get_user($config, $repo->read_record_by_id('user', $manual->issuerid))) : 'System'; - $badgetype = [1 => "Global", 2 => "Course"][$badge->type]; - $statement = [[ 'actor' => $actor, @@ -66,19 +61,7 @@ function badge_awarded(array $config, \stdClass $event) { 'display' => [ 'en' => 'Achieved' ]], - 'object' => [ - 'id' => $config['app_url'].'/badges/overview.php?id='.$event->objectid, - 'objectType' => 'Activity', - 'definition' => [ - 'name' => [$lang => $badge->name], - 'description' => [$lang => $badge->description], - 'type' => 'https://xapi.edlm/profiles/edlm-lms/concepts/activity-types/badge', - 'extensions' => [ - 'https://xapi.edlm/profiles/edlm-lms/v1/concepts/activity-extensions/badge-type' => $badgetype, - 'https://xapi.edlm/profiles/edlm-lms/v1/concepts/activity-extensions/badge-version' => $badge->version - ] - ], - ], + 'object' => utils\badge_object($config, $lang, $badge), 'result' => [ 'response' => $badge->message ], diff --git a/src/transformer/events/core/badge_revoked.php b/src/transformer/events/core/badge_revoked.php index b22c3d2c0..f0b542210 100644 --- a/src/transformer/events/core/badge_revoked.php +++ b/src/transformer/events/core/badge_revoked.php @@ -41,7 +41,6 @@ function badge_revoked(array $config, \stdClass $event) { $revoker = utils\get_user($config, $repo->read_record_by_id('user', $event->userid)); $course = $badge->courseid ? $repo->read_record_by_id('course', $badge->courseid) : null; $lang = $badge->language ?? 'en'; - $badgetype = [1 => "Global", 2 => "Course"][$badge->type]; $statement = [[ 'actor' => utils\get_user($config, $recipient), @@ -51,19 +50,7 @@ function badge_revoked(array $config, \stdClass $event) { 'en' => 'Forfeited' ], ], - 'object' => [ - 'id' => $config['app_url'].'/badges/overview.php?id='.$event->objectid, - 'objectType' => 'Activity', - 'definition' => [ - 'name' => [$lang => $badge->name], - 'description' => [$lang => $badge->description], - 'type' => 'https://xapi.edlm/profiles/edlm-lms/concepts/activity-types/badge', - 'extensions' => [ - 'https://xapi.edlm/profiles/edlm-lms/v1/concepts/activity-extensions/badge-type' => $badgetype, - 'https://xapi.edlm/profiles/edlm-lms/v1/concepts/activity-extensions/badge-version' => $badge->version - ] - ] - ], + 'object' => utils\badge_object($config, $lang, $badge), 'context' => [ 'language'=>$lang, 'instructor' =>$revoker, diff --git a/src/transformer/events/core/badge_viewed.php b/src/transformer/events/core/badge_viewed.php index 0ebc0d98a..9f1f9d8e0 100644 --- a/src/transformer/events/core/badge_viewed.php +++ b/src/transformer/events/core/badge_viewed.php @@ -19,7 +19,6 @@ * * @package logstore_xapi * @copyright Daniel Bell - * * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ @@ -40,7 +39,6 @@ function badge_viewed(array $config, \stdClass $event) { global $CFG; $repo = $config['repo']; $badge = $repo->read_record_by_id('badge', $event->objectid); - $badgetype = [1 => "Global", 2 => "Course"][$badge->type]; //all three here may not exist $user=$repo->read_record_by_id('user',$event->userid); @@ -54,18 +52,7 @@ function badge_viewed(array $config, \stdClass $event) { 'verb' => ['id' => 'http://id.tincanapi.com/verb/viewed', 'display' => ['en' => 'Viewed'] ], - 'object' => [ - 'id' => $config['app_url'].'/badges/overview.php?id='.$badge->id, - 'definition' => [ - 'name' => [$lang =>$badge->name], - 'description' => [$lang => $badge->description], - 'type' => 'https://xapi.edlm/profiles/edlm-lms/concepts/activity-types/badge', - 'extensions' => [ - 'https://xapi.edlm/profiles/edlm-lms/v1/concepts/activity-extensions/badge-type' => $badgetype, - 'https://xapi.edlm/profiles/edlm-lms/v1/concepts/activity-extensions/badge-version' => $badge->version - ] - ], - ], + 'object' => utils\badge_object($config, $lang, $badge), 'context' => [ 'language' => $lang, 'contextActivities' => [ diff --git a/src/transformer/utils/badge_object.php b/src/transformer/utils/badge_object.php new file mode 100644 index 000000000..32aed7229 --- /dev/null +++ b/src/transformer/utils/badge_object.php @@ -0,0 +1,51 @@ +. + +/** + * Transformer utility for cleaning HTML from strings. + * + * @package logstore_xapi + * @copyright Daniel Bell + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace src\transformer\utils; + +/** + * Utility for creating badge objects for badge events + * + * @param array $config site config + * @param string $lang site config + * @param array $badge The badge associative array + * @return object + */ + +function badge_object($config, $lang, $badge) { + $badgetype = [1 => "Global", 2 => "Course"][$badge->type]; + + return [ + 'id' => $config['app_url'].'/badges/overview.php?id='.$badge->id, + 'definition' => [ + 'name' => [$lang =>$badge->name], + 'description' => [$lang => $badge->description], + 'type' => 'https://xapi.edlm/profiles/edlm-lms/concepts/activity-types/badge', + 'extensions' => [ + 'https://xapi.edlm/profiles/edlm-lms/v1/concepts/activity-extensions/badge-type' => $badgetype, + 'https://xapi.edlm/profiles/edlm-lms/v1/concepts/activity-extensions/badge-version' => $badge->version + ] + ] + ]; +} diff --git a/tests/core/badge_awarded/user_achieved_badge/statements.json b/tests/core/badge_awarded/user_achieved_badge/statements.json index 17261a825..591b4ae68 100644 --- a/tests/core/badge_awarded/user_achieved_badge/statements.json +++ b/tests/core/badge_awarded/user_achieved_badge/statements.json @@ -15,7 +15,6 @@ }, "object": { "id": "http://www.example.org/badges/overview.php?id=1", - "objectType": "Activity", "definition": { "name": { "en": "test_badgename" diff --git a/tests/core/badge_revoked/user_forfeited_badge/statements.json b/tests/core/badge_revoked/user_forfeited_badge/statements.json index 0de095484..3161abb24 100644 --- a/tests/core/badge_revoked/user_forfeited_badge/statements.json +++ b/tests/core/badge_revoked/user_forfeited_badge/statements.json @@ -15,7 +15,6 @@ }, "object": { "id": "http://www.example.org/badges/overview.php?id=1", - "objectType": "Activity", "definition": { "name": { "en": "test_badgename" diff --git a/tests/core/badge_viewed/user_viewed_badge/data.json b/tests/core/badge_viewed/user_viewed_badge/data.json index b7a10cb79..7d9b39f28 100644 --- a/tests/core/badge_viewed/user_viewed_badge/data.json +++ b/tests/core/badge_viewed/user_viewed_badge/data.json @@ -7,21 +7,5 @@ "version": "1.0", "type": 1 } - ], - "course": [ - { - "fullname": "test_course_name", - "id": 1, - "lang": "en", - "summary": "test_course_summary" - } - ], - "user": [ - { - "email": "viewer@test.com", - "firstname": "badge_viewer_firstname", - "id": 1, - "lastname": "badge_viewer_lastname" - } ] } diff --git a/tests/core/badge_viewed/user_viewed_badge/statements.json b/tests/core/badge_viewed/user_viewed_badge/statements.json index b1ed8c614..c6a9629ac 100644 --- a/tests/core/badge_viewed/user_viewed_badge/statements.json +++ b/tests/core/badge_viewed/user_viewed_badge/statements.json @@ -5,7 +5,7 @@ "homePage": "http://www.example.org", "name": "1" }, - "name": "badge_viewer_firstname badge_viewer_lastname" + "name": "test_fullname" }, "verb": { "id": "http://id.tincanapi.com/verb/viewed", @@ -35,7 +35,7 @@ { "definition": { "name": { - "en": "test_course_name" + "en": "test_name" }, "type": "http://id.tincanapi.com/activitytype/lms" }, @@ -46,7 +46,7 @@ { "definition": { "name": { - "en": "test_course_name" + "en": "test_name" }, "type": "https://w3id.org/xapi/cmi5/activitytype/course" }, diff --git a/tests/core/badge_viewed/user_viewed_badge/user_viewed_badge_test.php b/tests/core/badge_viewed/user_viewed_badge/user_viewed_badge_test.php index 78edb22b2..c7727ef35 100644 --- a/tests/core/badge_viewed/user_viewed_badge/user_viewed_badge_test.php +++ b/tests/core/badge_viewed/user_viewed_badge/user_viewed_badge_test.php @@ -61,7 +61,7 @@ protected function get_plugin_name() { /** * Appease auto-detecting of test cases. xapi_test_case has default test cases. * - * @covers ::attempt_submitted + * @covers ::badge_viewed * @return void */ public function test_init() {