Skip to content

Commit 99b6c55

Browse files
garemokoryasmi
authored andcommitted
fix(user_report_viewed): Stops errors where course ID is 0. (#527 - Thanks @garemoko)
1 parent 604cb0d commit 99b6c55

File tree

7 files changed

+156
-16
lines changed

7 files changed

+156
-16
lines changed

src/transformer/events/mod_forum/user_report_viewed.php

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,27 @@
2323
function user_report_viewed(array $config, \stdClass $event) {
2424
$repo = $config['repo'];
2525
$user = $repo->read_record_by_id('user', $event->userid);
26-
$course = $repo->read_record_by_id('course', $event->courseid);
27-
$discussion = $repo->read_record_by_id('user', $event->relateduserid);
28-
$lang = utils\get_course_lang($course);
26+
$relateduser = $repo->read_record_by_id('user', $event->relateduserid);
2927

30-
return[[
28+
if ($event->courseid == "0") {
29+
$course = (object) [
30+
"id" => 0
31+
];
32+
$lang = "en";
33+
} else {
34+
$course = $repo->read_record_by_id('course', $event->courseid);
35+
$lang = utils\get_course_lang($course);
36+
}
37+
38+
$statement = [
3139
'actor' => utils\get_user($config, $user),
3240
'verb' => [
3341
'id' => 'http://id.tincanapi.com/verb/viewed',
3442
'display' => [
3543
$lang => 'viewed'
3644
],
3745
],
38-
'object' => utils\get_activity\user_report($config, $user, $course),
46+
'object' => utils\get_activity\user_report($config, $relateduser, $course, $lang),
3947
'timestamp' => utils\get_event_timestamp($event),
4048
'context' => [
4149
'platform' => $config['source_name'],
@@ -46,12 +54,17 @@ function user_report_viewed(array $config, \stdClass $event) {
4654
'contextActivities' => [
4755
'grouping' => [
4856
utils\get_activity\site($config),
49-
utils\get_activity\course($config, $course),
5057
],
5158
'category' => [
5259
utils\get_activity\source($config),
5360
]
5461
],
5562
]
56-
]];
63+
];
64+
65+
if ($event->courseid != "0") {
66+
array_push($statement['context']['contextActivities']['grouping'], utils\get_activity\course($config, $course));
67+
}
68+
69+
return[$statement];
5770
}

src/transformer/utils/get_activity/user_report.php

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,26 @@
1919

2020
use src\transformer\utils as utils;
2121

22-
function user_report(array $config, \stdClass $user, \stdClass $course) {
23-
$courselang = utils\get_course_lang($course);
22+
function user_report(array $config, \stdClass $user, \stdClass $course, $courselang) {
2423

25-
return [
26-
'id' => $config['app_url'].'/mod/forum/user.php?id='.$user->id.'&course='.$course->id,
24+
$activity = [
2725
'definition' => [
2826
'type' => 'http://id.tincanapi.com/activitytype/user-profile',
2927
'name' => [
3028
$courselang => 'forum posts of '.utils\get_full_name($user),
3129
],
3230
'extensions' => [
3331
'https://moodle.org/xapi/extensions/user_id' => $user->id,
34-
'https://moodle.org/xapi/extensions/course_id' => $course->id,
3532
],
3633
],
3734
];
35+
36+
if ($course->id == "0") {
37+
$activity['id'] = $config['app_url'].'/mod/forum/user.php?id='.$user->id;
38+
} else {
39+
$activity['id'] = $config['app_url'].'/mod/forum/user.php?id='.$user->id.'&course='.$course->id;
40+
$activity['definition']['extensions']['https://moodle.org/xapi/extensions/course_id'] = $course->id;
41+
}
42+
43+
return $activity;
3844
}

tests/mod_forum/user_report_viewed/existing_report_viewed/statements.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@
1414
}
1515
},
1616
"object": {
17-
"id": "http:\/\/www.example.org\/mod\/forum\/user.php?id=1&course=1",
1817
"definition": {
1918
"type": "http:\/\/id.tincanapi.com\/activitytype\/user-profile",
2019
"name": {
21-
"en": "forum posts of loggedin_user_firstname"
20+
"en": "forum posts of viewed_user_firstname"
2221
},
2322
"extensions": {
24-
"https:\/\/moodle.org\/xapi\/extensions\/user_id": 1,
23+
"https:\/\/moodle.org\/xapi\/extensions\/user_id": 2,
2524
"https:\/\/moodle.org\/xapi\/extensions\/course_id": 1
2625
}
27-
}
26+
},
27+
"id": "http:\/\/www.example.org\/mod\/forum\/user.php?id=2&course=1"
2828
},
2929
"timestamp": "2015-06-10T15:31:41+01:00",
3030
"context": {
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"user": [
3+
{
4+
"id": 1,
5+
"firstname": "loggedin_user_firstname",
6+
"email": "[email protected]"
7+
},
8+
{
9+
"id": 2,
10+
"firstname": "viewed_user_firstname",
11+
"email": "[email protected]"
12+
}
13+
],
14+
"course": [
15+
{
16+
"id": 1,
17+
"fullname": "test_name",
18+
"lang": "en"
19+
}
20+
]
21+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"id": 1,
3+
"userid": 1,
4+
"relateduserid": 2,
5+
"courseid": 0,
6+
"timecreated": 1433946701,
7+
"objecttable": null,
8+
"objectid": null,
9+
"eventname": "\\mod_forum\\event\\user_report_viewed"
10+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
[
2+
{
3+
"actor": {
4+
"name": "loggedin_user_firstname",
5+
"account": {
6+
"homePage": "http:\/\/www.example.org",
7+
"name": "1"
8+
}
9+
},
10+
"verb": {
11+
"id": "http:\/\/id.tincanapi.com\/verb\/viewed",
12+
"display": {
13+
"en": "viewed"
14+
}
15+
},
16+
"object": {
17+
"definition": {
18+
"type": "http:\/\/id.tincanapi.com\/activitytype\/user-profile",
19+
"name": {
20+
"en": "forum posts of viewed_user_firstname"
21+
},
22+
"extensions": {
23+
"https:\/\/moodle.org\/xapi\/extensions\/user_id": 2
24+
}
25+
},
26+
"id": "http:\/\/www.example.org\/mod\/forum\/user.php?id=2"
27+
},
28+
"timestamp": "2015-06-10T15:31:41+01:00",
29+
"context": {
30+
"platform": "Moodle",
31+
"language": "en",
32+
"extensions": {
33+
"http:\/\/lrs.learninglocker.net\/define\/extensions\/info": {
34+
"http:\/\/moodle.org": "1.0.0",
35+
"https:\/\/github.com\/xAPI-vle\/moodle-logstore_xapi": "0.0.0-development",
36+
"event_name": "\\mod_forum\\event\\user_report_viewed",
37+
"event_function": "\\src\\transformer\\events\\mod_forum\\user_report_viewed"
38+
}
39+
},
40+
"contextActivities": {
41+
"grouping": [
42+
{
43+
"id": "http:\/\/www.example.org",
44+
"definition": {
45+
"type": "http:\/\/id.tincanapi.com\/activitytype\/lms",
46+
"name": {
47+
"en": "test_name"
48+
}
49+
}
50+
}
51+
],
52+
"category": [
53+
{
54+
"id": "http:\/\/moodle.org",
55+
"definition": {
56+
"type": "http:\/\/id.tincanapi.com\/activitytype\/source",
57+
"name": {
58+
"en": "Moodle"
59+
}
60+
}
61+
}
62+
]
63+
}
64+
}
65+
}
66+
]
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
// This file is part of Moodle - http://moodle.org/
3+
//
4+
// Moodle is free software: you can redistribute it and/or modify
5+
// it under the terms of the GNU General Public License as published by
6+
// the Free Software Foundation, either version 3 of the License, or
7+
// (at your option) any later version.
8+
//
9+
// Moodle is distributed in the hope that it will be useful,
10+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
// GNU General Public License for more details.
13+
//
14+
// You should have received a copy of the GNU General Public License
15+
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
16+
17+
namespace tests\mod_forum\user_report_viewed\existing_report_viewed_all_courses;
18+
defined('MOODLE_INTERNAL') || die();
19+
20+
class test extends \tests\xapi_test_case {
21+
protected function get_test_dir() {
22+
return __DIR__;
23+
}
24+
}

0 commit comments

Comments
 (0)