protected function update_team_submission(stdClass $submission, $userid, $updatetime) {
        global $DB;

        if ($updatetime) {
            $submission->timemodified = time();
        }

        // First update the submission for the current user.
        $mysubmission = $this->get_user_submission($userid, true, $submission->attemptnumber);
        $mysubmission->status = $submission->status;

        $this->update_submission($mysubmission, 0, $updatetime, false);

        // Now check the team settings to see if this assignment qualifies as submitted or draft.
        $team = $this->get_submission_group_members($submission->groupid, true);

        $allsubmitted = true;
        $anysubmitted = false;
        $result = true;
        if ($submission->status != ASSIGN_SUBMISSION_STATUS_REOPENED) {
            foreach ($team as $member) {
                $membersubmission = $this->get_user_submission($member->id, false, $submission->attemptnumber);

                // If no submission found for team member and member is active then everyone has not submitted.
                if (!$membersubmission || $membersubmission->status != ASSIGN_SUBMISSION_STATUS_SUBMITTED
                        && ($this->is_active_user($member->id))) {
                    $allsubmitted = false;
                    if ($anysubmitted) {
                        break;
                    }
                } else {
                    $anysubmitted = true;
                }
            }
            if ($this->get_instance()->requireallteammemberssubmit) {
                if ($allsubmitted) {
                    $submission->status = ASSIGN_SUBMISSION_STATUS_SUBMITTED;
                } else {
                    $submission->status = ASSIGN_SUBMISSION_STATUS_DRAFT;
                }
                $result = $DB->update_record('assign_submission', $submission);
            } else {
                if ($anysubmitted) {
                    $submission->status = ASSIGN_SUBMISSION_STATUS_SUBMITTED;
                } else {
                    $submission->status = ASSIGN_SUBMISSION_STATUS_DRAFT;
                }
                $result = $DB->update_record('assign_submission', $submission);
            }
        } else {
            // Set the group submission to reopened.
            foreach ($team as $member) {
                $membersubmission = $this->get_user_submission($member->id, true, $submission->attemptnumber);
                $membersubmission->status = ASSIGN_SUBMISSION_STATUS_REOPENED;
                $result = $DB->update_record('assign_submission', $membersubmission) && $result;
            }
            $result = $DB->update_record('assign_submission', $submission) && $result;
        }

        $this->gradebook_item_update($submission);
        return $result;
    }
protected function update_team_submission(stdClass $submission, $userid, $updatetime) {
        global $DB;

        if ($updatetime) {
            $submission->timemodified = time();
        }

        // First update the submission for the current user.
        $mysubmission = $this->get_user_submission($userid, true, $submission->attemptnumber);
        $mysubmission->status = $submission->status;

        $this->update_submission($mysubmission, 0, $updatetime, false);

        // Now check the team settings to see if this assignment qualifies as submitted or draft.
        $team = $this->get_submission_group_members($submission->groupid, true);

        $allsubmitted = true;
        $anysubmitted = false;
        $result = true;
        if ($submission->status != ASSIGN_SUBMISSION_STATUS_REOPENED) {
            foreach ($team as $member) {
                $membersubmission = $this->get_user_submission($member->id, false, $submission->attemptnumber);

                // If no submission found for team member and member is active then everyone has not submitted.
                if (!$membersubmission || $membersubmission->status != ASSIGN_SUBMISSION_STATUS_SUBMITTED
                        && ($this->is_active_user($member->id))) {
                    $allsubmitted = false;
                    if ($anysubmitted) {
                        break;
                    }
                } else {
                    $anysubmitted = true;
                }
            }
            if ($this->get_instance()->requireallteammemberssubmit) {
                if ($allsubmitted) {
                    $submission->status = ASSIGN_SUBMISSION_STATUS_SUBMITTED;
                } else {
                    $submission->status = ASSIGN_SUBMISSION_STATUS_DRAFT;
                }
                $result = $DB->update_record('assign_submission', $submission);
            } else {
                if ($anysubmitted) {
                    $submission->status = ASSIGN_SUBMISSION_STATUS_SUBMITTED;
                } else {
                    $submission->status = ASSIGN_SUBMISSION_STATUS_DRAFT;
                }
                $result = $DB->update_record('assign_submission', $submission);
            }
        } else {
            // Set the group submission to reopened.
            foreach ($team as $member) {
                $membersubmission = $this->get_user_submission($member->id, true, $submission->attemptnumber);
                $membersubmission->status = ASSIGN_SUBMISSION_STATUS_REOPENED;
                $result = $DB->update_record('assign_submission', $membersubmission) && $result;
            }
            $result = $DB->update_record('assign_submission', $submission) && $result;
        }

        $this->gradebook_item_update($submission);
        return $result;
    }
protected function update_team_submission ( stdClass $ submission , $ userid , $ updatetime ) { global $ DB ; if ( $ updatetime ) { $ submission -> timemodified = time ( ) ; } // First update the submission for the current user. $ mysubmission = $ this -> get_user_submission ( $ userid , true , $ submission -> attemptnumber ) ; $ mysubmission -> status = $ submission -> status ; $ this -> update_submission ( $ mysubmission , 0 , $ updatetime , false ) ; // Now check the team settings to see if this assignment qualifies as submitted or draft. $ team = $ this -> get_submission_group_members ( $ submission -> groupid , true ) ; $ allsubmitted = true ; $ anysubmitted = false ; $ result = true ; if ( $ submission -> status != ASSIGN_SUBMISSION_STATUS_REOPENED ) { foreach ( $ team as $ member ) { $ membersubmission = $ this -> get_user_submission ( $ member -> id , false , $ submission -> attemptnumber ) ; // If no submission found for team member and member is active then everyone has not submitted. if ( ! $ membersubmission || $ membersubmission -> status != ASSIGN_SUBMISSION_STATUS_SUBMITTED && ( $ this -> is_active_user ( $ member -> id ) ) ) { $ allsubmitted = false ; if ( $ anysubmitted ) { break ; } } else { $ anysubmitted = true ; } } if ( $ this -> get_instance ( ) -> requireallteammemberssubmit ) { if ( $ allsubmitted ) { $ submission -> status = ASSIGN_SUBMISSION_STATUS_SUBMITTED ; } else { $ submission -> status = ASSIGN_SUBMISSION_STATUS_DRAFT ; } $ result = $ DB -> update_record ( 'assign_submission' , $ submission ) ; } else { if ( $ anysubmitted ) { $ submission -> status = ASSIGN_SUBMISSION_STATUS_SUBMITTED ; } else { $ submission -> status = ASSIGN_SUBMISSION_STATUS_DRAFT ; } $ result = $ DB -> update_record ( 'assign_submission' , $ submission ) ; } } else { // Set the group submission to reopened. foreach ( $ team as $ member ) { $ membersubmission = $ this -> get_user_submission ( $ member -> id , true , $ submission -> attemptnumber ) ; $ membersubmission -> status = ASSIGN_SUBMISSION_STATUS_REOPENED ; $ result = $ DB -> update_record ( 'assign_submission' , $ membersubmission ) && $ result ; } $ result = $ DB -> update_record ( 'assign_submission' , $ submission ) && $ result ; } $ this -> gradebook_item_update ( $ submission ) ; return $ result ; }
Update team submission.

@param stdClass $submission
@param int $userid
@param bool $updatetime
@return bool
Update team submission .