MDL-72604 assign: Return missing submission status

This commit is contained in:
Juan Leyva
2021-12-10 11:07:41 +01:00
parent 5ee0b620ae
commit eb5b0da2ff
4 changed files with 14 additions and 0 deletions
+6
View File
@@ -2688,6 +2688,7 @@ class mod_assign_external extends external_api {
$userdetails['submitted'] = $record->submitted;
$userdetails['requiregrading'] = $record->requiregrading;
$userdetails['grantedextension'] = $record->grantedextension;
$userdetails['submissionstatus'] = $record->submissionstatus;
if (!empty($record->groupid)) {
$userdetails['groupid'] = $record->groupid;
}
@@ -2765,6 +2766,8 @@ class mod_assign_external extends external_api {
'submitted' => new external_value(PARAM_BOOL, 'have they submitted their assignment'),
'requiregrading' => new external_value(PARAM_BOOL, 'is their submission waiting for grading'),
'grantedextension' => new external_value(PARAM_BOOL, 'have they been granted an extension'),
'submissionstatus' => new external_value(PARAM_ALPHA, 'The submission status (new, draft, reopened or submitted).
Empty when not submitted.', VALUE_OPTIONAL),
'groupid' => new external_value(PARAM_INT, 'for group assignments this is the group id', VALUE_OPTIONAL),
'groupname' => new external_value(PARAM_NOTAGS, 'for group assignments this is the group name', VALUE_OPTIONAL),
];
@@ -2831,6 +2834,7 @@ class mod_assign_external extends external_api {
'submitted' => $participant->submitted,
'requiregrading' => $participant->requiregrading,
'grantedextension' => $participant->grantedextension,
'submissionstatus' => $participant->submissionstatus,
'blindmarking' => $assign->is_blind_marking(),
'allowsubmissionsfromdate' => $assign->get_instance($userid)->allowsubmissionsfromdate,
'duedate' => $assign->get_instance($userid)->duedate,
@@ -2880,6 +2884,8 @@ class mod_assign_external extends external_api {
'duedatestr' => new external_value(PARAM_TEXT, 'duedate for the user'),
'groupid' => new external_value(PARAM_INT, 'for group assignments this is the group id', VALUE_OPTIONAL),
'groupname' => new external_value(PARAM_NOTAGS, 'for group assignments this is the group name', VALUE_OPTIONAL),
'submissionstatus' => new external_value(PARAM_ALPHA, 'The submission status (new, draft, reopened or submitted).
Empty when not submitted.', VALUE_OPTIONAL),
'user' => $userdescription,
));
}
+3
View File
@@ -2058,6 +2058,7 @@ class assign {
$participants[$userid]->submitted = false;
$participants[$userid]->requiregrading = false;
$participants[$userid]->grantedextension = false;
$participants[$userid]->submissionstatus = '';
}
foreach ($records as $userid => $submissioninfo) {
@@ -2065,6 +2066,7 @@ class assign {
$submitted = false;
$requiregrading = false;
$grantedextension = false;
$submissionstatus = !empty($submissioninfo->status) ? $submissioninfo->status : '';
if (!empty($submissioninfo->stime) && $submissioninfo->status == ASSIGN_SUBMISSION_STATUS_SUBMITTED) {
$submitted = true;
@@ -2083,6 +2085,7 @@ class assign {
$participants[$userid]->submitted = $submitted;
$participants[$userid]->requiregrading = $requiregrading;
$participants[$userid]->grantedextension = $grantedextension;
$participants[$userid]->submissionstatus = $submissionstatus;
if ($this->get_instance()->teamsubmission) {
$group = $this->get_submission_group($userid);
if ($group) {
+3
View File
@@ -2475,6 +2475,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
$this->assertFalse($result['submitted']);
$this->assertFalse($result['requiregrading']);
$this->assertFalse($result['grantedextension']);
$this->assertEquals('', $result['submissionstatus']);
$this->assertTrue($result['blindmarking']);
// Make sure we don't get any additional info.
$this->assertArrayNotHasKey('user', $result);
@@ -2529,6 +2530,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
$this->assertTrue($result['submitted']);
$this->assertTrue($result['requiregrading']);
$this->assertFalse($result['grantedextension']);
$this->assertEquals(ASSIGN_SUBMISSION_STATUS_SUBMITTED, $result['submissionstatus']);
$this->assertFalse($result['blindmarking']);
// Make sure we don't get any additional info.
$this->assertArrayNotHasKey('user', $result);
@@ -2714,6 +2716,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
$this->assertEquals($student->phone2, $participant['phone2']);
$this->assertEquals($student->department, $participant['department']);
$this->assertEquals($student->institution, $participant['institution']);
$this->assertEquals('', $participant['submissionstatus']);
$this->assertArrayHasKey('enrolledcourses', $participant);
$participants = mod_assign_external::list_participants($assignment->id, 0, '', 0, 0, false, false, true);
+2
View File
@@ -4,6 +4,8 @@ This files describes API changes in the assign code.
* Renderer (renderer.php) has been moved from mod root to classes/output/ to be more PSR compliant.
* Class assign_header has been moved from renderable.php to classes/ouput/assign_header.php
* Class assign_submion_status has been moved from renderable.php to classes/ouput/assign_submion_status.php
* The external functions mod_assign_external::list_participants and mod_assign_external::get_participant now return a new field
"submissionstatus" indicating the submission status (new, draft, reopened or submitted). Empty when not submitted.
=== 3.9 ===