public static function get_response_grade($response_id, $data = '') { $grade_data = get_post_meta($response_id, 'response_grade'); $module_id = wp_get_post_parent_id($response_id); $autograde_modules = Unit_Module::auto_grade_modules(); $module_type = get_post_meta($module_id, 'module_type', true); // Check if this needs to be auto graded if (in_array($module_type, $autograde_modules) && 100 > $grade_data[0]['grade']) { $grade = $grade_data[0]['grade']; $response = get_post($response_id); $student_id = $response->post_author; $unit_id = get_post_ancestors($module_id); $unit_id = $unit_id[0]; $course_id = get_post_meta($unit_id, 'course_id', true); // Multiple or single correct answer? $correct_answers = get_post_meta($module_id, 'checked_answer', true); $correct_answers = empty($correct_answers) ? get_post_meta($module_id, 'checked_answers', true) : $correct_answers; if (!is_array($correct_answers)) { if (trim($response->post_content) == trim($correct_answers)) { $grade = 100; } } else { $student_answers = get_post_meta($response_id, 'student_checked_answers'); if (count($student_answers) !== 0) { $cleaned_answers = array(); foreach ($correct_answers as $answer) { $value = stripslashes($answer); $value = strip_tags($value); $value = htmlentities($value); $cleaned_answers[] = $value; } $right_answers = $cleaned_answers; $cleaned_response = array(); foreach ($student_answers as $answer) { $value = stripslashes($answer); $value = strip_tags($value); $value = htmlentities($value); $cleaned_response[] = $value; } $chosen_answers = $cleaned_response; $grade = 0; foreach ($chosen_answers as $chosen_answer) { if (in_array($chosen_answer, $right_answers)) { $grade = $grade + 100; } else { //$response_grade = $response_grade + 0;//this line can be empty as well : ) } } if (count($chosen_answers) >= count($right_answers)) { $grade_cnt = count($chosen_answers); } else { $grade_cnt = count($right_answers); } $grade = round($grade / $grade_cnt, 0); } } Unit_Module::save_response_grade($response_id, $grade, $student_id, $course_id, $unit_id, $module_id); } if ($grade_data) { if ($data !== '') { return $grade_data[0][$data]; } else { return $grade_data[0]; } } else { } }