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);
    }
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);
    }
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 ) ; }
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
Get the report data