$user_id = $_REQUEST['user_id']; } // Model $row = loadAssignment($LTI); $assn_json = null; $assn_id = false; if ($row !== false) { $assn_json = json_decode($row['json']); $assn_id = $row['assn_id']; } if ($assn_id == false) { jsonError('This assignment is not yet set up'); return; } // Compute the user's grade $grade = computeGrade($assn_id, $assn_json, $user_id); if ($grade <= 0) { jsonError('Nothing to grade for this user', $row); return; } // Lookup the result row if we are grading the non-current user $result = false; if ($user_id != $USER->id) { $result = lookupResult($LTI, $user_id); } // Send the grade $debug_log = array(); $status = LTIX::gradeSend($grade, $result, $debug_log); // This is the slow bit if ($status === true) { if ($user_id != $USER->id) {
$msg = $lstmt->rowcount() . " Records reset."; $_SESSION["success"] = $msg; header("Location: " . addSession('maint.php')); return; } if (isset($_POST['reGradePeer'])) { $OUTPUT->header(); echo $OUTPUT->togglePreScript(); echo "</head><body>\n"; session_write_close(); $stmt = $PDOX->queryDie("SELECT submit_id, S.user_id AS user_id, R.result_id AS result_id,\n grade, sourcedid, result_url, service_key, displayname, email\n FROM {$CFG->dbprefix}peer_submit AS S\n JOIN {$CFG->dbprefix}peer_assn AS A\n ON S.assn_id = A.assn_id\n JOIN {$CFG->dbprefix}lti_result AS R\n ON S.user_id = R.user_id AND A.link_id = R.link_id\n JOIN {$CFG->dbprefix}lti_service AS X\n ON R.service_id = X.service_id\n JOIN {$CFG->dbprefix}lti_user AS U\n ON R.user_id = U.user_id\n WHERE S.assn_id = :AID AND regrade IS NULL", array(":AID" => $assn_id)); $unchanged = 0; $changed = 0; $fail = 0; while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $computed_grade = computeGrade($assn_id, $assn_json, $row['user_id']); $s2 = $PDOX->queryDie("UPDATE {$CFG->dbprefix}peer_submit SET regrade=1\n WHERE submit_id = :SID", array(":SID" => $row['submit_id'])); if ($row['grade'] >= $computed_grade) { echo htmlent_utf8($row['displayname']) . ' (' . htmlent_utf8($row['email']) . ') '; if ($row['grade'] > $computed_grade) { echo 'grade=' . $row['grade'] . ' computed=' . $computed_grade . " (unchanged)<br/>\n"; } else { echo 'grade=' . $row['grade'] . " (matched)<br/>\n"; } $unchanged++; continue; } $s2 = $PDOX->queryDie("UPDATE {$CFG->dbprefix}lti_result\n SET grade=:GRA, updated_at=NOW()\n WHERE result_id = :RID", array(":GRA" => $computed_grade, ":RID" => $row['result_id'])); // Send the grade to the server $status = LTIX::gradeSend($computed_grade, $row); // This is the slow bit