Exercises: Format code, use course id instead of course code

pull/3766/head^2
Julio Montoya 5 years ago
parent 0798997639
commit 24a5aebc5f
  1. 44
      main/exercise/stats.php
  2. 26
      main/inc/lib/exercise.lib.php

@ -30,23 +30,15 @@ if (!$result) {
$sessionId = api_get_session_id();
$courseCode = api_get_course_id();
$courseId = api_get_course_int_id();
if (empty($sessionId)) {
$students = CourseManager:: get_student_list_from_course_code(
$courseCode,
false
);
$students = CourseManager::get_student_list_from_course_code($courseCode, false);
} else {
$students = CourseManager:: get_student_list_from_course_code(
$courseCode,
true,
$sessionId
);
$students = CourseManager::get_student_list_from_course_code($courseCode, true, $sessionId);
}
$count_students = count($students);
//$question_list = $objExercise->get_validated_question_list();
$totalQuestions = $objExercise->getQuestionCount(); //Get total of questions
$question_list = $objExercise->getQuestionForTeacher(0, $totalQuestions); // get questions from 0 to total
$questionList = $objExercise->getQuestionForTeacher(0, $objExercise->getQuestionCount());
$data = [];
// Question title # of students who tool it Lowest score Average Highest score Maximum score
@ -60,14 +52,13 @@ $headers = [
get_lang('Weighting'),
];
if (!empty($question_list)) {
foreach ($question_list as $question_id) {
if (!empty($questionList)) {
foreach ($questionList as $question_id) {
$questionObj = Question::read($question_id);
$exercise_stats = ExerciseLib::get_student_stats_by_question(
$exerciseStats = ExerciseLib::get_student_stats_by_question(
$question_id,
$exerciseId,
$courseCode,
$courseId,
$sessionId,
true
);
@ -92,14 +83,13 @@ if (!empty($question_list)) {
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);
$data[$question_id]['highest_score'] = round($exercise_stats['max'], 2);
$data[$question_id]['lowest_score'] = round($exerciseStats['min'], 2);
$data[$question_id]['average_score'] = round($exerciseStats['average'], 2);
$data[$question_id]['highest_score'] = round($exerciseStats['max'], 2);
$data[$question_id]['max_score'] = round($questionObj->weighting, 2);
}
}
// Format A table
$table = new HTML_Table(['class' => 'table table-hover table-striped data_table']);
$row = 0;
$column = 0;
@ -130,14 +120,14 @@ $headers = [
$data = [];
if (!empty($question_list)) {
if (!empty($questionList)) {
$id = 0;
foreach ($question_list as $question_id) {
foreach ($questionList as $question_id) {
$questionObj = Question::read($question_id);
$exercise_stats = ExerciseLib::get_student_stats_by_question(
$exerciseStats = ExerciseLib::get_student_stats_by_question(
$question_id,
$exerciseId,
$courseCode,
$courseId,
$sessionId,
true
);
@ -212,7 +202,7 @@ if (!empty($question_list)) {
$answer_id,
$question_id,
$exerciseId,
$courseCode,
$courseId,
$sessionId,
MATCHING
);
@ -266,7 +256,7 @@ if (!empty($question_list)) {
$real_answer_id,
$question_id,
$exerciseId,
$courseCode,
$courseId,
$sessionId
);
$percentage = 0;

@ -3910,7 +3910,7 @@ EOT;
*
* @param int $question_id
* @param int $exercise_id
* @param string $course_code
* @param int $courseId
* @param int $session_id
* @param bool $onlyStudent Filter only enrolled students
*
@ -3919,7 +3919,7 @@ EOT;
public static function get_student_stats_by_question(
$question_id,
$exercise_id,
$course_code,
$courseId,
$session_id,
$onlyStudent = false
) {
@ -3929,24 +3929,21 @@ EOT;
$question_id = (int) $question_id;
$exercise_id = (int) $exercise_id;
$course_code = Database::escape_string($course_code);
$session_id = (int) $session_id;
$courseId = api_get_course_int_id($course_code);
$courseId = (int) $courseId;
$sql = "SELECT MAX(marks) as max, MIN(marks) as min, AVG(marks) as average
FROM $track_exercises e
";
if (true == $onlyStudent) {
$courseCondition = '';
FROM $track_exercises e ";
if ($onlyStudent) {
if (empty($session_id)) {
$courseCondition = "
INNER JOIN $courseUser c
ON (
INNER JOIN $courseUser c
ON (
e.exe_user_id = c.user_id AND
e.c_id = c.c_id AND
c.status = ".STUDENT."
AND relation_type <> 2
)";
)";
} else {
$sessionRelCourse = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$courseCondition = "
@ -3960,6 +3957,7 @@ EOT;
}
$sql .= $courseCondition;
}
$sql .= "
INNER JOIN $track_attempt a
ON (
@ -4195,7 +4193,7 @@ EOT;
* @param int $answer_id
* @param int $question_id
* @param int $exercise_id
* @param string $course_code
* @param int $courseId
* @param int $session_id
* @param string $question_type
* @param string $correct_answer
@ -4207,7 +4205,7 @@ EOT;
$answer_id,
$question_id,
$exercise_id,
$course_code,
$courseId,
$session_id,
$question_type = null,
$correct_answer = null,
@ -4222,7 +4220,7 @@ EOT;
$question_id = (int) $question_id;
$answer_id = (int) $answer_id;
$exercise_id = (int) $exercise_id;
$courseId = api_get_course_int_id($course_code);
$courseId = (int) $courseId;
$session_id = (int) $session_id;
switch ($question_type) {

Loading…
Cancel
Save