<table class="gradebook assignment <?php echo $editable; ?> "> <tbody> <?php $comment_colspan = 5; foreach ($students as $key => $student) { if (isset($student["grade_id"])) { $grade_id = $student["grade_id"]; } else { $grade_id = ""; } if (isset($student["grade_value"])) { $grade_value = format_retrieved_grade($student["grade_value"], $assessment); } else { $grade_value = "-"; } if (isset($student["grade_weighting"]) && $student["grade_weighting"]) { $grade_weighting = $student["grade_weighting"]; } else { $grade_weighting = $student["grade_weighting"]; } ?> <tr id="grades<?php echo $student["proxy_id"]; ?> "> <td><div class="text-center"><a href="<?php echo ENTRADA_URL;
$where = "`grade_id` = " . $db->qstr($grade["grade_id"]); } else { // If no grade was specified or found (create mode), insert a new one. $grade = array("value" => $GRADE_VALUE, "assessment_id" => $ASSESSMENT_ID, "proxy_id" => $PROXY_ID); $mode = "INSERT"; $where = false; } $query = "SELECT `grade_threshold`\n\t\t\t\t FROM `assessments`\n\t\t\t\t WHERE `assessment_id` = " . $db->qstr($ASSESSMENT_ID) . "\n\t\t\t\t AND `active` = '1'"; $result = $db->GetRow($query); if ($result && $GRADE_VALUE < $result["grade_threshold"]) { $grade["threshold_notified"] = "0"; } if ($db->AutoExecute("assessment_grades", $grade, $mode, $where)) { if ($mode == "UPDATE") { application_log("success", "Successfully updated grade for assessment_id [" . $ASSESSMENT_ID . "] for proxy_id [" . $PROXY_ID . "]."); $GRADE_ID = $db->qstr($grade["grade_id"]); } else { if ($mode == "INSERT") { application_log("success", "Successfully entered grade for assessment_id [" . $ASSESSMENT_ID . "] for proxy_id [" . $PROXY_ID . "]."); $GRADE_ID = $db->Insert_ID(); } else { application_log("error", "Unknown mode for assessment_id [" . $ASSESSMENT_ID . "] for proxy_id [" . $PROXY_ID . "]."); } } echo $GRADE_ID . "|" . format_retrieved_grade($GRADE_VALUE, $assessment); } else { echo "Error saving grade!"; application_log("error", "Failed to save grade when AJAX editing. DB said [" . $db->ErrorMsg() . "]"); } } }
$query = "SELECT *, a.`assessment_id` as `assessment_id` FROM `assessment_grades` a\n\t\t\t\t\t\t\t\t\tLEFT JOIN `assessment_exceptions` b\n\t\t\t\t\t\t\t\t\tON a.`assessment_id` = b.`assessment_id`\n\t\t\t\t\t\t\t\t\tAND a.`proxy_id` = b.`proxy_id`\n\t\t\t\t\t\t\t\t\tWHERE a.`assessment_id` IN (" . $assessment_ids_string . ")\n\t\t\t\t\t\t\t\t\tAND a.`proxy_id` = " . $db->qstr($student["proxy_id"]); $student_assessments = $db->GetAll($query); $s_assessments = array(); foreach ($student_assessments as $assessment) { $s_assessments[$assessment["assessment_id"]] = $indexed_assessments[$assessment["assessment_id"]]; $s_assessments[$assessment["assessment_id"]]["grade"] = $assessment["value"]; if ($assessment["grade_weighting"]) { $s_assessments[$assessment["assessment_id"]]["grade_weighting"] = $assessment["grade_weighting"]; } } foreach ($assessment_ids as $assessment_id) { if (!isset($s_assessments[$assessment_id])) { $cols[] = trim(format_retrieved_grade(0, $indexed_assessments[$assessment_id])); continue; } $cols[] = trim(format_retrieved_grade($s_assessments[$assessment_id]["grade"], $s_assessments[$assessment_id])); } if ($export_weighted_grades) { $weight = gradebook_get_weighted_grades($COURSE_ID, $student["group_id"], $student["proxy_id"], false, $assessment_ids_string, false); $cols[] = round($weight["grade"], 2); if ($export_calculated_grades_enabled) { $export_grade = ""; $whole_number_grade = round($weight["grade"], 0); switch ($export_calculated_grades->grade_short) { case "letter_grade": foreach ($export_calculated_grades->grades as $letter => $range) { if ($whole_number_grade >= $range->min && $whole_number_grade <= $range->max) { $export_grade = $letter; } } break;
function gradebook_get_weighted_grades($course_id, $cohort, $proxy_id, $assessment_id = false, $assessment_ids_string = false, $learner = true) { global $db; $weighted_grade = 0; $weighted_total = 0; $weighted_percent = 0; $query = "\tSELECT a.*, b.`handler`\n\t\t\t\tFROM `assessments` AS a\n\t\t\t\tLEFT JOIN `assessment_marking_schemes` AS b\n\t\t\t\tON b.`id` = a.`marking_scheme_id`\n\t\t\t\tWHERE a.`course_id` = " . $db->qstr($course_id) . "\n\t\t\t\t" . (!isset($learner) || $learner ? "\n AND (a.`release_date` = '0' OR a.`release_date` <= " . $db->qstr(time()) . ")\n AND (a.`release_until` = '0' OR a.`release_until` > " . $db->qstr(time()) . ")\n AND a.`show_learner` = '1'" : "") . "\n AND a.`active` = '1'\n\t\t\t\tAND a.`cohort` = " . $db->qstr($cohort) . ($assessment_id ? " AND a.`assessment_id` = " . $db->qstr($assessment_id) : ($assessment_ids_string ? " AND a.`assessment_id` IN (" . $assessment_ids_string . ")" : "")); $assessments = $db->GetAll($query); if ($assessments) { foreach ($assessments as $assessment) { $query = "SELECT a.`value`, b.`grade_weighting` FROM `assessment_grades` AS a\n LEFT JOIN `assessment_exceptions` AS b\n ON a.`assessment_id` = b.`assessment_id`\n AND b.`proxy_id` = a.`proxy_id`\n WHERE a.`proxy_id` = " . $db->qstr($proxy_id) . "\n AND a.`assessment_id` = " . $db->qstr($assessment["assessment_id"]); $grade = $db->GetRow($query); if ($grade) { if ($grade["grade_weighting"] !== NULL) { $grade_weighting = $grade["grade_weighting"]; } else { $grade_weighting = $assessment["grade_weighting"]; } if (isset($grade["value"])) { $grade_value = format_retrieved_grade($grade["value"], $assessment); $weighted_total += $grade_weighting; $weighted_grade += ($assessment["handler"] == "Numeric" ? $grade_value / $assessment["numeric_grade_points_total"] : ($assessment["handler"] == "Percentage" ? (double) $grade_value / 100.0 : ($assessment["handler"] == "IncompleteComplete" ? ($grade_value == "C" ? 100 : 0) / 100 : $grade_value))) * $grade_weighting; } } } } if ($weighted_grade && $weighted_total) { $weighted_percent = number_format($weighted_grade / $weighted_total * 100, 2); } return array("total" => $weighted_total, "grade" => $weighted_grade, "percent" => $weighted_percent); }
</td> <td><?php echo $student["cohort"]; ?> </td> <?php $lates = 0; $resubmits = 0; foreach ($assessments as $key2 => $assessment) { if (isset($student_grades[$student["proxy_id"] . "-" . $assessment["assessment_id"]]["grade_id"])) { $grade_id = $student_grades[$student["proxy_id"] . "-" . $assessment["assessment_id"]]["grade_id"]; } else { $grade_id = ""; } if (isset($student_grades[$student["proxy_id"] . "-" . $assessment["assessment_id"]]["grade_value"])) { $grade_value = format_retrieved_grade($student_grades[$student["proxy_id"] . "-" . $assessment["assessment_id"]]["grade_value"], $assessment); } else { $grade_value = "-"; } if ($assessment_options[$assessment["assessment_id"]]) { foreach ($assessment_options[$assessment["assessment_id"]] as $aoption_id) { $query = "\tSELECT a.`value`, b.`option_id`\n\t\t\t\t\t\t\t\t\t\t\t\t\tFROM `assessment_option_values` AS a\n\t\t\t\t\t\t\t\t\t\t\t\t\tJOIN `assessment_options` AS b\n\t\t\t\t\t\t\t\t\t\t\t\t\tON a.`aoption_id` = b.`aoption_id`\n\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE a.`aoption_id` = " . $db->qstr($aoption_id) . " \n\t\t\t\t\t\t\t\t\t\t\t\t\tAND a.`proxy_id` = " . $db->qstr($student["proxy_id"]) . " \n\t\t\t\t\t\t\t\t\t\t\t\t\tAND a.`value` != 0 \n\t\t\t\t\t\t\t\t\t\t\t\t\tAND a.`value` IS NOT NULL"; $result = $db->GetRow($query); if ($result && $result["option_id"] == "5") { $lates += $result["value"]; } else { if ($result && $result["option_id"] == "6") { $resubmits++; } } }
echo "\t<td>" . trim($grade_value) . assessment_suffix($result) . "</td>\n"; if (defined("GRADEBOOK_DISPLAY_MEAN_GRADE") && GRADEBOOK_DISPLAY_MEAN_GRADE) { echo "\t<td>" . trim($mean_value) . assessment_suffix($result) . "</td>\n"; } if (defined("GRADEBOOK_DISPLAY_MEDIAN_GRADE") && GRADEBOOK_DISPLAY_MEDIAN_GRADE) { $query = "SELECT c.`value`\n FROM `courses` AS a\n JOIN `assessments` AS b\n ON a.`course_id` = b.`course_id`\n AND b.`cohort` IN(" . $group_ids_string . ")\n JOIN `assessment_grades` AS c\n ON b.`assessment_id` = c.`assessment_id`\n JOIN `assessment_marking_schemes` AS d\n ON b.`marking_scheme_id` = d.`id`\n JOIN `assessment_grades` AS e\n ON b.`assessment_id` = e.`assessment_id`\n WHERE a.`course_id` = " . $db->qstr($COURSE_ID) . "\n AND b.`active` = 1\n AND (b.`release_date` = '0' OR b.`release_date` <= " . $db->qstr(time()) . ")\n AND (b.`release_until` = '0' OR b.`release_until` >= " . $db->qstr(time()) . ")\n AND b.`assessment_id` = " . $db->qstr($result["assessment_id"]) . "\n ORDER BY c.`value` ASC"; $all_grades = $db->GetAll($query); if ($all_grades) { $n = count($all_grades); $h = intval($n / 2); if ($n % 2 == 0) { $median_value = ($all_grades[$h]["value"] + $all_grades[$h - 1]["value"]) / 2; } else { $median_value = $all_grades[$h]["value"]; } $median_value = format_retrieved_grade(round($median_value, 2), $result); } echo "\t<td>" . trim($median_value) . assessment_suffix($result) . "</td>\n"; } if (defined("GRADEBOOK_DISPLAY_WEIGHTED_TOTAL") && GRADEBOOK_DISPLAY_WEIGHTED_TOTAL) { $gradebook = gradebook_get_weighted_grades($result["course_id"], $ENTRADA_USER->getCohort(), $ENTRADA_USER->getID(), $result["assessment_id"]); echo "\t<td>" . round(trim($gradebook["grade"]), 2) . " / " . trim($gradebook["total"]) . "</td>\n"; } echo "\t<td style=\"text-align: right;\">" . ($grade_value === "-" ? "-" : ($result["handler"] == "Numeric" ? ($result["value"] === "0" ? "0" : trim(trim(number_format($grade_value / $result["numeric_grade_points_total"] * 100, 2), "0"), ".")) . "%" : ($result["handler"] == "Percentage" ? "N/A" : $grade_value))) . "</td>\n"; echo "</tr>\n"; } ?> </tbody> </table> <?php } else {