/** * 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; }
if (!has_capability('mod/turnitintool:grade', turnitintool_get_context('MODULE', $cm->id))) { turnitintool_print_error('permissiondeniederror', 'turnitintool', NULL, NULL, __FILE__, __LINE__); exit; } $owner = turnitintool_get_owner($course->id); $loaderbar = null; $tii = new turnitintool_commclass(turnitintool_getUID($owner), $owner->firstname, $owner->lastname, $owner->email, 2, $loaderbar); $post = new stdClass(); $post->cid = turnitintool_getCID($course->id); $post->assignid = turnitintool_getAID($param_part); $post->ctl = turnitintool_getCTL($course->id); $post->assign = $turnitintool->name . ' - ' . turnitintool_partnamefromnum($param_part) . ' (Moodle ' . $post->assignid . ')'; $post->fcmd = 4; $tii->listSubmissions($post, get_string('downloadingfile', 'turnitintool')); if ($tii->getRerror()) { if (!$tii->getAPIunavailable()) { $reason = $tii->getRcode() == TURNITINTOOL_DB_UNIQUEID_ERROR ? get_string('assignmentdoesnotexist', 'turnitintool') : $tii->getRmessage(); } else { $reason = get_string('apiunavailable', 'turnitintool'); } turnitintool_print_error('downloadingfileerror', 'turnitintool', NULL, NULL, __FILE__, __LINE__); exit; } else { $output = $tii->getFileData(); if (function_exists('mb_strlen')) { $size = mb_strlen($output, '8bit'); } else { $size = strlen($output); } header("Pragma: public"); header("Expires: 0");