/** * Processes the grade entry if grades are updated via Moodle only * * @param object $cm The moodle course module object for this instance * @param object $turnitintool The turnitintool object for this activity * @param array $post The POST array supplied from the grade update form * @return string Returns $notice in the event of an error */ function turnitintool_update_form_grades($cm, $turnitintool, $post) { global $CFG; $notice = ''; $total = 0; $owner = turnitintool_get_owner($turnitintool->course); foreach ($post['grade'] as $id => $thisgrade) { if (!($submission = turnitintool_get_record('turnitintool_submissions', 'id', $id))) { turnitintool_print_error('submissiongeterror', 'turnitintool', NULL, NULL, __FILE__, __LINE__); exit; } if ($thisgrade != $submission->submission_grade) { $total++; } } $loaderbar = new turnitintool_loaderbarclass($total + 2); $tii = new turnitintool_commclass(turnitintool_getUID($owner), $owner->firstname, $owner->lastname, $owner->email, 2, $loaderbar); $tii->startSession(); $proc = 0; foreach ($post['grade'] as $id => $thisgrade) { $thisgrade = round($thisgrade); // round the grade to an integer / Turnitin won't accept a null grade via the API if (!($submission = turnitintool_get_record('turnitintool_submissions', 'id', $id))) { turnitintool_print_error('submissiongeterror', 'turnitintool', NULL, NULL, __FILE__, __LINE__); exit; } if (!($part = turnitintool_get_record_select('turnitintool_parts', "id=" . $submission->submission_part . " AND deleted=0"))) { turnitintool_print_error('partgeterror', 'turnitintool', NULL, NULL, __FILE__, __LINE__); exit; } // work out if the grade has changed from what is stored if (empty($thisgrade) or $thisgrade != $submission->submission_grade) { $user = turnitintool_get_moodleuser($submission->userid, NULL, __FILE__, __LINE__); $update = new object(); $update->id = $id; $update->submission_grade = $thisgrade; print_object($update); if ($thisgrade > $part->maxmarks) { $input = new stdClass(); $input->fullname = $user->firstname . ' ' . $user->lastname; $input->part = turnitintool_partnamefromnum($submission->submission_part); $input->maximum = $part->maxmarks; $notice .= get_string('submissiongradetoohigh', 'turnitintool', $input); } else { if (!($result = turnitintool_update_record('turnitintool_submissions', $update))) { $notice = get_string('submissionupdateerror', 'turnitintool'); } } // now push the grade to Turnitin $post = new stdClass(); $post->oid = $submission->submission_objectid; $post->score = $thisgrade; $post->cid = turnitintool_getCID($turnitintool->course); $proc++; $add = new stdClass(); $add->num = $proc; $add->total = $total; $tii->setGradeMark($post, get_string('pushinggrade', 'turnitintool', $add)); if ($tii->getRerror()) { if ($tii->getAPIunavailable()) { turnitintool_print_error('apiunavailable', 'turnitintool', NULL, NULL, __FILE__, __LINE__); } else { turnitintool_print_error($tii->getRmessage() . ' CODE: ' . $tii->getRcode(), NULL, NULL, NULL, __FILE__, __LINE__); } exit; } @(include_once $CFG->dirroot . "/lib/gradelib.php"); if (function_exists('grade_update')) { $grades = turnitintool_buildgrades($turnitintool, $user); $cm = get_coursemodule_from_instance("turnitintool", $turnitintool->id, $turnitintool->course); $params['idnumber'] = $cm->idnumber; grade_update('mod/turnitintool', $turnitintool->course, 'mod', 'turnitintool', $turnitintool->id, 0, $grades, $params); } } } $tii->endSession(); $loaderbar->endloader(); // Update gradebook grades in Moodle 1.9 and above turnitintool_redirect($CFG->wwwroot . "/mod/turnitintool/view.php?id=" . $cm->id . "&do=allsubmissions&update=1"); return $notice; }
$cells[3]->class = "header c3 cellcenter cellthin"; $table->rows[0] = new stdClass(); $table->rows[0]->cells = $cells; } } $table->class = ''; $table->width = '100%'; $i = 1; foreach ($turnitintools as $turnitintool) { $dimmed = ''; if (!$turnitintool->visible) { //Show dimmed if the mod is hidden $dimmed = ' class="dimmed"'; } $link = '<a' . $dimmed . ' href="view.php?id=' . $turnitintool->coursemodule . '">' . $turnitintool->name . '</a>'; $part = turnitintool_get_record_select('turnitintool_parts', 'turnitintoolid=' . $turnitintool->id . ' AND deleted=0', NULL, 'MIN(dtstart) AS dtstart'); $dtstart = '<span' . $dimmed . '>' . userdate($part->dtstart, get_string('strftimedatetimeshort', 'langconfig')) . '</span>'; $partcount = turnitintool_count_records_select('turnitintool_parts', 'turnitintoolid=' . $turnitintool->id . ' AND deleted=0'); if (has_capability('mod/turnitintool:grade', turnitintool_get_context('MODULE', $turnitintool->coursemodule))) { $submissioncount = '<a' . $dimmed . ' href="view.php?id=' . $turnitintool->coursemodule . '&do=allsubmissions">' . turnitintool_count_records('turnitintool_submissions', 'turnitintoolid', $turnitintool->id) . '</a>'; } else { $submissioncount = '<a' . $dimmed . ' href="view.php?id=' . $turnitintool->coursemodule . '&do=submissions">' . turnitintool_count_records_select('turnitintool_submissions', 'turnitintoolid=' . $turnitintool->id . ' AND userid=' . $USER->id) . '</a>'; } if ($course->format == "weeks" or $course->format == "topics") { unset($cells); $cells[0] = new stdClass(); $cells[0]->data = $turnitintool->section; $cells[0]->class = "cell c0 cellcenter cellthin"; $cells[1] = new stdClass(); $cells[1]->data = $link; $cells[1]->class = "cell c1 cellleft";