From 35ae5f78cba80c16814a7cb1fc05ee4c663a1690 Mon Sep 17 00:00:00 2001
From: Ryan Smith <3045513+ryansmith94@users.noreply.github.com>
Date: Thu, 2 Aug 2018 10:35:04 +0100
Subject: [PATCH] fix: Improves assignment activity for #186. (#206)

---
 .../events/mod_assign/assignment_graded.php   |  5 +--
 .../mod_assign/assignment_submitted.php       |  4 ++-
 .../utils/get_activity/course_assignment.php  | 32 +++++++++++++++++++
 .../existing_assignment_graded/data.json      |  8 +++++
 .../existing_assignment_graded/event.json     |  1 +
 .../statements.json                           | 13 +-------
 .../existing_assignment_submitted/data.json   | 16 +++++++++-
 .../existing_assignment_submitted/event.json  |  1 +
 .../statements.json                           |  4 +--
 9 files changed, 64 insertions(+), 20 deletions(-)
 create mode 100644 src/transformer/utils/get_activity/course_assignment.php

diff --git a/src/transformer/events/mod_assign/assignment_graded.php b/src/transformer/events/mod_assign/assignment_graded.php
index ae0284e..b0b449c 100644
--- a/src/transformer/events/mod_assign/assignment_graded.php
+++ b/src/transformer/events/mod_assign/assignment_graded.php
@@ -64,7 +64,7 @@ function assignment_graded(array $config, \stdClass $event) {
                 $lang => 'attained grade for'
             ],
         ],
-        'object' => utils\get_activity\module($config, 'assign', $assignment, $lang),
+        'object' => utils\get_activity\course_assignment($config, $event->contextinstanceid, $assignment->name, $lang),
         'result' => [
             'score' => [
                 'raw' => $scoreraw,
@@ -84,9 +84,6 @@ function assignment_graded(array $config, \stdClass $event) {
                 utils\INFO_EXTENSION => utils\get_info($config, $event),
             ],
             'contextActivities' => [
-                'other' => [
-                    utils\get_activity\event_module($config, $event, $lang)
-                ],
                 'grouping' => [
                     utils\get_activity\site($config),
                     utils\get_activity\course($config, $course)
diff --git a/src/transformer/events/mod_assign/assignment_submitted.php b/src/transformer/events/mod_assign/assignment_submitted.php
index 1d09c84..f404d72 100644
--- a/src/transformer/events/mod_assign/assignment_submitted.php
+++ b/src/transformer/events/mod_assign/assignment_submitted.php
@@ -24,6 +24,8 @@ function assignment_submitted(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);
+    $assignmentsubmission = $repo->read_record_by_id('assign_submission', $event->objectid);
+    $assignment = $repo->read_record_by_id('assign', $assignmentsubmission->assignment);
     $lang = utils\get_course_lang($course);
 
     return [[
@@ -34,7 +36,7 @@ function assignment_submitted(array $config, \stdClass $event) {
                 $lang => 'submitted'
             ],
         ],
-        'object' => utils\get_activity\event_module($config, $event, $lang),
+        'object' => utils\get_activity\course_assignment($config, $event->contextinstanceid, $assignment->name, $lang),
         'timestamp' => utils\get_event_timestamp($event),
         'context' => [
             'platform' => $config['source_name'],
diff --git a/src/transformer/utils/get_activity/course_assignment.php b/src/transformer/utils/get_activity/course_assignment.php
new file mode 100644
index 0000000..ef5afcb
--- /dev/null
+++ b/src/transformer/utils/get_activity/course_assignment.php
@@ -0,0 +1,32 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+namespace src\transformer\utils\get_activity;
+defined('MOODLE_INTERNAL') || die();
+
+use src\transformer\utils as utils;
+
+function course_assignment(array $config, $cmid, $name, $lang) {
+    return [
+        'id' => $config['app_url'].'/mod/assign/view.php?id='.$cmid,
+        'definition' => [
+            'type' => 'http://adlnet.gov/expapi/activities/assessment',
+            'name' => [
+                $lang => $name,
+            ],
+        ],
+    ];
+}
diff --git a/tests/mod_assign/assignment_graded/existing_assignment_graded/data.json b/tests/mod_assign/assignment_graded/existing_assignment_graded/data.json
index aec10aa..4c285fc 100644
--- a/tests/mod_assign/assignment_graded/existing_assignment_graded/data.json
+++ b/tests/mod_assign/assignment_graded/existing_assignment_graded/data.json
@@ -18,6 +18,14 @@
             "lang": "en"
         }
     ],
+    "course_modules": [
+        {
+            "id": 1,
+            "course": 1,
+            "module": 1,
+            "instance": 1
+        }
+    ],
     "assign": [
         {
             "id": 1,
diff --git a/tests/mod_assign/assignment_graded/existing_assignment_graded/event.json b/tests/mod_assign/assignment_graded/existing_assignment_graded/event.json
index d1d4841..bce74db 100644
--- a/tests/mod_assign/assignment_graded/existing_assignment_graded/event.json
+++ b/tests/mod_assign/assignment_graded/existing_assignment_graded/event.json
@@ -5,5 +5,6 @@
     "timecreated": 1433946701,
     "objecttable": "grade",
     "objectid": 1,
+    "contextinstanceid": 1,
     "eventname": "\\mod_assign\\event\\submission_graded"
 }
\ No newline at end of file
diff --git a/tests/mod_assign/assignment_graded/existing_assignment_graded/statements.json b/tests/mod_assign/assignment_graded/existing_assignment_graded/statements.json
index a1c609f..af77aa6 100644
--- a/tests/mod_assign/assignment_graded/existing_assignment_graded/statements.json
+++ b/tests/mod_assign/assignment_graded/existing_assignment_graded/statements.json
@@ -16,7 +16,7 @@
         "object": {
             "id": "http:\/\/www.example.org\/mod\/assign\/view.php?id=1",
             "definition": {
-                "type": "http:\/\/id.tincanapi.com\/activitytype\/lms\/module",
+                "type": "http:\/\/adlnet.gov\/expapi\/activities\/assessment",
                 "name": {
                     "en": "test_name"
                 }
@@ -52,17 +52,6 @@
                 }
             },
             "contextActivities": {
-                "other": [
-                    {
-                        "id": "http:\/\/www.example.org\/mod\/grade\/view.php?id=1",
-                        "definition": {
-                            "type": "http:\/\/id.tincanapi.com\/activitytype\/lms\/module",
-                            "name": {
-                                "en": "grade"
-                            }
-                        }
-                    }
-                ],
                 "grouping": [
                     {
                         "id": "http:\/\/www.example.org",
diff --git a/tests/mod_assign/assignment_submitted/existing_assignment_submitted/data.json b/tests/mod_assign/assignment_submitted/existing_assignment_submitted/data.json
index 9972817..d64a6e5 100644
--- a/tests/mod_assign/assignment_submitted/existing_assignment_submitted/data.json
+++ b/tests/mod_assign/assignment_submitted/existing_assignment_submitted/data.json
@@ -13,7 +13,21 @@
             "lang": "en"
         }
     ],
-    "assignment_submissions": [
+    "course_modules": [
+        {
+            "id": 1,
+            "course": 1,
+            "module": 1,
+            "instance": 1
+        }
+    ],
+    "assign_submission": [
+        {
+            "id": 1,
+            "assignment": 1
+        }
+    ],
+    "assign": [
         {
             "id": 1,
             "name": "test_name"
diff --git a/tests/mod_assign/assignment_submitted/existing_assignment_submitted/event.json b/tests/mod_assign/assignment_submitted/existing_assignment_submitted/event.json
index bfcfbb9..59ba355 100644
--- a/tests/mod_assign/assignment_submitted/existing_assignment_submitted/event.json
+++ b/tests/mod_assign/assignment_submitted/existing_assignment_submitted/event.json
@@ -5,5 +5,6 @@
     "timecreated": 1433946701,
     "objecttable": "assignment_submissions",
     "objectid": 1,
+    "contextinstanceid": 1,
     "eventname": "\\mod_assign\\event\\assessable_submitted"
 }
\ No newline at end of file
diff --git a/tests/mod_assign/assignment_submitted/existing_assignment_submitted/statements.json b/tests/mod_assign/assignment_submitted/existing_assignment_submitted/statements.json
index b07cb6c..a3dba30 100644
--- a/tests/mod_assign/assignment_submitted/existing_assignment_submitted/statements.json
+++ b/tests/mod_assign/assignment_submitted/existing_assignment_submitted/statements.json
@@ -14,9 +14,9 @@
             }
         },
         "object": {
-            "id": "http:\/\/www.example.org\/mod\/assignment_submissions\/view.php?id=1",
+            "id": "http:\/\/www.example.org\/mod\/assign\/view.php?id=1",
             "definition": {
-                "type": "http:\/\/id.tincanapi.com\/activitytype\/lms\/module",
+                "type": "http:\/\/adlnet.gov\/expapi\/activities\/assessment",
                 "name": {
                     "en": "test_name"
                 }
-- 
GitLab