original_string: protected static function get_report_data($course, $context, $user, $userid, $groupid, $tabledata = true) {
          global $CFG;
  
          $warnings = array();
          // Require files here to save some memory in case validation fails.
          require_once($CFG->dirroot . '/group/lib.php');
          require_once($CFG->libdir  . '/gradelib.php');
          require_once($CFG->dirroot . '/grade/lib.php');
          require_once($CFG->dirroot . '/grade/report/user/lib.php');
  
          // Force regrade to update items marked as 'needupdate'.
          grade_regrade_final_grades($course->id);
  
          $gpr = new grade_plugin_return(
              array(
                  'type' => 'report',
                  'plugin' => 'user',
                  'courseid' => $course->id,
                  'userid' => $userid)
              );
  
          $reportdata = array();
  
          // Just one user.
          if ($user) {
              $report = new grade_report_user($course->id, $gpr, $context, $userid);
              $report->fill_table();
  
              $gradeuserdata = array(
                  'courseid'      => $course->id,
                  'userid'        => $user->id,
                  'userfullname'  => fullname($user),
                  'maxdepth'      => $report->maxdepth,
              );
              if ($tabledata) {
                  $gradeuserdata['tabledata'] = $report->tabledata;
              } else {
                  $gradeuserdata['gradeitems'] = $report->gradeitemsdata;
              }
              $reportdata[] = $gradeuserdata;
          } else {
              $defaultgradeshowactiveenrol = !empty($CFG->grade_report_showonlyactiveenrol);
              $showonlyactiveenrol = get_user_preferences('grade_report_showonlyactiveenrol', $defaultgradeshowactiveenrol);
              $showonlyactiveenrol = $showonlyactiveenrol || !has_capability('moodle/course:viewsuspendedusers', $context);
  
              $gui = new graded_users_iterator($course, null, $groupid);
              $gui->require_active_enrolment($showonlyactiveenrol);
              $gui->init();
  
              while ($userdata = $gui->next_user()) {
                  $currentuser = $userdata->user;
                  $report = new grade_report_user($course->id, $gpr, $context, $currentuser->id);
                  $report->fill_table();
  
                  $gradeuserdata = array(
                      'courseid'      => $course->id,
                      'userid'        => $currentuser->id,
                      'userfullname'  => fullname($currentuser),
                      'maxdepth'      => $report->maxdepth,
                  );
                  if ($tabledata) {
                      $gradeuserdata['tabledata'] = $report->tabledata;
                  } else {
                      $gradeuserdata['gradeitems'] = $report->gradeitemsdata;
                  }
                  $reportdata[] = $gradeuserdata;
              }
              $gui->close();
          }
          return array($reportdata, $warnings);
      }
code: protected static function get_report_data($course, $context, $user, $userid, $groupid, $tabledata = true) {
          global $CFG;
  
          $warnings = array();
          // Require files here to save some memory in case validation fails.
          require_once($CFG->dirroot . '/group/lib.php');
          require_once($CFG->libdir  . '/gradelib.php');
          require_once($CFG->dirroot . '/grade/lib.php');
          require_once($CFG->dirroot . '/grade/report/user/lib.php');
  
          // Force regrade to update items marked as 'needupdate'.
          grade_regrade_final_grades($course->id);
  
          $gpr = new grade_plugin_return(
              array(
                  'type' => 'report',
                  'plugin' => 'user',
                  'courseid' => $course->id,
                  'userid' => $userid)
              );
  
          $reportdata = array();
  
          // Just one user.
          if ($user) {
              $report = new grade_report_user($course->id, $gpr, $context, $userid);
              $report->fill_table();
  
              $gradeuserdata = array(
                  'courseid'      => $course->id,
                  'userid'        => $user->id,
                  'userfullname'  => fullname($user),
                  'maxdepth'      => $report->maxdepth,
              );
              if ($tabledata) {
                  $gradeuserdata['tabledata'] = $report->tabledata;
              } else {
                  $gradeuserdata['gradeitems'] = $report->gradeitemsdata;
              }
              $reportdata[] = $gradeuserdata;
          } else {
              $defaultgradeshowactiveenrol = !empty($CFG->grade_report_showonlyactiveenrol);
              $showonlyactiveenrol = get_user_preferences('grade_report_showonlyactiveenrol', $defaultgradeshowactiveenrol);
              $showonlyactiveenrol = $showonlyactiveenrol || !has_capability('moodle/course:viewsuspendedusers', $context);
  
              $gui = new graded_users_iterator($course, null, $groupid);
              $gui->require_active_enrolment($showonlyactiveenrol);
              $gui->init();
  
              while ($userdata = $gui->next_user()) {
                  $currentuser = $userdata->user;
                  $report = new grade_report_user($course->id, $gpr, $context, $currentuser->id);
                  $report->fill_table();
  
                  $gradeuserdata = array(
                      'courseid'      => $course->id,
                      'userid'        => $currentuser->id,
                      'userfullname'  => fullname($currentuser),
                      'maxdepth'      => $report->maxdepth,
                  );
                  if ($tabledata) {
                      $gradeuserdata['tabledata'] = $report->tabledata;
                  } else {
                      $gradeuserdata['gradeitems'] = $report->gradeitemsdata;
                  }
                  $reportdata[] = $gradeuserdata;
              }
              $gui->close();
          }
          return array($reportdata, $warnings);
      }
code_tokens: protected static function get_report_data ( $ course , $ context , $ user , $ userid , $ groupid , $ tabledata = true ) { global $ CFG ; $ warnings = array ( ) ; // Require files here to save some memory in case validation fails. require_once ( $ CFG -> dirroot . '/group/lib.php' ) ; require_once ( $ CFG -> libdir . '/gradelib.php' ) ; require_once ( $ CFG -> dirroot . '/grade/lib.php' ) ; require_once ( $ CFG -> dirroot . '/grade/report/user/lib.php' ) ; // Force regrade to update items marked as 'needupdate'. grade_regrade_final_grades ( $ course -> id ) ; $ gpr = new grade_plugin_return ( array ( 'type' => 'report' , 'plugin' => 'user' , 'courseid' => $ course -> id , 'userid' => $ userid ) ) ; $ reportdata = array ( ) ; // Just one user. if ( $ user ) { $ report = new grade_report_user ( $ course -> id , $ gpr , $ context , $ userid ) ; $ report -> fill_table ( ) ; $ gradeuserdata = array ( 'courseid' => $ course -> id , 'userid' => $ user -> id , 'userfullname' => fullname ( $ user ) , 'maxdepth' => $ report -> maxdepth , ) ; if ( $ tabledata ) { $ gradeuserdata [ 'tabledata' ] = $ report -> tabledata ; } else { $ gradeuserdata [ 'gradeitems' ] = $ report -> gradeitemsdata ; } $ reportdata [ ] = $ gradeuserdata ; } else { $ defaultgradeshowactiveenrol = ! empty ( $ CFG -> grade_report_showonlyactiveenrol ) ; $ showonlyactiveenrol = get_user_preferences ( 'grade_report_showonlyactiveenrol' , $ defaultgradeshowactiveenrol ) ; $ showonlyactiveenrol = $ showonlyactiveenrol || ! has_capability ( 'moodle/course:viewsuspendedusers' , $ context ) ; $ gui = new graded_users_iterator ( $ course , null , $ groupid ) ; $ gui -> require_active_enrolment ( $ showonlyactiveenrol ) ; $ gui -> init ( ) ; while ( $ userdata = $ gui -> next_user ( ) ) { $ currentuser = $ userdata -> user ; $ report = new grade_report_user ( $ course -> id , $ gpr , $ context , $ currentuser -> id ) ; $ report -> fill_table ( ) ; $ gradeuserdata = array ( 'courseid' => $ course -> id , 'userid' => $ currentuser -> id , 'userfullname' => fullname ( $ currentuser ) , 'maxdepth' => $ report -> maxdepth , ) ; if ( $ tabledata ) { $ gradeuserdata [ 'tabledata' ] = $ report -> tabledata ; } else { $ gradeuserdata [ 'gradeitems' ] = $ report -> gradeitemsdata ; } $ reportdata [ ] = $ gradeuserdata ; } $ gui -> close ( ) ; } return array ( $ reportdata , $ warnings ) ; }
docstring: Get the report data
  @param  stdClass $course  course object
  @param  stdClass $context context object
  @param  stdClass $user    user object (it can be null for all the users)
  @param  int $userid       the user to retrieve data from, 0 for all
  @param  int $groupid      the group id to filter
  @param  bool $tabledata   whether to get the table data (true) or the gradeitemdata
  @return array data and possible warnings
  @since  Moodle 3.2
docstring_tokens: Get the report data