public function get_user_grades_for_gradebook($userid) {
        global $DB, $CFG;
        $grades = array();
        $assignmentid = $this->get_instance()->id;

        $adminconfig = $this->get_admin_config();
        $gradebookpluginname = $adminconfig->feedback_plugin_for_gradebook;
        $gradebookplugin = null;

        // Find the gradebook plugin.
        foreach ($this->feedbackplugins as $plugin) {
            if ($plugin->is_enabled() && $plugin->is_visible()) {
                if (('assignfeedback_' . $plugin->get_type()) == $gradebookpluginname) {
                    $gradebookplugin = $plugin;
                }
            }
        }
        if ($userid) {
            $where = ' WHERE u.id = :userid ';
        } else {
            $where = ' WHERE u.id != :userid ';
        }

        // When the gradebook asks us for grades - only return the last attempt for each user.
        $params = array('assignid1'=>$assignmentid,
                        'assignid2'=>$assignmentid,
                        'userid'=>$userid);
        $graderesults = $DB->get_recordset_sql('SELECT
                                                    u.id as userid,
                                                    s.timemodified as datesubmitted,
                                                    g.grade as rawgrade,
                                                    g.timemodified as dategraded,
                                                    g.grader as usermodified
                                                FROM {user} u
                                                LEFT JOIN {assign_submission} s
                                                    ON u.id = s.userid and s.assignment = :assignid1 AND
                                                    s.latest = 1
                                                JOIN {assign_grades} g
                                                    ON u.id = g.userid and g.assignment = :assignid2 AND
                                                    g.attemptnumber = s.attemptnumber' .
                                                $where, $params);

        foreach ($graderesults as $result) {
            $gradingstatus = $this->get_grading_status($result->userid);
            if (!$this->get_instance()->markingworkflow || $gradingstatus == ASSIGN_MARKING_WORKFLOW_STATE_RELEASED) {
                $gradebookgrade = clone $result;
                // Now get the feedback.
                if ($gradebookplugin) {
                    $grade = $this->get_user_grade($result->userid, false);
                    if ($grade) {
                        $gradebookgrade->feedback = $gradebookplugin->text_for_gradebook($grade);
                        $gradebookgrade->feedbackformat = $gradebookplugin->format_for_gradebook($grade);
                        $gradebookgrade->feedbackfiles = $gradebookplugin->files_for_gradebook($grade);
                    }
                }
                $grades[$gradebookgrade->userid] = $gradebookgrade;
            }
        }

        $graderesults->close();
        return $grades;
    }
public function get_user_grades_for_gradebook($userid) {
        global $DB, $CFG;
        $grades = array();
        $assignmentid = $this->get_instance()->id;

        $adminconfig = $this->get_admin_config();
        $gradebookpluginname = $adminconfig->feedback_plugin_for_gradebook;
        $gradebookplugin = null;

        // Find the gradebook plugin.
        foreach ($this->feedbackplugins as $plugin) {
            if ($plugin->is_enabled() && $plugin->is_visible()) {
                if (('assignfeedback_' . $plugin->get_type()) == $gradebookpluginname) {
                    $gradebookplugin = $plugin;
                }
            }
        }
        if ($userid) {
            $where = ' WHERE u.id = :userid ';
        } else {
            $where = ' WHERE u.id != :userid ';
        }

        // When the gradebook asks us for grades - only return the last attempt for each user.
        $params = array('assignid1'=>$assignmentid,
                        'assignid2'=>$assignmentid,
                        'userid'=>$userid);
        $graderesults = $DB->get_recordset_sql('SELECT
                                                    u.id as userid,
                                                    s.timemodified as datesubmitted,
                                                    g.grade as rawgrade,
                                                    g.timemodified as dategraded,
                                                    g.grader as usermodified
                                                FROM {user} u
                                                LEFT JOIN {assign_submission} s
                                                    ON u.id = s.userid and s.assignment = :assignid1 AND
                                                    s.latest = 1
                                                JOIN {assign_grades} g
                                                    ON u.id = g.userid and g.assignment = :assignid2 AND
                                                    g.attemptnumber = s.attemptnumber' .
                                                $where, $params);

        foreach ($graderesults as $result) {
            $gradingstatus = $this->get_grading_status($result->userid);
            if (!$this->get_instance()->markingworkflow || $gradingstatus == ASSIGN_MARKING_WORKFLOW_STATE_RELEASED) {
                $gradebookgrade = clone $result;
                // Now get the feedback.
                if ($gradebookplugin) {
                    $grade = $this->get_user_grade($result->userid, false);
                    if ($grade) {
                        $gradebookgrade->feedback = $gradebookplugin->text_for_gradebook($grade);
                        $gradebookgrade->feedbackformat = $gradebookplugin->format_for_gradebook($grade);
                        $gradebookgrade->feedbackfiles = $gradebookplugin->files_for_gradebook($grade);
                    }
                }
                $grades[$gradebookgrade->userid] = $gradebookgrade;
            }
        }

        $graderesults->close();
        return $grades;
    }
public function get_user_grades_for_gradebook ( $ userid ) { global $ DB , $ CFG ; $ grades = array ( ) ; $ assignmentid = $ this -> get_instance ( ) -> id ; $ adminconfig = $ this -> get_admin_config ( ) ; $ gradebookpluginname = $ adminconfig -> feedback_plugin_for_gradebook ; $ gradebookplugin = null ; // Find the gradebook plugin. foreach ( $ this -> feedbackplugins as $ plugin ) { if ( $ plugin -> is_enabled ( ) && $ plugin -> is_visible ( ) ) { if ( ( 'assignfeedback_' . $ plugin -> get_type ( ) ) == $ gradebookpluginname ) { $ gradebookplugin = $ plugin ; } } } if ( $ userid ) { $ where = ' WHERE u.id = :userid ' ; } else { $ where = ' WHERE u.id != :userid ' ; } // When the gradebook asks us for grades - only return the last attempt for each user. $ params = array ( 'assignid1' => $ assignmentid , 'assignid2' => $ assignmentid , 'userid' => $ userid ) ; $ graderesults = $ DB -> get_recordset_sql ( 'SELECT
                                                    u.id as userid,
                                                    s.timemodified as datesubmitted,
                                                    g.grade as rawgrade,
                                                    g.timemodified as dategraded,
                                                    g.grader as usermodified
                                                FROM {user} u
                                                LEFT JOIN {assign_submission} s
                                                    ON u.id = s.userid and s.assignment = :assignid1 AND
                                                    s.latest = 1
                                                JOIN {assign_grades} g
                                                    ON u.id = g.userid and g.assignment = :assignid2 AND
                                                    g.attemptnumber = s.attemptnumber' . $ where , $ params ) ; foreach ( $ graderesults as $ result ) { $ gradingstatus = $ this -> get_grading_status ( $ result -> userid ) ; if ( ! $ this -> get_instance ( ) -> markingworkflow || $ gradingstatus == ASSIGN_MARKING_WORKFLOW_STATE_RELEASED ) { $ gradebookgrade = clone $ result ; // Now get the feedback. if ( $ gradebookplugin ) { $ grade = $ this -> get_user_grade ( $ result -> userid , false ) ; if ( $ grade ) { $ gradebookgrade -> feedback = $ gradebookplugin -> text_for_gradebook ( $ grade ) ; $ gradebookgrade -> feedbackformat = $ gradebookplugin -> format_for_gradebook ( $ grade ) ; $ gradebookgrade -> feedbackfiles = $ gradebookplugin -> files_for_gradebook ( $ grade ) ; } } $ grades [ $ gradebookgrade -> userid ] = $ gradebookgrade ; } } $ graderesults -> close ( ) ; return $ grades ; }
Get an upto date list of user grades and feedback for the gradebook.

@param int $userid int or 0 for all users
@return array of grade data formated for the gradebook api
The data required by the gradebook api is userid,
rawgrade,
feedback,
feedbackformat,
usermodified,
dategraded,
datesubmitted
Get an upto date list of user grades and feedback for the gradebook .