/** * Load link information for a different link than current * * Make sure not to cross Context silos. */ public static function loadLinkInfo($link_id) { global $CFG, $PDOX, $CONTEXT; $cacheloc = 'lti_link'; $row = Cache::check($cacheloc, $link_id); if ($row != false) { return $row; } $stmt = $PDOX->queryDie("SELECT title FROM {$CFG->dbprefix}lti_link\n WHERE link_id = :LID AND context_id = :CID", array(":LID" => $link_id, ":CID" => $CONTEXT->id)); $row = $stmt->fetch(\PDO::FETCH_ASSOC); Cache::set($cacheloc, $link_id, $row); return $row; }
function loadLinkInfo($link_id) { global $CFG, $PDOX; $LTI = LTIX::requireData(LTIX::CONTEXT); $cacheloc = 'lti_link'; $row = Cache::check($cacheloc, $link_id); if ($row != false) { return $row; } $stmt = $PDOX->queryDie("SELECT title FROM {$CFG->dbprefix}lti_link\n WHERE link_id = :LID AND context_id = :CID", array(":LID" => $link_id, ":CID" => $LTI['context_id'])); $row = $stmt->fetch(PDO::FETCH_ASSOC); Cache::set($cacheloc, $link_id, $row); return $row; }
// Model $p = $CFG->dbprefix; if (isset($_POST['json'])) { $json = $_POST['json']; if (get_magic_quotes_gpc()) { $json = stripslashes($json); } $json = json_decode($json); if ($json === null) { $_SESSION['error'] = "Bad JSON Syntax"; header('Location: ' . addSession('configure.php')); return; } $json = json_encode($json); $stmt = $PDOX->queryReturnError("INSERT INTO {$p}peer_assn\n (link_id, json, created_at, updated_at)\n VALUES ( :ID, :JSON, NOW(), NOW())\n ON DUPLICATE KEY UPDATE json = :JSON, updated_at = NOW()", array(':JSON' => $json, ':ID' => $LINK->id)); Cache::clear("peer_assn"); if ($stmt->success) { $_SESSION['success'] = 'Assignment updated'; header('Location: ' . addSession('index.php')); } else { $_SESSION['error'] = $stmt->errorImplode; header('Location: ' . addSession('configure.php')); } return; } // Load up the assignment $row = loadAssignment($LTI); $json = ""; if ($row !== false) { $json = $row['json']; }
function loadMyGradeCount($LTI, $assn_id) { global $CFG, $PDOX; $cacheloc = 'peer_grade'; $cachekey = $assn_id + "::" + $LTI['user_id']; $grade_count = Cache::check($cacheloc, $cachekey); if ($grade_count != false) { return $grade_count; } $stmt = $PDOX->queryDie("SELECT COUNT(grade_id) AS grade_count\n FROM {$CFG->dbprefix}peer_submit AS S\n JOIN {$CFG->dbprefix}peer_grade AS G\n ON S.submit_id = G.submit_id\n WHERE S.assn_id = :AID AND G.user_id = :UID", array(':AID' => $assn_id, ':UID' => $LTI['user_id'])); $row = $stmt->fetch(PDO::FETCH_ASSOC); if ($row !== false) { $grade_count = $row['grade_count'] + 0; } Cache::set($cacheloc, $cachekey, $grade_count); return $grade_count; }
} $PDOX->queryDie("\n INSERT INTO {$p}peer_text\n (assn_id, user_id, data, created_at, updated_at)\n VALUES ( :AID, :UID, :DATA, NOW(), NOW() )", array(':AID' => $assn_id, ':DATA' => $code, ':UID' => $USER->id)); $code_ids[] = $PDOX->lastInsertId(); } } } $partno++; } $submission = new stdClass(); $submission->notes = $_POST['notes']; $submission->blob_ids = $blob_ids; $submission->urls = $urls; $submission->codes = $code_ids; $json = json_encode($submission); $stmt = $PDOX->queryReturnError("INSERT INTO {$p}peer_submit\n (assn_id, user_id, json, created_at, updated_at)\n VALUES ( :AID, :UID, :JSON, NOW(), NOW())\n ON DUPLICATE KEY UPDATE json = :JSON, updated_at = NOW()", array(':AID' => $assn_id, ':JSON' => $json, ':UID' => $USER->id)); Cache::clear('peer_submit'); if ($stmt->success) { $_SESSION['success'] = 'Assignment submitted'; header('Location: ' . addSession('index.php')); } else { $_SESSION['error'] = $stmt->errorImplode; header('Location: ' . addSession('index.php')); } return; } // Check to see how much grading we have done $grade_count = 0; $to_grade = 0; if ($assn_json && $assn_json->maxassess > 0) { // See how much grading is left to do $to_grade = loadUngraded($LTI, $assn_id);
$found = false; if ($our_flags != false) { foreach ($our_flags as $flag) { if ($_POST['flag_id'] == $flag['flag_id']) { $found = true; } } } if (!$found) { $_SESSION['error'] = "Flag entry not found."; header('Location: ' . addSession('index.php')); return; } $stmt = $PDOX->queryDie("DELETE FROM {$p}peer_flag\n WHERE flag_id = :FID", array(':FID' => $_POST['flag_id'])); Cache::clear('peer_flag'); Cache::clear('peer_grade'); error_log("Instructor deleted flag=" . $_POST['flag_id'] . " for " . $user_id); $_SESSION['success'] = "Flag entry deleted."; header('Location: ' . addSession('student.php?user_id=' . $user_id)); return; } // Retrieve the grades that we have given $grades_given = retrieveGradesGiven($assn_id, $user_id); // Retrieve the next and previous users for paging $sql = "(SELECT user_id, inst_points FROM {$p}peer_submit \n WHERE user_id < :UID AND assn_id = :AID ORDER BY user_id DESC LIMIT 1)\n UNION (SELECT user_id, inst_points FROM {$p}peer_submit \n WHERE user_id > :UID AND assn_id = :AID ORDER BY user_id ASC LIMIT 1)"; $rows = $PDOX->allRowsDie($sql, array(":UID" => $user_id, ":AID" => $assn_id)); // Retrieve ungraded rows in a circular manner $ungraded_rows = false; if ($assn_json->instructorpoints > 0) { $ungraded_sql = "(SELECT user_id, inst_points FROM {$p}peer_submit \n WHERE user_id > :UID AND assn_id = :AID AND inst_points IS NULL ORDER BY user_id ASC LIMIT 1)\n UNION (SELECT user_id, inst_points FROM {$p}peer_submit \n WHERE user_id != :UID AND assn_id = :AID AND inst_points IS NULL ORDER BY user_id ASC LIMIT 1)\n "; $ungraded_rows = $PDOX->allRowsDie($ungraded_sql, array(":UID" => $user_id, ":AID" => $assn_id));
/** * Load a user's info from the user_id * * We make sure that the user is a member of the current * context so as not to slide across silos. */ public static function loadUserInfoBypass($user_id) { global $CFG, $PDOX, $CONTEXT; $cacheloc = 'lti_user'; $row = Cache::check($cacheloc, $user_id); if ($row != false) { return $row; } $stmt = $PDOX->queryDie("SELECT displayname, email, user_key FROM {$CFG->dbprefix}lti_user AS U\n JOIN {$CFG->dbprefix}lti_membership AS M\n ON U.user_id = M.user_id AND M.context_id = :CID\n WHERE U.user_id = :UID", array(":UID" => $user_id, ":CID" => $CONTEXT->id)); $row = $stmt->fetch(\PDO::FETCH_ASSOC); if (strlen($row['displayname']) < 1 && strlen($row['user_key']) > 0) { $row['displayname'] = 'user_key:' . substr($row['user_key'], 0, 25); } Cache::set($cacheloc, $user_id, $row); return $row; }