public function execute() { global $CFG, $DB; require_once $CFG->dirroot . "/mod/turnitintooltwo/lib.php"; require_once $CFG->dirroot . "/mod/turnitintooltwo/turnitintooltwo_view.class.php"; $data = (array) $this->get_custom_data(); // Make sure we are still wanted. $submission = $DB->get_record('turnitintooltwo_submissions', array('id' => $data['submissionid'])); if (!$submission) { return true; } cli_writeln("Processing Turnitintooltwo submission: " . $data['submissionid']); $user = $DB->get_record('user', array('id' => $data['userid'])); \core\session\manager::set_user($user); $turnitintooltwo = $DB->get_record('turnitintooltwo', array('id' => $data['tiiid'])); list($course, $cm) = get_course_and_cm_from_instance($turnitintooltwo, 'turnitintooltwo'); try { $turnitintooltwoassignment = new \turnitintooltwo_assignment($turnitintooltwo->id, $turnitintooltwo); $turnitintooltwosubmission = new \turnitintooltwo_submission($data['submissionid'], "moodle", $turnitintooltwoassignment); $parts = $turnitintooltwoassignment->get_parts(); $tiisubmission = $turnitintooltwosubmission->do_tii_submission($cm, $turnitintooltwoassignment); // Update submission. $DB->update_record('turnitintooltwo_submissions', array('id' => $data['submissionid'], 'submission_modified' => $data['subtime'])); } catch (\Exception $e) { $tiisubmission = array('success' => false, 'message' => $e->getMessage()); cli_writeln($e->getMessage()); } $digitalreceipt = $tiisubmission; $digitalreceipt['is_manual'] = 0; $digitalreceipt = json_encode($digitalreceipt); $this->update_sub_status($data['submissionid'], $tiisubmission['success'], $digitalreceipt); if ($tiisubmission['success'] === true) { $lockedassignment = new \stdClass(); $lockedassignment->id = $turnitintooltwoassignment->turnitintooltwo->id; $lockedassignment->submitted = 1; $DB->update_record('turnitintooltwo', $lockedassignment); $lockedpart = new \stdClass(); $lockedpart->id = $data['submissionpart']; $lockedpart->submitted = 1; // Disable anonymous marking if post date has passed. if ($parts[$data['submissionpart']]->dtpost <= time()) { $lockedpart->unanon = 1; } $DB->update_record('turnitintooltwo_parts', $lockedpart); cli_writeln("Finished processing successful submission: " . $data['submissionid']); } else { turnitintooltwo_add_to_log($course->id, "errored submission", 'view.php?id=' . $cm->id, "Failed to submit '" . $turnitintooltwosubmission->submission_title . "'", $cm->id, $user->id, array('submissionid' => $data['submissionid'])); cli_writeln("Finished processing unsuccessful submission: " . $data['submissionid']); } \core\session\manager::set_user(get_admin()); return $tiisubmission['success']; }
if (!confirm_sesskey()) { throw new moodle_exception('invalidsesskey', 'error'); } $submissionid = required_param('sub', PARAM_INT); $turnitintooltwosubmission = new turnitintooltwo_submission($submissionid, "moodle", $turnitintooltwoassignment); $digitalreceipt = $turnitintooltwosubmission->do_tii_submission($cm, $turnitintooltwoassignment); $_SESSION["digital_receipt"] = $digitalreceipt; redirect(new moodle_url('/mod/turnitintooltwo/view.php', array('id' => $id, 'do' => 'submissions'))); exit; break; case "deletesubmission": if (!confirm_sesskey()) { throw new moodle_exception('invalidsesskey', 'error'); } $submissionid = required_param('sub', PARAM_INT); $turnitintooltwosubmission = new turnitintooltwo_submission($submissionid, "moodle", $turnitintooltwoassignment); // Allow instructors to delete submission and students to delete if the submission hasn't gone to Turnitin. if ($istutor && $submissionid != 0 || !$istutor && empty($turnitintooltwosubmission->submission_objectid)) { $_SESSION["notice"] = $turnitintooltwosubmission->delete_submission(); } redirect(new moodle_url('/mod/turnitintooltwo/view.php', array('id' => $id, 'do' => 'submissions'))); exit; break; case "emailnonsubmitters": if (!confirm_sesskey()) { throw new moodle_exception('invalidsesskey', 'error'); } $subject = required_param('nonsubmitters_subject', PARAM_TEXT); $message = required_param('nonsubmitters_message', PARAM_TEXT); $sendtoself = optional_param('nonsubmitters_sendtoself', 0, PARAM_INT); // Error handling for non submitters form.
/** * Update all the assignment submissions with data from Turnitin * * @param object $part * @param object $start position in submissions array to get details from */ private function update_submissions_from_tii($part, $start = 0) { // Initialise Comms Object. $turnitincomms = new turnitintooltwo_comms(); $turnitincall = $turnitincomms->initialise_api(); try { $submission = new TiiSubmission(); $submission->setSubmissionIds(array_slice($_SESSION["TiiSubmissions"][$part->id], $start, TURNITINTOOLTWO_SUBMISSION_GET_LIMIT)); $response = $turnitincall->readSubmissions($submission); $readsubmissions = $response->getSubmissions(); foreach ($readsubmissions as $readsubmission) { $turnitintooltwosubmission = new turnitintooltwo_submission($readsubmission->getSubmissionId(), "turnitin", $this, $part->id); $turnitintooltwosubmission->save_updated_submission_data($readsubmission, true); } } catch (Exception $e) { $turnitincomms->handle_exceptions($e, 'tiisubmissiongeterror'); } }
} catch (Exception $e) { $turnitincomms->handle_exceptions($e, 'connecttesterror', false); } } echo json_encode($data); break; case "submit_nothing": if (!confirm_sesskey()) { throw new moodle_exception('invalidsesskey', 'error'); } $assignmentid = required_param('assignment', PARAM_INT); $turnitintooltwoassignment = new turnitintooltwo_assignment($assignmentid); $cm = get_coursemodule_from_instance("turnitintooltwo", $assignmentid); if (has_capability('mod/turnitintooltwo:grade', context_module::instance($cm->id))) { $partid = required_param('part', PARAM_INT); $userid = required_param('user', PARAM_INT); $turnitintooltwosubmission = new turnitintooltwo_submission(); $data = $turnitintooltwosubmission->do_tii_nothing_submission($cm, $turnitintooltwoassignment, $partid, $userid); } else { header("HTTP/1.0 403 Forbidden"); exit; } if (!is_array($data)) { header("HTTP/1.0 400 Bad Request"); echo $data; exit; } else { echo json_encode($data); } break; }