Fixing question report see #5257

skala
Julio Montoya 14 years ago
parent 198bca598c
commit 09addbb420
  1. 28
      main/exercice/exercise.lib.php
  2. 10
      main/exercice/stats.php
  3. 8
      main/inc/lib/course.lib.php

@ -1621,23 +1621,28 @@ function get_student_stats_by_question($question_id, $exercise_id, $course_code
return $return;
}
function get_number_students_question_with_answer_count($question_id, $exercise_id, $course_code, $session_id) {
function get_number_students_question_with_answer_count($question_id, $exercise_id, $course_code, $session_id) {
$track_exercises = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$track_attempt = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
$course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$question_id = intval($question_id);
$exercise_id = intval($exercise_id);
$course_code = Database::escape_string($course_code);
$session_id = intval($session_id);
$sql = "SELECT DISTINCT exe_user_id
FROM $track_exercises e INNER JOIN $track_attempt a ON (a.exe_id = e.exe_id)
FROM $track_exercises e INNER JOIN $track_attempt a ON (a.exe_id = e.exe_id) INNER JOIN $course_user cu
ON cu.course_code = a.course_code AND cu.user_id = exe_user_id
WHERE exe_exo_id = $exercise_id AND
course_code = '$course_code' AND
a.course_code = '$course_code' AND
e.session_id = $session_id AND
question_id = $question_id AND
answer <> 0 AND
status = ''";
answer <> 0 AND
cu.status = ".STUDENT." AND
relation_type <> 2 AND
e.status = ''";
$result = Database::query($sql);
$return = 0;
if ($result) {
@ -1650,6 +1655,7 @@ function get_number_students_question_with_answer_count($question_id, $exercise
function get_number_students_answer_count($answer_id, $question_id, $exercise_id, $course_code, $session_id) {
$track_exercises = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$track_attempt = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
$course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$question_id = intval($question_id);
$answer_id = intval($answer_id);
@ -1658,12 +1664,16 @@ function get_number_students_answer_count($answer_id, $question_id, $exercise_i
$session_id = intval($session_id);
$sql = "SELECT DISTINCT exe_user_id
FROM $track_exercises e INNER JOIN $track_attempt a ON (a.exe_id = e.exe_id)
FROM $track_exercises e INNER JOIN $track_attempt a ON (a.exe_id = e.exe_id) INNER JOIN $course_user cu
ON cu.course_code = a.course_code AND cu.user_id = exe_user_id
WHERE exe_exo_id = $exercise_id AND
course_code = '$course_code' AND
a.course_code = '$course_code' AND
e.session_id = $session_id AND
answer = $answer_id AND
question_id = $question_id AND status = ''";
answer = $answer_id AND
question_id = $question_id AND
cu.status = ".STUDENT." AND
relation_type <> 2 AND
e.status = ''";
$result = Database::query($sql);
$return = 0;
if ($result) {

@ -18,7 +18,13 @@ if (!$result) {
api_not_allowed(true);
}
$students = CourseManager :: get_student_list_from_course_code(api_get_course_id(), false);
$session_id = api_get_session_id();
if (empty($session_id)) {
$students = CourseManager :: get_student_list_from_course_code(api_get_course_id(), false);
} else {
$students = CourseManager :: get_student_list_from_course_code(api_get_course_id(), true, $session_id);
}
$count_students = count($students);
$question_list = $objExercise->get_validated_question_list();
@ -37,7 +43,7 @@ $headers = array(
);
if (!empty($question_list)) {
foreach($question_list as $question_id) {
foreach ($question_list as $question_id) {
$question_obj = Question::read($question_id);
$exercise_stats = get_student_stats_by_question($question_id, $exercise_id, api_get_course_id(), api_get_session_id());
$count_users = get_number_students_question_with_answer_count($question_id, $exercise_id, api_get_course_id(), api_get_session_id());

@ -1314,8 +1314,9 @@ class CourseManager {
if ($session_id == 0) {
// students directly subscribed to the course
$rs = Database::query("SELECT * FROM ".Database::get_main_table(TABLE_MAIN_COURSE_USER)."
WHERE course_code = '$course_code' AND status = 5");
$sql = "SELECT * FROM ".Database::get_main_table(TABLE_MAIN_COURSE_USER)."
WHERE course_code = '$course_code' AND status = ".STUDENT."";
$rs = Database::query();
while ($student = Database::fetch_array($rs)) {
$students[$student['user_id']] = $student;
}
@ -1324,7 +1325,8 @@ class CourseManager {
// students subscribed to the course through a session
if ($with_session) {
$sql_query = "SELECT * FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)." WHERE course_code = '$course_code' AND status<>2";
$sql_query = "SELECT * FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)."
WHERE course_code = '$course_code' AND status<>2";
if ($session_id != 0) {
$sql_query .= ' AND id_session = '.$session_id;
}

Loading…
Cancel
Save