/** * A Standard Moodle function that moodle executes at the time the cron runs */ function turnitintooltwo_cron() { global $DB, $CFG; // get assignment that needs updating and check whether it exists if ($assignment = $DB->get_record('turnitintooltwo', array("needs_updating" => 1), '*', IGNORE_MULTIPLE)) { $turnitintooltwoassignment = new turnitintooltwo_assignment($assignment->id); $cm = get_coursemodule_from_instance("turnitintooltwo", $turnitintooltwoassignment->turnitintooltwo->id, $turnitintooltwoassignment->turnitintooltwo->course); $users = $turnitintooltwoassignment->get_moodle_course_users($cm); foreach ($users as $user) { // Only add to gradebook if author has been unanonymised or assignment doesn't have anonymous marking $grades = new stdClass(); if ($submissions = $DB->get_records('turnitintooltwo_submissions', array('turnitintooltwoid' => $turnitintooltwoassignment->turnitintooltwo->id, 'userid' => $user->id, 'submission_unanon' => 1))) { $overallgrade = $turnitintooltwoassignment->get_overall_grade($submissions, $cm); if ($turnitintooltwoassignment->turnitintooltwo->grade < 0) { // Using a scale. $grades->rawgrade = $overallgrade == '--' ? null : $overallgrade; } else { $grades->rawgrade = $overallgrade == '--' ? null : number_format($overallgrade, 2); } } $grades->userid = $user->id; $params['idnumber'] = $cm->idnumber; @(include_once $CFG->dirroot . "/lib/gradelib.php"); grade_update('mod/turnitintooltwo', $turnitintooltwoassignment->turnitintooltwo->course, 'mod', 'turnitintooltwo', $turnitintooltwoassignment->turnitintooltwo->id, 0, $grades, $params); } // remove the "needs updating" flag $update_assignment = new stdClass(); $update_assignment->id = $assignment->id; $update_assignment->needs_updating = 0; $DB->update_record("turnitintooltwo", $update_assignment); } // Refresh the submissions for migrated assignment parts if there are none stored locally // as the 1st time this is done can be quite a long job if there are a lot of submissions. $migratedemptyparts = $DB->get_records_select('turnitintooltwo_parts', " migrated = 1 AND " . " (SELECT COUNT(id) FROM {turnitintooltwo_submissions} " . " WHERE submission_part = {turnitintooltwo_parts}.id) = 0 "); if (count($migratedemptyparts) > 0) { $updatedassignments = array(); foreach ($migratedemptyparts as $part) { if (!array_search($part->id, $updatedassignments)) { $turnitintooltwoassignment = new turnitintooltwo_assignment($part->turnitintooltwoid); $turnitintooltwoassignment->get_submission_ids_from_tii($part); $turnitintooltwoassignment->refresh_submissions($part); $updatedassignments[] = $part->id; turnitintooltwo_activitylog('Turnitintool submissions downloaded for assignment ' . $part->id, 'REQUEST'); } } echo 'Turnitintool submissions downloaded for assignments: ' . implode(',', $updatedassignments) . ' '; } }
/** * Update the gradebook for cron calls. * * @param type $assignment The assignment that we are going to update the grades for. * @param string $task The cron task we are performing the update from. */ function turnitintooltwo_cron_update_gradbook($assignment, $task) { global $DB, $CFG; @(include_once $CFG->dirroot . "/lib/gradelib.php"); $turnitintooltwoassignment = new turnitintooltwo_assignment($assignment->id); $cm = get_coursemodule_from_instance("turnitintooltwo", $turnitintooltwoassignment->turnitintooltwo->id, $turnitintooltwoassignment->turnitintooltwo->course); $users = $turnitintooltwoassignment->get_moodle_course_users($cm); foreach ($users as $user) { $fieldList = array('turnitintooltwoid' => $turnitintooltwoassignment->turnitintooltwo->id, 'userid' => $user->id); // Set submission_unanon when needsupdating is used. if ($task == "needsupdating") { $fieldList['submission_unanon'] = 1; } $grades = new stdClass(); if ($submissions = $DB->get_records('turnitintooltwo_submissions', $fieldList)) { $overallgrade = $turnitintooltwoassignment->get_overall_grade($submissions, $cm); if ($turnitintooltwoassignment->turnitintooltwo->grade < 0) { // Using a scale. $grades->rawgrade = $overallgrade == '--' ? null : $overallgrade; } else { $grades->rawgrade = $overallgrade == '--' ? null : number_format($overallgrade, 2); } } $grades->userid = $user->id; $params['idnumber'] = $cm->idnumber; grade_update('mod/turnitintooltwo', $turnitintooltwoassignment->turnitintooltwo->course, 'mod', 'turnitintooltwo', $turnitintooltwoassignment->turnitintooltwo->id, 0, $grades, $params); } // Remove the "anongradebook" flag $update_assignment = new stdClass(); $update_assignment->id = $assignment->id; // Depending on the task we need to update a different column. switch ($task) { case "needsupdating": $update_assignment->needs_updating = 0; break; case "anongradebook": $update_assignment->anongradebook = 1; break; } $DB->update_record("turnitintooltwo", $update_assignment); }