function process_outcomes($userid) { global $CFG, $USER; if (empty($CFG->enableoutcomes)) { return; } require_once($CFG->libdir.'/gradelib.php'); if (!$formdata = data_submitted() or !confirm_sesskey()) { return; } $data = array(); $grading_info = grade_get_grades($this->course->id, 'mod', 'assignment', $this->assignment->id, $userid); if (!empty($grading_info->outcomes)) { foreach($grading_info->outcomes as $n=>$old) { $name = 'outcome_'.$n; if (isset($formdata->{$name}[$userid]) and $old->grades[$userid]->grade != $formdata->{$name}[$userid]) { $data[$n] = $formdata->{$name}[$userid]; } } } if (count($data) > 0) { grade_update_outcomes('mod/assignment', $this->course->id, 'mod', 'assignment', $this->assignment->id, $userid, $data); } }
/** * Save outcomes submitted from grading form * * @param int $userid * @param stdClass $formdata */ protected function process_outcomes($userid, $formdata) { global $CFG, $USER; if (empty($CFG->enableoutcomes)) { return; } if ($this->grading_disabled($userid)) { return; } require_once $CFG->libdir . '/gradelib.php'; $data = array(); $gradinginfo = grade_get_grades($this->get_course()->id, 'mod', 'assign', $this->get_instance()->id, $userid); if (!empty($gradinginfo->outcomes)) { foreach ($gradinginfo->outcomes as $index => $oldoutcome) { $name = 'outcome_' . $index; if (isset($formdata->{$name}[$userid]) && $oldoutcome->grades[$userid]->grade != $formdata->{$name}[$userid]) { $data[$index] = $formdata->{$name}[$userid]; } } } if (count($data) > 0) { grade_update_outcomes('mod/assign', $this->course->id, 'mod', 'assign', $this->get_instance()->id, $userid, $data); } }
<?php $role = $DB->get_record('role', array('shortname' => 'student')); $table = 'jcode_files'; $context = context_course::instance($course->id); $students = get_role_users($role->id, $context); $save = optional_param('savequickgrades', '', PARAM_TEXT); require_once $CFG->libdir . '/gradelib.php'; if (!empty($save)) { foreach ($_POST as $name => $value) { if (strstr($name, 'quickgrade_') && !strstr($name, 'comments_')) { $name = str_replace('quickgrade_', '', $name); $nota = new stdClass(); $nota->grade = $value; $grading_info = grade_get_grades($course->id, 'mod', 'jcode', $jcode->id, 0); grade_update_outcomes('mod/jcode', $course->id, 'mod', 'jcode', $jcode->id, $name, array('0' => $value)); if (is_numeric($nota->grade)) { $feedback = $_POST['quickgrade_comments_' . $name]; $nota->feedback = $feedback; if ($n = $DB->get_record($table, array('jcode_id' => $jcode->id, 'user_id' => $name))) { $nota->id = $n->id; $DB->update_record($table, $nota); } else { $DB->insert($table, $nota); } } } } } $t = new html_table(); jcode_add_table_row_cells($t, array('Aluno', 'Nota', 'Feedback', 'Data de Entrega', 'Arquivo', 'Resultado'));
/** * Saves outcome data from the form * * @param $assignment * @param $grading_info * @param $data * @return void */ private function save_outcomes($assignment, $grading_info, $data) { global $CFG; if (empty($CFG->enableoutcomes)) { return; } $outcomedata = array(); $userid = $data->userid; // TODO needs sorting out! if (!empty($grading_info->outcomes)) { foreach ($grading_info->outcomes as $n => $old) { $name = 'outcome_' . $n; $newvalue = $old->grades[$userid]->grade != $data->{$name}[$userid]; if (isset($data->{$name}[$userid]) and $newvalue) { $outcomedata[$n] = $data->{$name}[$userid]; } } if (count($outcomedata) > 0) { grade_update_outcomes('mod/assignment', $assignment->course, 'mod', 'assignment', $assignment->id, $userid, $outcomedata); } } }
/** * Set/update grade * @param $info object with grade and comments fields * @param $automatic if automatic grading (default false) * @return void */ function set_grade($info, $automatic = false) { global $USER; global $CFG; global $DB; ignore_user_abort(true); $scaleid = $this->vpl->get_grade(); if ($scaleid == 0 && empty($CFG->enableoutcomes)) { //No scale no outcomes return; } if (!function_exists('grade_update')) { require_once $CFG->libdir . '/gradelib.php'; } if ($automatic) { //Who grade $this->instance->grader = 0; } else { $this->instance->grader = $USER->id; } if ($this->vpl->is_group_activity()) { $usersid = array(); foreach ($this->vpl->get_usergroup_members($this->instance->userid) as $user) { $usersid[] = $user->id; } } else { $usersid = array($this->instance->userid); } $this->instance->dategraded = time(); if ($scaleid != 0) { //Sanitize grade if ($scaleid > 0) { $info->grade = (double) $info->grade; } else { $info->grade = (int) $info->grade; } $this->instance->grade = $info->grade; //Save assessment comments $comments = $info->comments; $fn = $this->get_gradecommentsfilename(); if ($comments) { $fp = vpl_fopen($fn); fwrite($fp, $comments); fclose($fp); } elseif (file_exists($fn)) { unlink($fn); } //update gradebook $grades = array(); $gradeinfo = array(); //If no grade then don't set rawgrade and feedback if (!($info->grade == -1 && $scaleid < 0)) { $gradeinfo['rawgrade'] = $info->grade; $gradeinfo['feedback'] = $this->result_to_HTML($comments, false); $gradeinfo['feedbackformat'] = FORMAT_HTML; } if ($this->instance->grader > 0) { //Don't add grader if automatic $gradeinfo['usermodified'] = $this->instance->grader; } else { //This avoid to use an unexisting userid (0) in the gradebook $gradeinfo['usermodified'] = $USER->id; } $gradeinfo['datesubmitted'] = $this->instance->datesubmitted; $gradeinfo['dategraded'] = $this->instance->dategraded; foreach ($usersid as $userid) { $gradeinfo['userid'] = $userid; $grades[$userid] = $gradeinfo; } if (grade_update('mod/vpl', $this->vpl->get_course()->id, 'mod', VPL, $this->vpl->get_instance()->id, 0, $grades) != GRADE_UPDATE_OK) { return false; } } if (!empty($CFG->enableoutcomes)) { foreach ($usersid as $userid) { $grading_info = grade_get_grades($this->vpl->get_course()->id, 'mod', 'vpl', $this->vpl->get_instance()->id, $userid); if (!empty($grading_info->outcomes)) { $outcomes = array(); foreach ($grading_info->outcomes as $oid => $dummy) { $field = 'outcome_grade_' . $oid; if (isset($info->{$field})) { $outcomes[$oid] = $info->{$field}; } else { $outcomes[$oid] = null; } } grade_update_outcomes('mod/vpl', $this->vpl->get_course()->id, 'mod', VPL, $this->vpl->get_instance()->id, $userid, $outcomes); } } } if (!$DB->update_record('vpl_submissions', $this->instance)) { print_error('DB error updating submission grade info'); } return true; }
// salvando registro if ($success == 0) { $post_file = new stdClass(); $post_file->jcode_id = $jcode->id; $post_file->filename = $filename; $post_file->user_id = $USER->id; $post_file->submit_date = time(); if ($jcode->correctanswer == $response) { $post_file->grade = $jcode->grade; } else { $post_file->grade = 0; } $post_file->result = $out; $DB->insert_record('jcode_files', $post_file); $grading_info = grade_get_grades($COURSE->id, 'mod', 'jcode', $jcode->id, 0); grade_update_outcomes('mod/jcode', $COURSE->id, 'mod', 'jcode', $jcode->id, $post_file->user_id, array('0' => $post_file->grade)); } $url = $CFG->wwwroot . "/mod/jcode/view.php?id=" . $id; redirect($url, "Processando arquivo, aguarde por favor..."); } else { $form->display(); } } } else { $o = $OUTPUT->box_start('boxaligncenter submissionsummarytable'); $t = new html_table(); //data de envio $remove = ''; if ($jcode->resubmit && $jcode->timedue >= time()) { $remove = " <a href='{$CFG->wwwroot}/mod/jcode/view.php?id={$id}&remove={$file->id}' >" . get_string('remove', 'jcode') . "</a>"; }
function qcreate_process_outcomes($qcreate, $userid) { global $CFG, $COURSE; if (empty($CFG->enableoutcomes)) { return; } require_once $CFG->libdir . '/gradelib.php'; if (!($formdata = data_submitted())) { return; } $data = array(); $grading_info = grade_get_grades($COURSE->id, 'mod', 'qcreate', $qcreate->id, $userid); if (!empty($grading_info->outcomes)) { foreach ($grading_info->outcomes as $n => $old) { $name = 'outcome_' . $n; if (isset($formdata->{$name}[$userid]) and $old->grades[$userid]->grade != $formdata->{$name}[$userid]) { $data[$n] = $formdata->{$name}[$userid]; } } } if (count($data) > 0) { grade_update_outcomes('mod/qcreate', $COURSE->id, 'mod', 'qcreate', $qcreate->id, $userid, $data); } }