/** * @param int $question_id * @param int $exercise_id * @param string $course_code * @param int $session_id * @param string $questionType * @return int */ public static function get_number_students_question_with_answer_count($question_id, $exercise_id, $course_code, $session_id, $questionType = '') { $track_exercises = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES); $track_attempt = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ATTEMPT); $courseUser = Database::get_main_table(TABLE_MAIN_COURSE_USER); $courseTable = Database::get_main_table(TABLE_MAIN_COURSE); $courseUserSession = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $question_id = intval($question_id); $exercise_id = intval($exercise_id); $courseId = api_get_course_int_id($course_code); $session_id = intval($session_id); if ($questionType == FILL_IN_BLANKS) { $listStudentsId = array(); $listAllStudentInfo = CourseManager::get_student_list_from_course_code(api_get_course_id(), true); foreach ($listAllStudentInfo as $i => $listStudentInfo) { $listStudentsId[] = $listStudentInfo['user_id']; } $listFillTheBlankResult = FillBlanks::getFillTheBlankTabResult($exercise_id, $question_id, $listStudentsId, '1970-01-01', '3000-01-01'); return FillBlanks::getNbResultFillBlankAll($listFillTheBlankResult); } if (empty($session_id)) { $courseCondition = "\n INNER JOIN {$courseUser} cu\n ON cu.c_id = c.id AND cu.user_id = exe_user_id"; $courseConditionWhere = " AND relation_type <> 2 AND cu.status = " . STUDENT; } else { $courseCondition = "\n INNER JOIN {$courseUserSession} cu\n ON cu.c_id = c.id AND cu.user_id = exe_user_id"; $courseConditionWhere = " AND cu.status = 0 "; } $sql = "SELECT DISTINCT exe_user_id\n \t\tFROM {$track_exercises} e\n \t\tINNER JOIN {$track_attempt} a\n \t\tON (\n \t\t a.exe_id = e.exe_id AND\n \t\t e.c_id = a.c_id AND\n \t\t e.session_id = a.session_id\n )\n INNER JOIN {$courseTable} c\n ON (c.id = a.c_id)\n \t\t{$courseCondition}\n \t\tWHERE\n \t\t exe_exo_id = {$exercise_id} AND\n a.c_id = {$courseId} AND\n e.session_id = {$session_id} AND\n question_id = {$question_id} AND\n answer <> '0' AND\n e.status = ''\n {$courseConditionWhere}\n "; $result = Database::query($sql); $return = 0; if ($result) { $return = Database::num_rows($result); } return $return; }