original_string: public static function get_course_grades($userid = 0) {
          global $USER;
  
          $warnings = array();
  
          // Validate the parameter.
          $params = self::validate_parameters(self::get_course_grades_parameters(),
              array(
                  'userid' => $userid
              )
          );
  
          $userid = $params['userid'];
          if (empty($userid)) {
              $userid = $USER->id;
          }
  
          $systemcontext = context_system::instance();
          self::validate_context($systemcontext);
  
          if ($USER->id != $userid) {
              // We must check if the current user can view other users grades.
              $user = core_user::get_user($userid, '*', MUST_EXIST);
              core_user::require_active_user($user);
              require_capability('moodle/grade:viewall', $systemcontext);
          }
  
          // We need the site course, and course context.
          $course = get_course(SITEID);
          $context = context_course::instance($course->id);
  
          // Force a regrade if required.
          grade_regrade_final_grades_if_required($course);
          // Get the course final grades now.
          $gpr = new grade_plugin_return(array('type' => 'report', 'plugin' => 'overview', 'courseid' => $course->id,
                                          'userid' => $userid));
          $report = new grade_report_overview($userid, $gpr, $context);
          $coursesgrades = $report->setup_courses_data(true);
  
          $grades = array();
          foreach ($coursesgrades as $coursegrade) {
              $gradeinfo = array(
                  'courseid' => $coursegrade['course']->id,
                  'grade' => grade_format_gradevalue($coursegrade['finalgrade'], $coursegrade['courseitem'], true),
                  'rawgrade' => $coursegrade['finalgrade'],
              );
              if (isset($coursegrade['rank'])) {
                  $gradeinfo['rank'] = $coursegrade['rank'];
              }
              $grades[] = $gradeinfo;
          }
  
          $result = array();
          $result['grades'] = $grades;
          $result['warnings'] = $warnings;
          return $result;
      }
code: public static function get_course_grades($userid = 0) {
          global $USER;
  
          $warnings = array();
  
          // Validate the parameter.
          $params = self::validate_parameters(self::get_course_grades_parameters(),
              array(
                  'userid' => $userid
              )
          );
  
          $userid = $params['userid'];
          if (empty($userid)) {
              $userid = $USER->id;
          }
  
          $systemcontext = context_system::instance();
          self::validate_context($systemcontext);
  
          if ($USER->id != $userid) {
              // We must check if the current user can view other users grades.
              $user = core_user::get_user($userid, '*', MUST_EXIST);
              core_user::require_active_user($user);
              require_capability('moodle/grade:viewall', $systemcontext);
          }
  
          // We need the site course, and course context.
          $course = get_course(SITEID);
          $context = context_course::instance($course->id);
  
          // Force a regrade if required.
          grade_regrade_final_grades_if_required($course);
          // Get the course final grades now.
          $gpr = new grade_plugin_return(array('type' => 'report', 'plugin' => 'overview', 'courseid' => $course->id,
                                          'userid' => $userid));
          $report = new grade_report_overview($userid, $gpr, $context);
          $coursesgrades = $report->setup_courses_data(true);
  
          $grades = array();
          foreach ($coursesgrades as $coursegrade) {
              $gradeinfo = array(
                  'courseid' => $coursegrade['course']->id,
                  'grade' => grade_format_gradevalue($coursegrade['finalgrade'], $coursegrade['courseitem'], true),
                  'rawgrade' => $coursegrade['finalgrade'],
              );
              if (isset($coursegrade['rank'])) {
                  $gradeinfo['rank'] = $coursegrade['rank'];
              }
              $grades[] = $gradeinfo;
          }
  
          $result = array();
          $result['grades'] = $grades;
          $result['warnings'] = $warnings;
          return $result;
      }
code_tokens: public static function get_course_grades ( $ userid = 0 ) { global $ USER ; $ warnings = array ( ) ; // Validate the parameter. $ params = self :: validate_parameters ( self :: get_course_grades_parameters ( ) , array ( 'userid' => $ userid ) ) ; $ userid = $ params [ 'userid' ] ; if ( empty ( $ userid ) ) { $ userid = $ USER -> id ; } $ systemcontext = context_system :: instance ( ) ; self :: validate_context ( $ systemcontext ) ; if ( $ USER -> id != $ userid ) { // We must check if the current user can view other users grades. $ user = core_user :: get_user ( $ userid , '*' , MUST_EXIST ) ; core_user :: require_active_user ( $ user ) ; require_capability ( 'moodle/grade:viewall' , $ systemcontext ) ; } // We need the site course, and course context. $ course = get_course ( SITEID ) ; $ context = context_course :: instance ( $ course -> id ) ; // Force a regrade if required. grade_regrade_final_grades_if_required ( $ course ) ; // Get the course final grades now. $ gpr = new grade_plugin_return ( array ( 'type' => 'report' , 'plugin' => 'overview' , 'courseid' => $ course -> id , 'userid' => $ userid ) ) ; $ report = new grade_report_overview ( $ userid , $ gpr , $ context ) ; $ coursesgrades = $ report -> setup_courses_data ( true ) ; $ grades = array ( ) ; foreach ( $ coursesgrades as $ coursegrade ) { $ gradeinfo = array ( 'courseid' => $ coursegrade [ 'course' ] -> id , 'grade' => grade_format_gradevalue ( $ coursegrade [ 'finalgrade' ] , $ coursegrade [ 'courseitem' ] , true ) , 'rawgrade' => $ coursegrade [ 'finalgrade' ] , ) ; if ( isset ( $ coursegrade [ 'rank' ] ) ) { $ gradeinfo [ 'rank' ] = $ coursegrade [ 'rank' ] ; } $ grades [ ] = $ gradeinfo ; } $ result = array ( ) ; $ result [ 'grades' ] = $ grades ; $ result [ 'warnings' ] = $ warnings ; return $ result ; }
docstring: Get the given user courses final grades
  
  @param int $userid get grades for this user (optional, default current)
  
  @return array the grades tables
  @since Moodle 3.2
docstring_tokens: Get the given user courses final grades