Beispiel #1
0
 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();
 }
Beispiel #2
0
            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();
Beispiel #3
0
// 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();
Beispiel #4
0
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();