diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index 4a6aa93d106..8c7f0e61418 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -5380,7 +5380,10 @@ class assign { $flags->allocatedmarker = $modified->allocatedmarker; } if ($workflowstatemodified || $allocatedmarkermodified) { - $this->update_user_flags($flags); + if ($this->update_user_flags($flags) && $workflowstatemodified) { + $user = $DB->get_record('user', array('id' => $userid), '*', MUST_EXIST); + \mod_assign\event\workflow_state_updated::create_from_user($this, $user, $flags->workflowstate)->trigger(); + } } $this->update_grade($grade); @@ -6625,9 +6628,15 @@ class assign { } if (isset($formdata->workflowstate) || isset($formdata->allocatedmarker)) { $flags = $this->get_user_flags($userid, true); + $oldworkflowstate = $flags->workflowstate; $flags->workflowstate = isset($formdata->workflowstate) ? $formdata->workflowstate : $flags->workflowstate; $flags->allocatedmarker = isset($formdata->allocatedmarker) ? $formdata->allocatedmarker : $flags->allocatedmarker; - $this->update_user_flags($flags); + if ($this->update_user_flags($flags) && + isset($formdata->workflowstate) && + $formdata->workflowstate !== $oldworkflowstate) { + $user = $DB->get_record('user', array('id' => $userid), '*', MUST_EXIST); + \mod_assign\event\workflow_state_updated::create_from_user($this, $user, $formdata->workflowstate)->trigger(); + } } } $grade->grader= $USER->id;