function submit_grades($grades_id, $grades, $email = false) { global $tool_content, $langGrades, $langWorkWrongInput, $course_id; foreach ($grades as $sid => $grade) { $sid = intval($sid); $val = Database::get()->querySingle("SELECT grade from assignment_submit WHERE id = ?d", $sid)->grade; $grade_valid = filter_var($grade, FILTER_VALIDATE_FLOAT); isset($grade) && $grade_valid !== false ? $grade = $grade_valid : ($grade = NULL); if ($val != $grade) { if (Database::get()->query("UPDATE assignment_submit\n SET grade = ?d, grade_submission_date = NOW(), grade_submission_ip = ?s\n WHERE id = ?d", $grade, $_SERVER['REMOTE_ADDR'], $sid)->affectedRows > 0) { $assign_id = Database::get()->querySingle("SELECT assignment_id FROM assignment_submit WHERE id = ?d", $sid)->assignment_id; $title = Database::get()->querySingle("SELECT title FROM assignment WHERE assignment.id = ?d", $assign_id)->title; Log::record($course_id, MODULE_ID_ASSIGN, LOG_MODIFY, array('id' => $sid, 'title' => $title, 'grade' => $grade)); //update gradebook if needed $quserid = Database::get()->querySingle("SELECT uid FROM assignment_submit WHERE id = ?d", $sid)->uid; update_gradebook_book($quserid, $assign_id, $grade, 'assignment'); if ($email) { grade_email_notify($grades_id, $sid, $grade, ''); } Session::Messages($langGrades, 'alert-success'); } } } show_assignment($grades_id); }
function submit_grades($grades_id, $grades, $email = false) { global $tool_content, $langGrades, $langWorkWrongInput, $course_id, $course_code, $langFormErrors, $langTheField, $m; $assignment = Database::get()->querySingle("SELECT * FROM assignment WHERE id = ?d", $grades_id); $errors = []; foreach ($grades as $key => $grade) { $v = new Valitron\Validator($grade); $v->addRule('emptyOrNumeric', function($field, $value, array $params) { if(is_numeric($value) || empty($value)) return true; }); $v->rule('emptyOrNumeric', array('grade')); $v->rule('min', array('grade'), 0); $v->rule('max', array('grade'), $assignment->max_grade); $v->labels(array( 'grade' => "$langTheField $m[grade]" )); if(!$v->validate()) { $valitron_errors = $v->errors(); $errors["grade.$key"] = $valitron_errors['grade']; } } if(empty($errors)) { foreach ($grades as $sid => $grade) { $sid = intval($sid); $val = Database::get()->querySingle("SELECT grade from assignment_submit WHERE id = ?d", $sid)->grade; $grade = is_numeric($grade['grade']) ? $grade['grade'] : null; if ($val !== $grade) { if (Database::get()->query("UPDATE assignment_submit SET grade = ?f, grade_submission_date = NOW(), grade_submission_ip = ?s WHERE id = ?d", $grade, $_SERVER['REMOTE_ADDR'], $sid)->affectedRows > 0) { Log::record($course_id, MODULE_ID_ASSIGN, LOG_MODIFY, array('id' => $sid, 'title' => $assignment->title, 'grade' => $grade)); //update gradebook if needed if ($assignment->group_submissions) { $group_id = Database::get()->querySingle("SELECT group_id FROM assignment_submit WHERE id = ?d", $sid)->group_id; $user_ids = Database::get()->queryArray("SELECT user_id FROM group_members WHERE group_id = ?d", $group_id); foreach ($user_ids as $user_id) { update_gradebook_book($user_id, $assignment->id, $grade/$assignment->max_grade, GRADEBOOK_ACTIVITY_ASSIGNMENT); } } else { $quserid = Database::get()->querySingle("SELECT uid FROM assignment_submit WHERE id = ?d", $sid)->uid; update_gradebook_book($quserid, $assignment->id, $grade/$assignment->max_grade, GRADEBOOK_ACTIVITY_ASSIGNMENT); } if ($email) { grade_email_notify($grades_id, $sid, $grade, ''); } Session::Messages($langGrades, 'alert-success'); } } } Session::Messages($langGrades, 'alert-success'); } else { Session::flashPost()->Messages($langFormErrors)->Errors($errors); } redirect_to_home_page("modules/work/index.php?course=$course_code&id=$grades_id"); }