public static function gradeTable($GRADE_DETAIL_CLASS) { global $CFG, $OUTPUT, $USER, $LINK; // Require CONTEXT, USER, and LINK $LAUNCH = LTIX::requireData(); if (!$USER->instructor) { die("Requires instructor role"); } $p = $CFG->dbprefix; // Get basic grade data $query_parms = array(":LID" => $LINK->id); $orderfields = array("R.updated_at", "displayname", "email", "grade"); $searchfields = $orderfields; $sql = "SELECT R.user_id AS user_id, displayname, email,\n grade, note, R.updated_at AS updated_at\n FROM {$p}lti_result AS R\n JOIN {$p}lti_user AS U ON R.user_id = U.user_id\n WHERE R.link_id = :LID"; // View $OUTPUT->header(); $OUTPUT->bodyStart(); $OUTPUT->flashMessages(); $OUTPUT->welcomeUserCourse(); if (isset($GRADE_DETAIL_CLASS) && is_object($GRADE_DETAIL_CLASS)) { $detail = $GRADE_DETAIL_CLASS; } else { $detail = false; } Table::pagedAuto($sql, $query_parms, $searchfields, $orderfields, "grade-detail.php"); // Since this is in a popup, put out a done button $OUTPUT->closeButton(); $OUTPUT->footer(); }
error_log("Patching server grade: " . session_id() . " result_id=" . $row['result_id'] . "\n" . "grade=" . $row['grade'] . " updated=" . $row['updated_at'] . "\n" . "server_grade=" . $row['server_grade'] . " retrieved=" . $row['retrieved_at']); $debug_log = array(); $status = LTIX::gradeSend($row['grade'], $row, $debug_log); if ($status === true) { $newrow['note'] .= " Server grade updated."; } else { echo '<pre class="alert alert-danger">' . "\n"; $msg = "result_id=" . $row['result_id'] . "\n" . "grade=" . $row['grade'] . " updated=" . $row['updated_at'] . "\n" . "server_grade=" . $row['server_grade'] . " retrieved=" . $row['retrieved_at'] . "\n" . "error=" . $server_grade; echo "Problem Updating Grade: " . session_safe_id() . " " . $msg; error_log("Problem Updating Grade: " . session_id() . "\n" . $msg . "\n" . "service=" . $row['service'] . " sourcedid=" . $row['sourcedid']); echo "\nProblem Retrieving Grade - Please take a screen shot of this page.\n"; echo "</pre>\n"; $newrow['note'] .= " Problem Updating Server Grade"; } } $newrows[] = $newrow; } Table::pagedTable($newrows, $searchfields); } if ($summary_sql !== false) { Table::pagedAuto($summary_sql, $query_parms, $searchfields, $orderfields); } if ($class_sql !== false) { if ($link_info !== false) { echo "<p>Results for " . $link_info['title']; echo ' (<a href="maint.php?link_id=' . $link_id . '" target="_new">Maintenance tasks</a>)' . "</p>\n"; } Table::pagedAuto($class_sql, $query_parms, $searchfields); } $OUTPUT->footer();
// Gets counts and max of the submissions $query_parms = array(":LID" => $LINK->id); $orderfields = array("S.user_id", "displayname", "email", "S.updated_at", "user_key", "max_score", "scores", "flagged", "min_score", "inst_points"); $searchfields = array("S.user_id", "displayname", "email", "S.updated_at", "user_key"); // Load up our data dpending on the kind of assessment we have $inst_points = $assn_json->instructorpoints > 0 ? "inst_points, " : ""; $max_min_scores = $assn_json->peerpoints > 0 ? "MAX(points) as max_score, MIN(points) AS min_score," : ""; $count_scores = $assn_json->maxassess > 0 ? "COUNT(points) as scores," : ""; $sql = "SELECT S.user_id AS user_id, displayname, email, S.submit_id as _submit_id,\n {$max_min_scores}\n {$count_scores}\n {$inst_points} \n COUNT(DISTINCT flag_id) as flagged,\n MAX(S.updated_at) AS updated_at, user_key\n FROM {$p}peer_assn AS A JOIN {$p}peer_submit as S\n ON A.assn_id = S.assn_id\n LEFT JOIN {$p}peer_grade AS G\n ON S.submit_id = G.submit_id\n LEFT JOIN {$p}peer_flag AS F\n ON S.submit_id = F.submit_id\n JOIN {$p}lti_user AS U\n ON S.user_id = U.user_id\n WHERE A.link_id = :LID\n GROUP BY S.submit_id"; // View $OUTPUT->header(); $OUTPUT->bodyStart(); $OUTPUT->flashMessages(); $OUTPUT->welcomeUserCourse(); // Make us a paged table and by default sort by flagged descending $parm = $_GET; if (!isset($parm['order_by'])) { $parm['order_by'] = 'flagged'; $parm['desc'] = '1'; } Table::pagedAuto($sql, $query_parms, $searchfields, $orderfields, "student.php", $parm); ?> <form method="post"> <br/> <input type="submit" name="doExit" onclick="location='<?php echo addSession('index.php'); ?> '; return false;" value="Exit" class="btn btn-success"> </form> <?php $OUTPUT->footer();
require_once "../../config.php"; require_once $CFG->dirroot . "/pdo.php"; require_once $CFG->dirroot . "/lib/lms_lib.php"; require_once "lib.php"; use Tsugi\UI\Table; use Tsugi\Core\LTIX; // Require CONTEXT, USER, and LINK $LTI = LTIX::requireData(); if (!$USER->instructor) { die("Requires instructor role"); } $p = $CFG->dbprefix; // Get basic grade data $query_parms = array(":LID" => $LINK->id); $orderfields = array("R.updated_at", "displayname", "email", "grade"); $searchfields = $orderfields; $sql = "SELECT R.user_id AS user_id, displayname, email,\n grade, note, R.updated_at AS updated_at\n FROM {$p}lti_result AS R\n JOIN {$p}lti_user AS U ON R.user_id = U.user_id\n WHERE R.link_id = :LID"; // View $OUTPUT->header(); $OUTPUT->bodyStart(); $OUTPUT->flashMessages(); $OUTPUT->welcomeUserCourse(); if (isset($GRADE_DETAIL_CLASS) && is_object($GRADE_DETAIL_CLASS)) { $detail = $GRADE_DETAIL_CLASS; } else { $detail = false; } Table::pagedAuto($sql, $query_parms, $searchfields, $orderfields, "grade-detail.php"); // Since this is in a popup, put out a done button $OUTPUT->closeButton(); $OUTPUT->footer();