mirror of
https://github.com/moodle/moodle.git
synced 2025-03-18 22:50:19 +01:00
Merge branch 'MDL-58711-master' of git://github.com/jleyva/moodle
This commit is contained in:
commit
b678f3309d
@ -2133,9 +2133,10 @@ class assign {
|
||||
* This means the submission modification time is more recent than the
|
||||
* grading modification time and the status is SUBMITTED.
|
||||
*
|
||||
* @param mixed $currentgroup int|null the group for counting (if null the function will determine it)
|
||||
* @return int number of matching submissions
|
||||
*/
|
||||
public function count_submissions_need_grading() {
|
||||
public function count_submissions_need_grading($currentgroup = null) {
|
||||
global $DB;
|
||||
|
||||
if ($this->get_instance()->teamsubmission) {
|
||||
@ -2143,7 +2144,9 @@ class assign {
|
||||
return 0;
|
||||
}
|
||||
|
||||
$currentgroup = groups_get_activity_group($this->get_course_module(), true);
|
||||
if ($currentgroup === null) {
|
||||
$currentgroup = groups_get_activity_group($this->get_course_module(), true);
|
||||
}
|
||||
list($esql, $params) = get_enrolled_sql($this->get_context(), 'mod/assign:submit', $currentgroup, true);
|
||||
|
||||
$params['assignid'] = $this->get_instance()->id;
|
||||
@ -2250,12 +2253,15 @@ class assign {
|
||||
* Load a count of submissions with a specified status.
|
||||
*
|
||||
* @param string $status The submission status - should match one of the constants
|
||||
* @param mixed $currentgroup int|null the group for counting (if null the function will determine it)
|
||||
* @return int number of matching submissions
|
||||
*/
|
||||
public function count_submissions_with_status($status) {
|
||||
public function count_submissions_with_status($status, $currentgroup = null) {
|
||||
global $DB;
|
||||
|
||||
$currentgroup = groups_get_activity_group($this->get_course_module(), true);
|
||||
if ($currentgroup === null) {
|
||||
$currentgroup = groups_get_activity_group($this->get_course_module(), true);
|
||||
}
|
||||
list($esql, $params) = get_enrolled_sql($this->get_context(), 'mod/assign:submit', $currentgroup, true);
|
||||
|
||||
$params['assignid'] = $this->get_instance()->id;
|
||||
@ -5322,13 +5328,13 @@ class assign {
|
||||
|
||||
$summary = new assign_grading_summary($this->count_teams($activitygroup),
|
||||
$instance->submissiondrafts,
|
||||
$this->count_submissions_with_status($draft),
|
||||
$this->count_submissions_with_status($draft, $activitygroup),
|
||||
$this->is_any_submission_plugin_enabled(),
|
||||
$this->count_submissions_with_status($submitted),
|
||||
$this->count_submissions_with_status($submitted, $activitygroup),
|
||||
$instance->cutoffdate,
|
||||
$instance->duedate,
|
||||
$this->get_course_module()->id,
|
||||
$this->count_submissions_need_grading(),
|
||||
$this->count_submissions_need_grading($activitygroup),
|
||||
$instance->teamsubmission,
|
||||
$warnofungroupedusers,
|
||||
$this->can_grade());
|
||||
@ -5337,13 +5343,13 @@ class assign {
|
||||
$countparticipants = $this->count_participants($activitygroup);
|
||||
$summary = new assign_grading_summary($countparticipants,
|
||||
$instance->submissiondrafts,
|
||||
$this->count_submissions_with_status($draft),
|
||||
$this->count_submissions_with_status($draft, $activitygroup),
|
||||
$this->is_any_submission_plugin_enabled(),
|
||||
$this->count_submissions_with_status($submitted),
|
||||
$this->count_submissions_with_status($submitted, $activitygroup),
|
||||
$instance->cutoffdate,
|
||||
$instance->duedate,
|
||||
$this->get_course_module()->id,
|
||||
$this->count_submissions_need_grading(),
|
||||
$this->count_submissions_need_grading($activitygroup),
|
||||
$instance->teamsubmission,
|
||||
false,
|
||||
$this->can_grade());
|
||||
|
@ -2021,8 +2021,9 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
|
||||
$this->assertEquals(1, $result['gradingsummary']['participantcount']);
|
||||
$this->assertEquals(0, $result['gradingsummary']['submissiondraftscount']);
|
||||
$this->assertEquals(1, $result['gradingsummary']['submissionsenabled']);
|
||||
$this->assertEquals(1, $result['gradingsummary']['submissionssubmittedcount']);
|
||||
$this->assertEquals(1, $result['gradingsummary']['submissionsneedgradingcount']);
|
||||
$this->assertEquals(0, $result['gradingsummary']['submissiondraftscount']);
|
||||
$this->assertEquals(1, $result['gradingsummary']['submissionssubmittedcount']); // One student from G1 submitted.
|
||||
$this->assertEquals(1, $result['gradingsummary']['submissionsneedgradingcount']); // One student from G1 submitted.
|
||||
$this->assertFalse($result['gradingsummary']['warnofungroupedusers']);
|
||||
|
||||
// Second group.
|
||||
@ -2030,12 +2031,28 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
|
||||
$result = external_api::clean_returnvalue(mod_assign_external::get_submission_status_returns(), $result);
|
||||
$this->assertCount(0, $result['warnings']);
|
||||
$this->assertEquals(1, $result['gradingsummary']['participantcount']);
|
||||
$this->assertEquals(0, $result['gradingsummary']['submissionssubmittedcount']); // G2 students didn't submit yet.
|
||||
$this->assertEquals(0, $result['gradingsummary']['submissionsneedgradingcount']); // G2 students didn't submit yet.
|
||||
|
||||
// Should return also 1 participant if we allow the function to auto-select the group.
|
||||
$result = mod_assign_external::get_submission_status($assign->get_instance()->id);
|
||||
$result = external_api::clean_returnvalue(mod_assign_external::get_submission_status_returns(), $result);
|
||||
$this->assertCount(0, $result['warnings']);
|
||||
$this->assertEquals(1, $result['gradingsummary']['participantcount']);
|
||||
$this->assertEquals(0, $result['gradingsummary']['submissiondraftscount']);
|
||||
$this->assertEquals(1, $result['gradingsummary']['submissionssubmittedcount']); // One student from G1 submitted.
|
||||
$this->assertEquals(1, $result['gradingsummary']['submissionsneedgradingcount']); // One student from G1 submitted.
|
||||
|
||||
// Now check draft submissions.
|
||||
list($assign, $instance, $student1, $student2, $teacher, $g1, $g2) = $this->create_submission_for_testing_status(false);
|
||||
$this->setUser($teacher);
|
||||
$result = mod_assign_external::get_submission_status($assign->get_instance()->id, 0, $g1->id);
|
||||
$result = external_api::clean_returnvalue(mod_assign_external::get_submission_status_returns(), $result);
|
||||
$this->assertCount(0, $result['warnings']);
|
||||
$this->assertEquals(1, $result['gradingsummary']['participantcount']);
|
||||
$this->assertEquals(1, $result['gradingsummary']['submissiondraftscount']); // We have a draft submission.
|
||||
$this->assertEquals(0, $result['gradingsummary']['submissionssubmittedcount']); // We have only draft submissions.
|
||||
$this->assertEquals(0, $result['gradingsummary']['submissionsneedgradingcount']); // We have only draft submissions.
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,8 +1,8 @@
|
||||
This files describes API changes in the assign code.
|
||||
|
||||
=== 3.5 ===
|
||||
* Functions assign:get_assign_grading_summary_renderable, assign:can_view_submission and mod_assign_external::get_submission_status
|
||||
now admit an additional group parameter.
|
||||
* Functions assign:get_assign_grading_summary_renderable, assign:can_view_submission, assign:count_submissions_with_status,
|
||||
assign:count_submissions_need_grading and mod_assign_external::get_submission_status now admit an additional group parameter.
|
||||
This parameter can be used to force those functions to retrieve data only for the given group.
|
||||
|
||||
=== 3.4 ===
|
||||
|
Loading…
x
Reference in New Issue
Block a user