original_string: public function revert_to_draft($userid) {
          global $DB, $USER;
  
          // Need grade permission.
          require_capability('mod/assign:grade', $this->context);
  
          if ($this->get_instance()->teamsubmission) {
              $submission = $this->get_group_submission($userid, 0, false);
          } else {
              $submission = $this->get_user_submission($userid, false);
          }
  
          if (!$submission) {
              return false;
          }
          $submission->status = ASSIGN_SUBMISSION_STATUS_DRAFT;
          $this->update_submission($submission, $userid, false, $this->get_instance()->teamsubmission);
  
          // Give each submission plugin a chance to process the reverting to draft.
          $plugins = $this->get_submission_plugins();
          foreach ($plugins as $plugin) {
              if ($plugin->is_enabled() && $plugin->is_visible()) {
                  $plugin->revert_to_draft($submission);
              }
          }
          // Update the modified time on the grade (grader modified).
          $grade = $this->get_user_grade($userid, true);
          $grade->grader = $USER->id;
          $this->update_grade($grade);
  
          $completion = new completion_info($this->get_course());
          if ($completion->is_enabled($this->get_course_module()) &&
                  $this->get_instance()->completionsubmit) {
              $completion->update_state($this->get_course_module(), COMPLETION_INCOMPLETE, $userid);
          }
          \mod_assign\event\submission_status_updated::create_from_submission($this, $submission)->trigger();
          return true;
      }
code: public function revert_to_draft($userid) {
          global $DB, $USER;
  
          // Need grade permission.
          require_capability('mod/assign:grade', $this->context);
  
          if ($this->get_instance()->teamsubmission) {
              $submission = $this->get_group_submission($userid, 0, false);
          } else {
              $submission = $this->get_user_submission($userid, false);
          }
  
          if (!$submission) {
              return false;
          }
          $submission->status = ASSIGN_SUBMISSION_STATUS_DRAFT;
          $this->update_submission($submission, $userid, false, $this->get_instance()->teamsubmission);
  
          // Give each submission plugin a chance to process the reverting to draft.
          $plugins = $this->get_submission_plugins();
          foreach ($plugins as $plugin) {
              if ($plugin->is_enabled() && $plugin->is_visible()) {
                  $plugin->revert_to_draft($submission);
              }
          }
          // Update the modified time on the grade (grader modified).
          $grade = $this->get_user_grade($userid, true);
          $grade->grader = $USER->id;
          $this->update_grade($grade);
  
          $completion = new completion_info($this->get_course());
          if ($completion->is_enabled($this->get_course_module()) &&
                  $this->get_instance()->completionsubmit) {
              $completion->update_state($this->get_course_module(), COMPLETION_INCOMPLETE, $userid);
          }
          \mod_assign\event\submission_status_updated::create_from_submission($this, $submission)->trigger();
          return true;
      }
code_tokens: public function revert_to_draft ( $ userid ) { global $ DB , $ USER ; // Need grade permission. require_capability ( 'mod/assign:grade' , $ this -> context ) ; if ( $ this -> get_instance ( ) -> teamsubmission ) { $ submission = $ this -> get_group_submission ( $ userid , 0 , false ) ; } else { $ submission = $ this -> get_user_submission ( $ userid , false ) ; } if ( ! $ submission ) { return false ; } $ submission -> status = ASSIGN_SUBMISSION_STATUS_DRAFT ; $ this -> update_submission ( $ submission , $ userid , false , $ this -> get_instance ( ) -> teamsubmission ) ; // Give each submission plugin a chance to process the reverting to draft. $ plugins = $ this -> get_submission_plugins ( ) ; foreach ( $ plugins as $ plugin ) { if ( $ plugin -> is_enabled ( ) && $ plugin -> is_visible ( ) ) { $ plugin -> revert_to_draft ( $ submission ) ; } } // Update the modified time on the grade (grader modified). $ grade = $ this -> get_user_grade ( $ userid , true ) ; $ grade -> grader = $ USER -> id ; $ this -> update_grade ( $ grade ) ; $ completion = new completion_info ( $ this -> get_course ( ) ) ; if ( $ completion -> is_enabled ( $ this -> get_course_module ( ) ) && $ this -> get_instance ( ) -> completionsubmit ) { $ completion -> update_state ( $ this -> get_course_module ( ) , COMPLETION_INCOMPLETE , $ userid ) ; } \ mod_assign \ event \ submission_status_updated :: create_from_submission ( $ this , $ submission ) -> trigger ( ) ; return true ; }
docstring: Revert to draft.
  
  @param int $userid
  @return boolean
docstring_tokens: Revert to draft .