/** * 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) . ' '; } }
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); $return = array(); if (has_capability('mod/turnitintooltwo:read', context_module::instance($cm->id))) { $partid = required_param('part', PARAM_INT); $refreshrequested = required_param('refresh_requested', PARAM_INT); $start = required_param('start', PARAM_INT); $total = required_param('total', PARAM_INT); $parts = $turnitintooltwoassignment->get_parts(); $updatefromtii = $refreshrequested || $turnitintooltwoassignment->turnitintooltwo->autoupdates == 1 ? 1 : 0; if ($updatefromtii && $start == 0) { $turnitintooltwoassignment->get_submission_ids_from_tii($parts[$partid]); $total = $_SESSION["TiiSubmissions"][$partid]; $_SESSION["TiiSubmissionsRefreshed"][$partid] = time(); } if ($start < $total && $updatefromtii) { $turnitintooltwoassignment->refresh_submissions($parts[$partid], $start); } $PAGE->set_context(context_module::instance($cm->id)); $turnitintooltwoview = new turnitintooltwo_view(); $return["aaData"] = $turnitintooltwoview->get_submission_inbox($cm, $turnitintooltwoassignment, $parts, $partid, $start); $return["end"] = $start + TURNITINTOOLTWO_SUBMISSION_GET_LIMIT; $return["total"] = $_SESSION["num_submissions"][$partid]; // Remove any leftover submissions from session if ($return["end"] >= $return["total"]) { unset($_SESSION["submissions"][$partid]); }
/** * A Standard Moodle function that moodle executes at the time the cron runs */ function turnitintooltwo_cron() { global $DB, $CFG; // Update gradebook when a part has been deleted. // Get assignment that needs updating and check whether it exists if ($assignment = $DB->get_record('turnitintooltwo', array("needs_updating" => 1), '*', IGNORE_MULTIPLE)) { // Update the gradebook. $task = "needsupdating"; turnitintooltwo_cron_update_gradbook($assignment, $task); } // Send grades to the gradebook for anonymous marking assignments when the post date has passed. // Get a list of assignments that need updating. if ($assignmentlist = $DB->get_records_sql("SELECT t.id FROM {turnitintooltwo} t\n LEFT JOIN {turnitintooltwo_parts} p ON (p.turnitintooltwoid = t.id)\n WHERE (turnitintooltwoid, dtpost) IN (SELECT turnitintooltwoid, MAX(dtpost) \n FROM {turnitintooltwo_parts} \n GROUP BY turnitintooltwoid) \n AND t.anon = 1 AND t. anongradebook = 0 AND dtpost < " . time() . " \n GROUP BY turnitintooltwoid")) { // Update each assignment. $task = "anongradebook"; foreach ($assignmentlist as $assignment) { turnitintooltwo_cron_update_gradbook($assignment, $task); } } // 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) . ' '; } }