Skip to content
Snippets Groups Projects
Commit 2ca21a0e authored by Andrew Downes's avatar Andrew Downes Committed by Ryan Smith
Browse files

fix: Errors from null values. (#473 - Thanks @garemoko)

parent fab6b077
No related branches found
No related tags found
No related merge requests found
Showing
with 497 additions and 9 deletions
......@@ -29,10 +29,16 @@ function assignment_graded(array $config, \stdClass $event) {
$assignment = $repo->read_record_by_id('assign', $grade->assignment);
$lang = utils\get_course_lang($course);
$gradecomment = $repo->read_record('assignfeedback_comments', [
'assignment' => $grade->assignment,
'grade' => $grade->id
])->commenttext;
$gradecomment = null;
try {
$gradecomment = $repo->read_record('assignfeedback_comments', [
'assignment' => $grade->assignment,
'grade' => $grade->id
])->commenttext;
} catch (\Exception $e) {
$gradecomment = null;
}
$gradeitems = $repo->read_record('grade_items', [
'itemmodule' => 'assign',
'iteminstance' => $grade->assignment
......@@ -63,8 +69,7 @@ function assignment_graded(array $config, \stdClass $event) {
'raw' => $scoreraw
],
'completion' => true,
'success' => $success,
'response' => $gradecomment
'success' => $success
],
'timestamp' => utils\get_event_timestamp($event),
'context' => [
......@@ -86,6 +91,10 @@ function assignment_graded(array $config, \stdClass $event) {
]
];
if (!is_null($gradecomment)) {
$statement['result']['response'] = $gradecomment;
}
// Only include min score if raw score is valid for that min.
if ($scoreraw >= $scoremin) {
$statement['result']['score']['min'] = $scoremin;
......
......@@ -29,6 +29,8 @@ function essay(array $config, \stdClass $event, \stdClass $questionattempt, \std
$coursemodule = $repo->read_record_by_id('course_modules', $event->contextinstanceid);
$lang = utils\get_course_lang($course);
$responsesummary = is_null($questionattempt->responsesummary) ? '' : $questionattempt->responsesummary;
return [[
'actor' => utils\get_user($config, $user),
'verb' => [
......@@ -49,8 +51,8 @@ function essay(array $config, \stdClass $event, \stdClass $questionattempt, \std
],
'timestamp' => utils\get_event_timestamp($event),
'result' => [
'response' => $questionattempt->responsesummary,
'completion' => $questionattempt->responsesummary !== '',
'response' => $responsesummary,
'completion' => $responsesummary !== '',
],
'context' => [
'platform' => $config['source_name'],
......
......@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace tests\mod_assign\assignment_graded\existing_assignment_graded;
namespace tests\mod_assign\assignment_graded\existing_assignment_graded_comment;
defined('MOODLE_INTERNAL') || die();
class test extends \tests\xapi_test_case {
......
{
"user": [
{
"id": 1,
"firstname": "test_fullname",
"email": "test@test.com"
},
{
"id": 2,
"firstname": "test2_fullname",
"email": "test2@test.com"
}
],
"course": [
{
"id": 1,
"fullname": "test_name",
"lang": "en"
}
],
"course_modules": [
{
"id": 1,
"course": 1,
"module": 1,
"instance": 1
}
],
"assign": [
{
"id": 1,
"name": "test_name"
}
],
"grade": [
{
"id": 1,
"userid": 2,
"assignment": 1,
"grade": 1
}
],
"assignfeedback_comments": [
],
"grade_items": [
{
"id": 1,
"itemmodule": "assign",
"iteminstance": 1,
"grademin": 0,
"grademax": 2,
"gradepass": 1
}
]
}
\ No newline at end of file
{
"id": 1,
"userid": 1,
"courseid": 1,
"timecreated": 1433946701,
"objecttable": "grade",
"objectid": 1,
"contextinstanceid": 1,
"eventname": "\\mod_assign\\event\\submission_graded"
}
\ No newline at end of file
[
{
"actor": {
"name": "test2_fullname",
"account": {
"homePage": "http:\/\/www.example.org",
"name": "2"
}
},
"verb": {
"id": "http:\/\/adlnet.gov\/expapi\/verbs\/scored",
"display": {
"en": "attained grade for"
}
},
"object": {
"id": "http:\/\/www.example.org\/mod\/assign\/view.php?id=1",
"definition": {
"type": "http:\/\/adlnet.gov\/expapi\/activities\/assessment",
"name": {
"en": "test_name"
}
}
},
"result": {
"score": {
"raw": 1,
"min": 0,
"max": 2,
"scaled": 0.5
},
"completion": true,
"success": true
},
"timestamp": "2015-06-10T15:31:41+01:00",
"context": {
"instructor": {
"name": "test_fullname",
"account": {
"homePage": "http:\/\/www.example.org",
"name": "1"
}
},
"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_assign\\event\\submission_graded",
"event_function": "\\src\\transformer\\events\\mod_assign\\assignment_graded"
}
},
"contextActivities": {
"grouping": [
{
"id": "http:\/\/www.example.org",
"definition": {
"type": "http:\/\/id.tincanapi.com\/activitytype\/lms",
"name": {
"en": "test_name"
}
}
},
{
"id": "http:\/\/www.example.org\/course\/view.php?id=1",
"definition": {
"type": "http:\/\/id.tincanapi.com\/activitytype\/lms\/course",
"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
<?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 tests\mod_assign\assignment_graded\existing_assignment_graded_nocomment;
defined('MOODLE_INTERNAL') || die();
class test extends \tests\xapi_test_case {
protected function get_test_dir() {
return __DIR__;
}
}
\ No newline at end of file
{
"user": [
{
"id": 1,
"firstname": "test_fullname",
"email": "test@test.com"
}
],
"course": [
{
"id": 1,
"fullname": "test_name",
"lang": "en"
}
],
"course_modules": [
{
"id": 1,
"course": 1,
"module": 1,
"instance": 1
}
],
"modules": [
{
"id": 1,
"name": "quiz"
}
],
"quiz_attempts": [
{
"id": 1,
"quiz": 1,
"uniqueid": 1,
"sumgrades": 50,
"state": "finished",
"timefinish": 1,
"timestart": 0
}
],
"question_usages": [
{
"id": 1
}
],
"quiz": [
{
"id": 1,
"name": "test_quiz_name"
}
],
"grade_items": [
{
"id": 1,
"iteminstance": 1,
"itemmodule": "quiz",
"grademin": 0,
"grademax": 100,
"gradepass": 50
}
],
"question_attempts": [
{
"id": 1,
"questionusageid": 1,
"questionid": 1,
"responsesummary": null
}
],
"question": [
{
"id": 1,
"qtype": "essay",
"questiontext": "test_question"
}
]
}
\ No newline at end of file
{
"id": 1,
"relateduserid": 1,
"courseid": 1,
"timecreated": 1433946701,
"objecttable": "attempt",
"objectid": 1,
"contextinstanceid": 1,
"eventname": "\\mod_quiz\\event\\attempt_submitted"
}
\ No newline at end of file
[
{
"actor": {
"name": "test_fullname",
"account": {
"homePage": "http:\/\/www.example.org",
"name": "1"
}
},
"verb": {
"id": "http:\/\/adlnet.gov\/expapi\/verbs\/completed",
"display": {
"en": "completed"
}
},
"object": {
"id": "http:\/\/www.example.org\/mod\/quiz\/view.php?id=1",
"definition": {
"type": "http:\/\/adlnet.gov\/expapi\/activities\/assessment",
"name": {
"en": "test_quiz_name"
}
}
},
"timestamp": "2015-06-10T15:31:41+01:00",
"result": {
"score": {
"raw": 50,
"min": 0,
"max": 100,
"scaled": 0.5
},
"completion": true,
"success": true,
"duration": "PT1S"
},
"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_quiz\\event\\attempt_submitted",
"event_function": "\\src\\transformer\\events\\mod_quiz\\attempt_submitted\\handler"
}
},
"contextActivities": {
"other": [
{
"id": "http:\/\/www.example.org\/mod\/quiz\/attempt.php?attempt=1&cmid=1",
"definition": {
"type": "http:\/\/adlnet.gov\/expapi\/activities\/attempt",
"name": {
"en": "Attempt"
}
}
}
],
"grouping": [
{
"id": "http:\/\/www.example.org",
"definition": {
"type": "http:\/\/id.tincanapi.com\/activitytype\/lms",
"name": {
"en": "test_name"
}
}
},
{
"id": "http:\/\/www.example.org\/course\/view.php?id=1",
"definition": {
"type": "http:\/\/id.tincanapi.com\/activitytype\/lms\/course",
"name": {
"en": "test_name"
}
}
}
],
"category": [
{
"id": "http:\/\/moodle.org",
"definition": {
"type": "http:\/\/id.tincanapi.com\/activitytype\/source",
"name": {
"en": "Moodle"
}
}
}
]
}
}
},
{
"actor": {
"name": "test_fullname",
"account": {
"homePage": "http:\/\/www.example.org",
"name": "1"
}
},
"verb": {
"id": "http:\/\/adlnet.gov\/expapi\/verbs\/answered",
"display": {
"en": "answered"
}
},
"object": {
"id": "http:\/\/www.example.org\/question\/question.php?cmid=1&id=1",
"definition": {
"type": "http:\/\/adlnet.gov\/expapi\/activities\/cmi.interaction",
"name": {
"en": "test_question"
},
"interactionType": "long-fill-in"
}
},
"timestamp": "2015-06-10T15:31:41+01:00",
"result": {
"response": "",
"completion": false
},
"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_quiz\\event\\attempt_submitted",
"event_function": "\\src\\transformer\\events\\mod_quiz\\attempt_submitted\\handler"
}
},
"contextActivities": {
"grouping": [
{
"id": "http:\/\/www.example.org",
"definition": {
"type": "http:\/\/id.tincanapi.com\/activitytype\/lms",
"name": {
"en": "test_name"
}
}
},
{
"id": "http:\/\/www.example.org\/course\/view.php?id=1",
"definition": {
"type": "http:\/\/id.tincanapi.com\/activitytype\/lms\/course",
"name": {
"en": "test_name"
}
}
},
{
"id": "http:\/\/www.example.org\/mod\/quiz\/view.php?id=1",
"definition": {
"type": "http:\/\/adlnet.gov\/expapi\/activities\/assessment",
"name": {
"en": "test_quiz_name"
}
}
},
{
"id": "http:\/\/www.example.org\/mod\/quiz\/attempt.php?attempt=1&cmid=1",
"definition": {
"type": "http:\/\/adlnet.gov\/expapi\/activities\/attempt",
"name": {
"en": "Attempt"
}
}
}
],
"category": [
{
"id": "http:\/\/moodle.org",
"definition": {
"type": "http:\/\/id.tincanapi.com\/activitytype\/source",
"name": {
"en": "Moodle"
}
}
}
]
}
}
}
]
\ No newline at end of file
<?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 tests\mod_quiz\attempt_submitted\essay_null_response;
defined('MOODLE_INTERNAL') || die();
class test extends \tests\xapi_test_case {
protected function get_test_dir() {
return __DIR__;
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment