if (!isset($assessment)) { $query = " SELECT a.*, b.`handler`, c.`organisation_id` FROM `assessments` as a\n\t\t\t\t\tLEFT JOIN `assessment_marking_schemes` as b\n\t\t\t\t\tON a.`marking_scheme_id` = b.`id`\n\t\t\t\t\tLEFT JOIN `courses` as c\n\t\t\t\t\tON a.`course_id` = c.`course_id`\n\t\t\t\t\tWHERE a.`assessment_id` = " . $db->qstr($ASSESSMENT_ID) . "\n\t\t\t\t\tAND a.`active` = '1'"; $assessment = $db->GetRow($query); if (!isset($assessment) || !is_array($assessment) || !(count($assessment) >= 1)) { echo "Error! Assessment not found."; application_log("error", "Failed to provide a valid assessment identifier when trying to AJAX edit."); exit; } } if (!$ENTRADA_ACL->amIAllowed(new GradebookResource($assessment["course_id"], $assessment["organisation_id"]), "update")) { echo "Permissions Error!"; application_log("error", "User tried to edit grades for an assessment without permission."); exit; } // Format grade value for insertion or update. If it comes back as blank, then delete. $GRADE_VALUE = get_storage_grade($grade_value, $assessment); // Grade or assessment has been found if it has been specified, // Delete an exisiting grade if it was cleared if ($mode == "delete" || $GRADE_VALUE === "") { $query = "DELETE FROM `assessment_grades` WHERE `assessment_grades`.`proxy_id` = " . $db->qstr($grade["proxy_id"]) . " AND `assessment_grades`.`assessment_id` = " . $db->qstr($grade["assessment_id"]); if ($db->Execute($query)) { echo "-"; } else { echo "Error! Grade not deleted."; application_log("error", "Failed to delete grade when AJAX editing. DB said [" . $db->ErrorMsg() . "]"); } } else { // If a grade was specified in the request (update mode), update it. if ($mode == "update") { $grade["value"] = $GRADE_VALUE; $mode = "UPDATE";
} $valid_value = true; } elseif (is_numeric($temp_value) && $assessment["handler"] == "Boolean" && $grade_threshold) { $valid_value = true; if ((int) $temp_value >= $grade_threshold) { $temp_value = 100; } else { $temp_value = 0; } } $assessment["numeric_grade_points_total"] = 100; } elseif ($assessment["handler"] == "Percentage") { $assessment["numeric_grade_points_total"] = 100; } if ((!in_array($assessment["handler"], array("Boolean", "CompleteIncomplete")) || (int) $temp_value || $temp_value === 0) && $temp_value <= $assessment["numeric_grade_points_total"] && ((string) trim($preserved_input) == (string) $temp_value || $temp_value || $temp_value === 0)) { $PROCESSED["value"] = get_storage_grade($temp_value, $assessment); $valid_value = true; } if ($stud_num && isset($temp_value) && ($temp_value || $temp_value === false || $temp_value === 0.0 || $temp_value === 0)) { $query = "SELECT * FROM `" . AUTH_DATABASE . "`.`user_data` WHERE `number` = " . $db->qstr($stud_num); $user = $db->GetRow($query); if ($user) { $query = "SELECT * FROM `group_members` WHERE `group_id` = " . $db->qstr($GROUP) . " AND `proxy_id` = " . $db->qstr($user["id"]) . " AND `member_active` = '1'"; $member = $db->GetRow($query); if ($member) { $PROCESSED["proxy_id"] = $member["proxy_id"]; $member_found = true; } if ($member_found) { if ($valid_value) { $query = "SELECT * FROM `assessment_grades` WHERE `assessment_id` = " . $db->qstr($ASSESSMENT_ID) . " AND `proxy_id` = " . $db->qstr($member["proxy_id"]);