original_string: public static function launch_feedback($feedbackid, $courseid = 0) {
          global $PAGE;
  
          $params = array('feedbackid' => $feedbackid, 'courseid' => $courseid);
          $params = self::validate_parameters(self::launch_feedback_parameters(), $params);
          $warnings = array();
  
          list($feedback, $course, $cm, $context, $completioncourse) = self::validate_feedback($params['feedbackid'],
              $params['courseid']);
          // Check we can do a new submission (or continue an existing).
          $feedbackcompletion = self::validate_feedback_access($feedback, $completioncourse, $cm, $context, true);
  
          $gopage = $feedbackcompletion->get_resume_page();
          if ($gopage === null) {
              $gopage = -1; // Last page.
          }
  
          $result = array(
              'gopage' => $gopage,
              'warnings' => $warnings
          );
          return $result;
      }
code: public static function launch_feedback($feedbackid, $courseid = 0) {
          global $PAGE;
  
          $params = array('feedbackid' => $feedbackid, 'courseid' => $courseid);
          $params = self::validate_parameters(self::launch_feedback_parameters(), $params);
          $warnings = array();
  
          list($feedback, $course, $cm, $context, $completioncourse) = self::validate_feedback($params['feedbackid'],
              $params['courseid']);
          // Check we can do a new submission (or continue an existing).
          $feedbackcompletion = self::validate_feedback_access($feedback, $completioncourse, $cm, $context, true);
  
          $gopage = $feedbackcompletion->get_resume_page();
          if ($gopage === null) {
              $gopage = -1; // Last page.
          }
  
          $result = array(
              'gopage' => $gopage,
              'warnings' => $warnings
          );
          return $result;
      }
code_tokens: public static function launch_feedback ( $ feedbackid , $ courseid = 0 ) { global $ PAGE ; $ params = array ( 'feedbackid' => $ feedbackid , 'courseid' => $ courseid ) ; $ params = self :: validate_parameters ( self :: launch_feedback_parameters ( ) , $ params ) ; $ warnings = array ( ) ; list ( $ feedback , $ course , $ cm , $ context , $ completioncourse ) = self :: validate_feedback ( $ params [ 'feedbackid' ] , $ params [ 'courseid' ] ) ; // Check we can do a new submission (or continue an existing). $ feedbackcompletion = self :: validate_feedback_access ( $ feedback , $ completioncourse , $ cm , $ context , true ) ; $ gopage = $ feedbackcompletion -> get_resume_page ( ) ; if ( $ gopage === null ) { $ gopage = - 1 ; // Last page. } $ result = array ( 'gopage' => $ gopage , 'warnings' => $ warnings ) ; return $ result ; }
docstring: Starts or continues a feedback submission
  
  @param array $feedbackid feedback instance id
  @param int $courseid course where user completes a feedback (for site feedbacks only).
  @return array of warnings and launch information
  @since Moodle 3.3
docstring_tokens: Starts or continues a feedback submission