Fixing exercise/stats.php

skala
Julio Montoya 12 years ago
parent bd04d0ff83
commit aa2d77466d
  1. 15
      main/exercice/exercise.class.php
  2. 62
      main/exercice/stats.php

@ -6349,4 +6349,19 @@ class Exercise
}
public function getQuestionOrderedListByName()
{
$TBL_EXERCICE_QUESTION = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
$TBL_QUESTIONS = Database::get_course_table(TABLE_QUIZ_QUESTION);
// Getting question list from the order (question list drag n drop interface ).
$sql = "SELECT e.question_id
FROM $TBL_EXERCICE_QUESTION e INNER JOIN $TBL_QUESTIONS q
ON (e.question_id= q.iid)
WHERE e.c_id = {$this->course_id} AND e.exercice_id = '".Database::escape_string($this->id)."'
ORDER BY q.question";
$result = Database::query($sql);
return $result->fetchAll();
}
}

@ -20,13 +20,13 @@ if (!$result) {
$session_id = api_get_session_id();
if (empty($session_id)) {
$students = CourseManager :: get_student_list_from_course_code(api_get_course_int_id(), false);
$students = CourseManager::get_student_list_from_course_code(api_get_course_int_id(), false);
} else {
$students = CourseManager :: get_student_list_from_course_code(api_get_course_int_id(), true, $session_id);
$students = CourseManager::get_student_list_from_course_code(api_get_course_int_id(), true, $session_id);
}
$count_students = count($students);
$question_list = $objExercise->getQuestionList();
$question_list = $objExercise->getQuestionOrderedListByName();
$data = array();
//Question title # of students who tool it Lowest score Average Highest score Maximum score
@ -42,20 +42,20 @@ $headers = array(
);
if (!empty($question_list)) {
foreach ($question_list as $question_id) {
foreach ($question_list as $row) {
$question_id = $row['question_id'];
$question_obj = Question::read($question_id);
$exercise_stats = ExerciseLib::get_student_stats_by_question($question_id, $exercise_id, api_get_course_int_id(), api_get_session_id());
$count_users = ExerciseLib::get_number_students_question_with_answer_count($question_id, $exercise_id, api_get_course_int_id(), api_get_session_id());
$data[$question_id]['name'] = Text::cut($question_obj->question, 100);
$data[$question_id]['type'] = $question_obj->get_question_type_name();
//$data[$question_id]['students_who_try_exercise'] = $exercise_stats['users'];
$percentange = 0;
$percentage = 0;
if ($count_students) {
$percentange = $count_users/$count_students*100;
$percentage = $count_users/$count_students*100;
}
$data[$question_id]['students_who_try_exercise'] = Display::bar_progress($percentange, false, $count_users .' / '.$count_students);
$data[$question_id]['students_who_try_exercise'] = Display::bar_progress($percentage, false, $count_users .' / '.$count_students);
$data[$question_id]['lowest_score'] = round($exercise_stats['min'], 2);
$data[$question_id]['average_score'] = round($exercise_stats['average'], 2);
@ -85,7 +85,7 @@ foreach ($data as $row_table) {
}
$content = $table->toHtml();
//Format B
// Format B.
$headers = array(
get_lang('Question'),
@ -98,13 +98,15 @@ $data = array();
if (!empty($question_list)) {
$id = 0;
foreach ($question_list as $question_id) {
foreach ($question_list as $row) {
$question_id = $row['question_id'];
$question_obj = Question::read($question_id);
$exercise_stats = ExerciseLib::get_student_stats_by_question($question_id, $exercise_id, api_get_course_int_id(), api_get_session_id());
$answer = new Answer($question_id);
$answer->read();
$mainCounter = 1;
$counter = 1;
foreach ($answer->answer as $answer_id => $answer_item) {
$answer_info = $answer->selectAnswer($answer_id);
$is_correct = $answer->isCorrect($answer_id);
@ -133,11 +135,11 @@ if (!empty($question_list)) {
$count = ExerciseLib::get_number_students_answer_count($answer_id, $question_id, $exercise_id, api_get_course_int_id(), api_get_session_id(), FILL_IN_BLANKS, $answer_info_db, $answer_item);
$percentange = 0;
$percentage = 0;
if (!empty($count_students)) {
$percentange = $count/$count_students*100;
$percentage = $count/$count_students*100;
}
$data[$id]['attempts'] = Display::bar_progress($percentange, false, $count .' / '.$count_students);
$data[$id]['attempts'] = Display::bar_progress($percentage, false, $count .' / '.$count_students);
$id++;
$counter++;
@ -145,7 +147,7 @@ if (!empty($question_list)) {
break;
case MATCHING:
if ($is_correct == 0) {
if ($answer_id == 1) {
if ($mainCounter == 1) {
$data[$id]['name'] = Text::cut($question_obj->question, 100);
} else {
$data[$id]['name'] = '-';
@ -163,15 +165,15 @@ if (!empty($question_list)) {
$data[$id]['correct'] = $answer_info;
$count = ExerciseLib::get_number_students_answer_count($answer_id, $question_id, $exercise_id, api_get_course_int_id(), api_get_session_id(), MATCHING);
$percentange = 0;
$percentage = 0;
if (!empty($count_students)) {
$percentange = $count/$count_students*100;
$percentage = $count/$count_students*100;
}
$data[$id]['attempts'] = Display::bar_progress($percentange, false, $count .' / '.$count_students);
$data[$id]['attempts'] = Display::bar_progress($percentage, false, $count .' / '.$count_students);
}
break;
case HOT_SPOT:
if ($answer_id == 1) {
if ($mainCounter == 1) {
$data[$id]['name'] = Text::cut($question_obj->question, 100);
} else {
$data[$id]['name'] = '-';
@ -180,14 +182,14 @@ if (!empty($question_list)) {
$data[$id]['correct'] = '-';
$count = ExerciseLib::get_number_students_answer_hotspot_count($answer_id, $question_id, $exercise_id, api_get_course_int_id(), api_get_session_id());
$percentange = 0;
$percentage = 0;
if (!empty($count_students)) {
$percentange = $count/$count_students*100;
$percentage = $count/$count_students*100;
}
$data[$id]['attempts'] = Display::bar_progress($percentange, false, $count .' / '.$count_students);
$data[$id]['attempts'] = Display::bar_progress($percentage, false, $count .' / '.$count_students);
break;
default:
if ($answer_id == 1) {
if ($mainCounter == 1) {
$data[$id]['name'] = Text::cut($question_obj->question, 100);
} else {
$data[$id]['name'] = '-';
@ -196,17 +198,22 @@ if (!empty($question_list)) {
$data[$id]['correct'] = $correct_answer;
$count = ExerciseLib::get_number_students_answer_count($answer_id, $question_id, $exercise_id, api_get_course_int_id(), api_get_session_id());
$percentange = 0;
$percentage = 0;
if (!empty($count_students)) {
$percentange = $count/$count_students*100;
$percentage = $count/$count_students*100;
}
$data[$id]['attempts'] = Display::bar_progress($percentange, false, $count .' / '.$count_students);
$data[$id]['attempts'] = Display::bar_progress($percentage, false, $count .' / '.$count_students);
break;
}
$id++;
$mainCounter++;
}
}
}
//Format A table
$table = new HTML_Table(array('class' => 'data_table'));
$row = 0;
@ -228,9 +235,8 @@ foreach ($data as $row_table) {
}
$content .= $table->toHtml();
$interbreadcrumb[] = array ("url" => "exercice.php?gradebook=$gradebook", "name" => get_lang('Exercices'));
$interbreadcrumb[] = array ("url" => "admin.php?exerciseId=$exercise_id","name" => $objExercise->name);
$interbreadcrumb[] = array ("url" => "admin.php?exerciseId=$exercise_id", "name" => $objExercise->name);
$app['title'] = get_lang('ReportByQuestion');
$tpl = $app['template'];

Loading…
Cancel
Save