From b1651f6ea5b2cf67fe139f4a4164fb8df23f430e Mon Sep 17 00:00:00 2001 From: garemoko Date: Thu, 2 May 2019 12:07:23 +0100 Subject: [PATCH 1/7] add support for course 0 in forum user report events --- .../events/mod_forum/user_report_viewed.php | 27 ++++++-- .../utils/get_activity/user_report.php | 17 +++-- .../data.json | 14 ++++ .../event.json | 10 +++ .../statements.json | 67 +++++++++++++++++++ .../test.php | 24 +++++++ 6 files changed, 147 insertions(+), 12 deletions(-) create mode 100644 tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/data.json create mode 100644 tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/event.json create mode 100644 tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json create mode 100644 tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/test.php diff --git a/src/transformer/events/mod_forum/user_report_viewed.php b/src/transformer/events/mod_forum/user_report_viewed.php index 474b612e4..3c98a45b1 100644 --- a/src/transformer/events/mod_forum/user_report_viewed.php +++ b/src/transformer/events/mod_forum/user_report_viewed.php @@ -23,11 +23,19 @@ function user_report_viewed(array $config, \stdClass $event) { $repo = $config['repo']; $user = $repo->read_record_by_id('user', $event->userid); - $course = $repo->read_record_by_id('course', $event->courseid); - $discussion = $repo->read_record_by_id('user', $event->relateduserid); - $lang = utils\get_course_lang($course); - return[[ + if ($event->courseid == "0") { + $course = (object) [ + "id" => 0 + ]; + $lang = "en"; + } + else { + $course = $repo->read_record_by_id('course', $event->courseid); + $lang = utils\get_course_lang($course); + } + + $statement = [ 'actor' => utils\get_user($config, $user), 'verb' => [ 'id' => 'http://id.tincanapi.com/verb/viewed', @@ -35,7 +43,7 @@ function user_report_viewed(array $config, \stdClass $event) { $lang => 'viewed' ], ], - 'object' => utils\get_activity\user_report($config, $user, $course), + 'object' => utils\get_activity\user_report($config, $user, $course, $event->relateduserid, $lang), 'timestamp' => utils\get_event_timestamp($event), 'context' => [ 'platform' => $config['source_name'], @@ -46,12 +54,17 @@ function user_report_viewed(array $config, \stdClass $event) { 'contextActivities' => [ 'grouping' => [ utils\get_activity\site($config), - utils\get_activity\course($config, $course), ], 'category' => [ utils\get_activity\source($config), ] ], ] - ]]; + ]; + + if ($event->courseid != "0") { + array_push($statement['context']['contextActivities']['grouping'], utils\get_activity\course($config, $course)); + } + + return[$statement]; } diff --git a/src/transformer/utils/get_activity/user_report.php b/src/transformer/utils/get_activity/user_report.php index d9fc55fe2..06d8587eb 100644 --- a/src/transformer/utils/get_activity/user_report.php +++ b/src/transformer/utils/get_activity/user_report.php @@ -19,11 +19,9 @@ use src\transformer\utils as utils; -function user_report(array $config, \stdClass $user, \stdClass $course) { - $courselang = utils\get_course_lang($course); +function user_report(array $config, \stdClass $user, \stdClass $course, $relateduserid, $courselang) { - return [ - 'id' => $config['app_url'].'/mod/forum/user.php?id='.$user->id.'&course='.$course->id, + $activity = [ 'definition' => [ 'type' => 'http://id.tincanapi.com/activitytype/user-profile', 'name' => [ @@ -31,8 +29,17 @@ function user_report(array $config, \stdClass $user, \stdClass $course) { ], 'extensions' => [ 'https://moodle.org/xapi/extensions/user_id' => $user->id, - 'https://moodle.org/xapi/extensions/course_id' => $course->id, ], ], ]; + + if ($course->id == "0") { + $activity['id'] = $config['app_url'].'/mod/forum/user.php?id='.$relateduserid; + } + else { + $activity['id'] = $config['app_url'].'/mod/forum/user.php?id='.$relateduserid.'&course='.$course->id; + $activity['definition']['extensions']['https://moodle.org/xapi/extensions/course_id'] = $course->id; + } + + return $activity; } diff --git a/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/data.json b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/data.json new file mode 100644 index 000000000..e825aad41 --- /dev/null +++ b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/data.json @@ -0,0 +1,14 @@ +{ + "user": [ + { + "id": 1, + "firstname": "loggedin_user_firstname", + "email": "test1@test.com" + }, + { + "id": 2, + "firstname": "viewed_user_firstname", + "email": "test2@test.com" + } + ] +} \ No newline at end of file diff --git a/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/event.json b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/event.json new file mode 100644 index 000000000..79cbabda6 --- /dev/null +++ b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/event.json @@ -0,0 +1,10 @@ +{ + "id": 1, + "userid": 1, + "relateduserid": 2, + "courseid": 0, + "timecreated": 1433946701, + "objecttable": null, + "objectid": null, + "eventname": "\\mod_forum\\event\\user_report_viewed" +} \ No newline at end of file diff --git a/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json new file mode 100644 index 000000000..469d2283a --- /dev/null +++ b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json @@ -0,0 +1,67 @@ +[ + { + "actor": { + "name": "loggedin_user_firstname", + "account": { + "homePage": "http:\/\/www.example.org", + "name": "1" + } + }, + "verb": { + "id": "http:\/\/id.tincanapi.com\/verb\/viewed", + "display": { + "en": "viewed" + } + }, + "object": { + "id": "http:\/\/www.example.org\/mod\/forum\/user.php?id=1&course=1", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/user-profile", + "name": { + "en": "forum posts of loggedin_user_firstname" + }, + "extensions": { + "https:\/\/moodle.org\/xapi\/extensions\/user_id": 1, + "https:\/\/moodle.org\/xapi\/extensions\/course_id": 1 + } + } + }, + "timestamp": "2015-06-10T15:31:41+01:00", + "context": { + "platform": "Moodle", + "language": "en", + "extensions": { + "http:\/\/lrs.learninglocker.net\/define\/extensions\/info": { + "http:\/\/moodle.org": "1.0.0", + "https:\/\/github.com\/xAPI-vle\/moodle-logstore_xapi": "0.0.0-development", + "event_name": "\\mod_forum\\event\\user_report_viewed", + "event_function": "\\src\\transformer\\events\\mod_forum\\user_report_viewed" + } + }, + "contextActivities": { + "grouping": [ + { + "id": "http:\/\/www.example.org", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/lms", + "name": { + "en": "test_name" + } + } + } + ], + "category": [ + { + "id": "http:\/\/moodle.org", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/source", + "name": { + "en": "Moodle" + } + } + } + ] + } + } + } +] \ No newline at end of file diff --git a/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/test.php b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/test.php new file mode 100644 index 000000000..7f2884303 --- /dev/null +++ b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/test.php @@ -0,0 +1,24 @@ +. + +namespace tests\mod_forum\user_report_viewed\existing_report_viewed_all_courses; +defined('MOODLE_INTERNAL') || die(); + +class test extends \tests\xapi_test_case { + protected function get_test_dir() { + return __DIR__; + } +} \ No newline at end of file From c2905708b69bcdd8c78e8363f6ce3313b1781fa0 Mon Sep 17 00:00:00 2001 From: garemoko Date: Thu, 2 May 2019 12:13:45 +0100 Subject: [PATCH 2/7] Fix activity id in tests --- .../user_report_viewed/existing_report_viewed/statements.json | 2 +- .../existing_report_viewed_all_courses/statements.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/mod_forum/user_report_viewed/existing_report_viewed/statements.json b/tests/mod_forum/user_report_viewed/existing_report_viewed/statements.json index 53dd25207..36b3ae1d8 100644 --- a/tests/mod_forum/user_report_viewed/existing_report_viewed/statements.json +++ b/tests/mod_forum/user_report_viewed/existing_report_viewed/statements.json @@ -14,7 +14,7 @@ } }, "object": { - "id": "http:\/\/www.example.org\/mod\/forum\/user.php?id=1&course=1", + "id": "http:\/\/www.example.org\/mod\/forum\/user.php?id=2&course=1", "definition": { "type": "http:\/\/id.tincanapi.com\/activitytype\/user-profile", "name": { diff --git a/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json index 469d2283a..1ca3b3581 100644 --- a/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json +++ b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json @@ -14,7 +14,7 @@ } }, "object": { - "id": "http:\/\/www.example.org\/mod\/forum\/user.php?id=1&course=1", + "id": "http:\/\/www.example.org\/mod\/forum\/user.php?id=2&course=1", "definition": { "type": "http:\/\/id.tincanapi.com\/activitytype\/user-profile", "name": { From f2d4c412a5f7fd30d14f2edb0185a1a9086b030d Mon Sep 17 00:00:00 2001 From: garemoko Date: Thu, 2 May 2019 12:23:51 +0100 Subject: [PATCH 3/7] test fixes --- .../existing_report_viewed/statements.json | 4 ++-- .../existing_report_viewed_all_courses/data.json | 7 +++++++ .../existing_report_viewed_all_courses/statements.json | 4 ++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/tests/mod_forum/user_report_viewed/existing_report_viewed/statements.json b/tests/mod_forum/user_report_viewed/existing_report_viewed/statements.json index 36b3ae1d8..408eb2284 100644 --- a/tests/mod_forum/user_report_viewed/existing_report_viewed/statements.json +++ b/tests/mod_forum/user_report_viewed/existing_report_viewed/statements.json @@ -14,7 +14,6 @@ } }, "object": { - "id": "http:\/\/www.example.org\/mod\/forum\/user.php?id=2&course=1", "definition": { "type": "http:\/\/id.tincanapi.com\/activitytype\/user-profile", "name": { @@ -24,7 +23,8 @@ "https:\/\/moodle.org\/xapi\/extensions\/user_id": 1, "https:\/\/moodle.org\/xapi\/extensions\/course_id": 1 } - } + }, + "id": "http:\/\/www.example.org\/mod\/forum\/user.php?id=2&course=1" }, "timestamp": "2015-06-10T15:31:41+01:00", "context": { diff --git a/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/data.json b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/data.json index e825aad41..b999fcb0f 100644 --- a/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/data.json +++ b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/data.json @@ -10,5 +10,12 @@ "firstname": "viewed_user_firstname", "email": "test2@test.com" } + ], + "course": [ + { + "id": 1, + "fullname": "test_name", + "lang": "en" + } ] } \ No newline at end of file diff --git a/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json index 1ca3b3581..edc84ae2d 100644 --- a/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json +++ b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json @@ -14,7 +14,6 @@ } }, "object": { - "id": "http:\/\/www.example.org\/mod\/forum\/user.php?id=2&course=1", "definition": { "type": "http:\/\/id.tincanapi.com\/activitytype\/user-profile", "name": { @@ -24,7 +23,8 @@ "https:\/\/moodle.org\/xapi\/extensions\/user_id": 1, "https:\/\/moodle.org\/xapi\/extensions\/course_id": 1 } - } + }, + "id": "http:\/\/www.example.org\/mod\/forum\/user.php?id=2&course=1" }, "timestamp": "2015-06-10T15:31:41+01:00", "context": { From 707343f6a11933e086a552b36600c7aec6ca6ec3 Mon Sep 17 00:00:00 2001 From: garemoko Date: Thu, 2 May 2019 13:19:17 +0100 Subject: [PATCH 4/7] fix "all courses" activity id --- .../existing_report_viewed_all_courses/statements.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json index edc84ae2d..301ecd587 100644 --- a/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json +++ b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json @@ -24,7 +24,7 @@ "https:\/\/moodle.org\/xapi\/extensions\/course_id": 1 } }, - "id": "http:\/\/www.example.org\/mod\/forum\/user.php?id=2&course=1" + "id": "http:\/\/www.example.org\/mod\/forum\/user.php?id=2" }, "timestamp": "2015-06-10T15:31:41+01:00", "context": { From 9efeff16f8c205463ba4a4b6eaa3bd7b65de64b6 Mon Sep 17 00:00:00 2001 From: garemoko Date: Thu, 2 May 2019 13:28:59 +0100 Subject: [PATCH 5/7] dont test for course extension when there is no course --- .../existing_report_viewed_all_courses/statements.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json index 301ecd587..ba224056f 100644 --- a/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json +++ b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json @@ -20,8 +20,7 @@ "en": "forum posts of loggedin_user_firstname" }, "extensions": { - "https:\/\/moodle.org\/xapi\/extensions\/user_id": 1, - "https:\/\/moodle.org\/xapi\/extensions\/course_id": 1 + "https:\/\/moodle.org\/xapi\/extensions\/user_id": 1 } }, "id": "http:\/\/www.example.org\/mod\/forum\/user.php?id=2" From 1fbe6c2746a85b10648b9a5470e45d700b592247 Mon Sep 17 00:00:00 2001 From: garemoko Date: Thu, 2 May 2019 13:34:52 +0100 Subject: [PATCH 6/7] code style fixes --- src/transformer/events/mod_forum/user_report_viewed.php | 3 +-- src/transformer/utils/get_activity/user_report.php | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/transformer/events/mod_forum/user_report_viewed.php b/src/transformer/events/mod_forum/user_report_viewed.php index 3c98a45b1..f04e851ce 100644 --- a/src/transformer/events/mod_forum/user_report_viewed.php +++ b/src/transformer/events/mod_forum/user_report_viewed.php @@ -29,8 +29,7 @@ function user_report_viewed(array $config, \stdClass $event) { "id" => 0 ]; $lang = "en"; - } - else { + } else { $course = $repo->read_record_by_id('course', $event->courseid); $lang = utils\get_course_lang($course); } diff --git a/src/transformer/utils/get_activity/user_report.php b/src/transformer/utils/get_activity/user_report.php index 06d8587eb..096dcf774 100644 --- a/src/transformer/utils/get_activity/user_report.php +++ b/src/transformer/utils/get_activity/user_report.php @@ -35,8 +35,7 @@ function user_report(array $config, \stdClass $user, \stdClass $course, $related if ($course->id == "0") { $activity['id'] = $config['app_url'].'/mod/forum/user.php?id='.$relateduserid; - } - else { + } else { $activity['id'] = $config['app_url'].'/mod/forum/user.php?id='.$relateduserid.'&course='.$course->id; $activity['definition']['extensions']['https://moodle.org/xapi/extensions/course_id'] = $course->id; } From 82357c696b0d86175b8fe8ec7044021ffa15abcc Mon Sep 17 00:00:00 2001 From: garemoko Date: Thu, 2 May 2019 19:20:20 +0100 Subject: [PATCH 7/7] Complete the fix of related user --- src/transformer/events/mod_forum/user_report_viewed.php | 3 ++- src/transformer/utils/get_activity/user_report.php | 6 +++--- .../existing_report_viewed/statements.json | 4 ++-- .../existing_report_viewed_all_courses/statements.json | 4 ++-- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/transformer/events/mod_forum/user_report_viewed.php b/src/transformer/events/mod_forum/user_report_viewed.php index f04e851ce..fbbf45396 100644 --- a/src/transformer/events/mod_forum/user_report_viewed.php +++ b/src/transformer/events/mod_forum/user_report_viewed.php @@ -23,6 +23,7 @@ function user_report_viewed(array $config, \stdClass $event) { $repo = $config['repo']; $user = $repo->read_record_by_id('user', $event->userid); + $relateduser = $repo->read_record_by_id('user', $event->relateduserid); if ($event->courseid == "0") { $course = (object) [ @@ -42,7 +43,7 @@ function user_report_viewed(array $config, \stdClass $event) { $lang => 'viewed' ], ], - 'object' => utils\get_activity\user_report($config, $user, $course, $event->relateduserid, $lang), + 'object' => utils\get_activity\user_report($config, $relateduser, $course, $lang), 'timestamp' => utils\get_event_timestamp($event), 'context' => [ 'platform' => $config['source_name'], diff --git a/src/transformer/utils/get_activity/user_report.php b/src/transformer/utils/get_activity/user_report.php index 096dcf774..0f582f38d 100644 --- a/src/transformer/utils/get_activity/user_report.php +++ b/src/transformer/utils/get_activity/user_report.php @@ -19,7 +19,7 @@ use src\transformer\utils as utils; -function user_report(array $config, \stdClass $user, \stdClass $course, $relateduserid, $courselang) { +function user_report(array $config, \stdClass $user, \stdClass $course, $courselang) { $activity = [ 'definition' => [ @@ -34,9 +34,9 @@ function user_report(array $config, \stdClass $user, \stdClass $course, $related ]; if ($course->id == "0") { - $activity['id'] = $config['app_url'].'/mod/forum/user.php?id='.$relateduserid; + $activity['id'] = $config['app_url'].'/mod/forum/user.php?id='.$user->id; } else { - $activity['id'] = $config['app_url'].'/mod/forum/user.php?id='.$relateduserid.'&course='.$course->id; + $activity['id'] = $config['app_url'].'/mod/forum/user.php?id='.$user->id.'&course='.$course->id; $activity['definition']['extensions']['https://moodle.org/xapi/extensions/course_id'] = $course->id; } diff --git a/tests/mod_forum/user_report_viewed/existing_report_viewed/statements.json b/tests/mod_forum/user_report_viewed/existing_report_viewed/statements.json index 408eb2284..6523c71f1 100644 --- a/tests/mod_forum/user_report_viewed/existing_report_viewed/statements.json +++ b/tests/mod_forum/user_report_viewed/existing_report_viewed/statements.json @@ -17,10 +17,10 @@ "definition": { "type": "http:\/\/id.tincanapi.com\/activitytype\/user-profile", "name": { - "en": "forum posts of loggedin_user_firstname" + "en": "forum posts of viewed_user_firstname" }, "extensions": { - "https:\/\/moodle.org\/xapi\/extensions\/user_id": 1, + "https:\/\/moodle.org\/xapi\/extensions\/user_id": 2, "https:\/\/moodle.org\/xapi\/extensions\/course_id": 1 } }, diff --git a/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json index ba224056f..66ec7f9b3 100644 --- a/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json +++ b/tests/mod_forum/user_report_viewed/existing_report_viewed_all_courses/statements.json @@ -17,10 +17,10 @@ "definition": { "type": "http:\/\/id.tincanapi.com\/activitytype\/user-profile", "name": { - "en": "forum posts of loggedin_user_firstname" + "en": "forum posts of viewed_user_firstname" }, "extensions": { - "https:\/\/moodle.org\/xapi\/extensions\/user_id": 1 + "https:\/\/moodle.org\/xapi\/extensions\/user_id": 2 } }, "id": "http:\/\/www.example.org\/mod\/forum\/user.php?id=2"