$formdata = new stdClass();
$formdata->userid = $user->id;
$formdata->id = $cm->id;
$formdata->xgrade = $userfinalgrade ? $userfinalgrade->grade : null;
$formdata->feedback = $userfinalgrade ? $userfinalgrade->feedback : null;
$custom = array('course' => $course, 'str_grade' => $userfinalgrade ? $userfinalgrade->str_grade : '', 'user' => $user, 'lastupdate' => giportfolio_get_user_contribution_status($giportfolio->id, $user->id), 'gradesetting' => $giportfolio->grade, 'dategraded' => $userfinalgrade ? $userfinalgrade->dategraded : null);
$mform = new mod_giporotfolio_grading_form(null, $custom);
$mform->set_data($formdata);
if ($mform->is_cancelled()) {
    redirect("submissions.php?id={$cm->id}");
} else {
    if ($gradeinfo = $mform->get_data()) {
        global $DB;
        $grade = (object) array('userid' => $user->id, 'usermodified' => $USER->id, 'rawgrade' => $gradeinfo->xgrade, 'feedback' => $gradeinfo->feedback);
        $grades = array($user->id => $grade);
        giportfolio_grade_item_update($giportfolio, $grades);
        redirect("submissions.php?id={$cm->id}");
    }
}
// Header and strings.
$PAGE->set_title(format_string($giportfolio->name));
$PAGE->add_body_class('mod_giportfolio');
$PAGE->set_heading(format_string($course->fullname));
$realuser = $DB->get_record('user', array('id' => $userid));
$PAGE->navbar->add(get_string('studentgiportfolio', 'mod_giportfolio'), new moodle_url('submissions.php?=', array('id' => $cm->id)));
$PAGE->navbar->add(fullname($realuser));
echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('giportfolioof', 'mod_giportfolio') . ' ' . fullname($user, true));
$mform->display();
echo '<br />';
echo $OUTPUT->footer();
/**
 * Update activity grades
 *
 * @param object $giportfolio
 * @param int $userid specific user only, 0 means all
 * @param bool $nullifnone
 */
function giportfolio_update_grades($giportfolio, $userid = 0, $nullifnone = true)
{
    global $CFG;
    require_once $CFG->libdir . '/gradelib.php';
    if ($giportfolio->grade == 0) {
        giportfolio_grade_item_update($giportfolio);
    } else {
        if ($grades = giportfolio_get_user_grades($giportfolio, $userid)) {
            foreach ($grades as $k => $v) {
                if ($v->rawgrade == -1) {
                    $grades[$k]->rawgrade = null;
                }
            }
            giportfolio_grade_item_update($giportfolio, $grades);
        } else {
            giportfolio_grade_item_update($giportfolio);
        }
    }
}