original_string: public function save_grade($userid, $data) {
  
          // Need grade permission.
          require_capability('mod/assign:grade', $this->context);
  
          $instance = $this->get_instance();
          $submission = null;
          if ($instance->teamsubmission) {
              // We need to know what the most recent group submission is.
              // Specifically when determining if we are adding another attempt (we only want to add one attempt per team),
              // and when deciding if we need to update the gradebook with an edited grade.
              $mostrecentsubmission = $this->get_group_submission($userid, 0, false, -1);
              $this->set_most_recent_team_submission($mostrecentsubmission);
              // Get the submission that we are saving grades for. The data attempt number determines which submission attempt.
              $submission = $this->get_group_submission($userid, 0, false, $data->attemptnumber);
          } else {
              $submission = $this->get_user_submission($userid, false, $data->attemptnumber);
          }
          if ($instance->teamsubmission && !empty($data->applytoall)) {
              $groupid = 0;
              if ($this->get_submission_group($userid)) {
                  $group = $this->get_submission_group($userid);
                  if ($group) {
                      $groupid = $group->id;
                  }
              }
              $members = $this->get_submission_group_members($groupid, true, $this->show_only_active_users());
              foreach ($members as $member) {
                  // We only want to update the grade for this group submission attempt. The data attempt number could be
                  // -1 which may end up in additional attempts being created for each group member instead of just one
                  // additional attempt for the group.
                  $this->apply_grade_to_user($data, $member->id, $submission->attemptnumber);
                  $this->process_outcomes($member->id, $data, $userid);
              }
          } else {
              $this->apply_grade_to_user($data, $userid, $data->attemptnumber);
  
              $this->process_outcomes($userid, $data);
          }
  
          return true;
      }
code: public function save_grade($userid, $data) {
  
          // Need grade permission.
          require_capability('mod/assign:grade', $this->context);
  
          $instance = $this->get_instance();
          $submission = null;
          if ($instance->teamsubmission) {
              // We need to know what the most recent group submission is.
              // Specifically when determining if we are adding another attempt (we only want to add one attempt per team),
              // and when deciding if we need to update the gradebook with an edited grade.
              $mostrecentsubmission = $this->get_group_submission($userid, 0, false, -1);
              $this->set_most_recent_team_submission($mostrecentsubmission);
              // Get the submission that we are saving grades for. The data attempt number determines which submission attempt.
              $submission = $this->get_group_submission($userid, 0, false, $data->attemptnumber);
          } else {
              $submission = $this->get_user_submission($userid, false, $data->attemptnumber);
          }
          if ($instance->teamsubmission && !empty($data->applytoall)) {
              $groupid = 0;
              if ($this->get_submission_group($userid)) {
                  $group = $this->get_submission_group($userid);
                  if ($group) {
                      $groupid = $group->id;
                  }
              }
              $members = $this->get_submission_group_members($groupid, true, $this->show_only_active_users());
              foreach ($members as $member) {
                  // We only want to update the grade for this group submission attempt. The data attempt number could be
                  // -1 which may end up in additional attempts being created for each group member instead of just one
                  // additional attempt for the group.
                  $this->apply_grade_to_user($data, $member->id, $submission->attemptnumber);
                  $this->process_outcomes($member->id, $data, $userid);
              }
          } else {
              $this->apply_grade_to_user($data, $userid, $data->attemptnumber);
  
              $this->process_outcomes($userid, $data);
          }
  
          return true;
      }
code_tokens: public function save_grade ( $ userid , $ data ) { // Need grade permission. require_capability ( 'mod/assign:grade' , $ this -> context ) ; $ instance = $ this -> get_instance ( ) ; $ submission = null ; if ( $ instance -> teamsubmission ) { // We need to know what the most recent group submission is. // Specifically when determining if we are adding another attempt (we only want to add one attempt per team), // and when deciding if we need to update the gradebook with an edited grade. $ mostrecentsubmission = $ this -> get_group_submission ( $ userid , 0 , false , - 1 ) ; $ this -> set_most_recent_team_submission ( $ mostrecentsubmission ) ; // Get the submission that we are saving grades for. The data attempt number determines which submission attempt. $ submission = $ this -> get_group_submission ( $ userid , 0 , false , $ data -> attemptnumber ) ; } else { $ submission = $ this -> get_user_submission ( $ userid , false , $ data -> attemptnumber ) ; } if ( $ instance -> teamsubmission && ! empty ( $ data -> applytoall ) ) { $ groupid = 0 ; if ( $ this -> get_submission_group ( $ userid ) ) { $ group = $ this -> get_submission_group ( $ userid ) ; if ( $ group ) { $ groupid = $ group -> id ; } } $ members = $ this -> get_submission_group_members ( $ groupid , true , $ this -> show_only_active_users ( ) ) ; foreach ( $ members as $ member ) { // We only want to update the grade for this group submission attempt. The data attempt number could be // -1 which may end up in additional attempts being created for each group member instead of just one // additional attempt for the group. $ this -> apply_grade_to_user ( $ data , $ member -> id , $ submission -> attemptnumber ) ; $ this -> process_outcomes ( $ member -> id , $ data , $ userid ) ; } } else { $ this -> apply_grade_to_user ( $ data , $ userid , $ data -> attemptnumber ) ; $ this -> process_outcomes ( $ userid , $ data ) ; } return true ; }
docstring: Save grade update.
  
  @param int $userid
  @param  stdClass $data
  @return bool - was the grade saved
docstring_tokens: Save grade update .