<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() . "]");
        }
    }
}
Beispiel #3
0
 $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++;
                                    }
                                }
                            }
Beispiel #6
0
            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 {