Esempio n. 1
0
    $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) {
Esempio n. 2
0
    $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