Exercise : add option to select type of question on pending attempt page - refs BT#21482

pull/5347/head
NicoDucou 1 year ago
parent e5ccf4d6e8
commit 64fc4450a4
  1. 11
      main/exercise/pending.php
  2. 7
      main/inc/ajax/model.ajax.php
  3. 32
      main/inc/lib/exercise.lib.php

@ -13,6 +13,7 @@ $filter_user = isset($_REQUEST['filter_by_user']) ? (int) $_REQUEST['filter_by_u
$courseId = isset($_REQUEST['course_id']) ? (int) $_REQUEST['course_id'] : 0;
$exerciseId = isset($_REQUEST['exercise_id']) ? (int) $_REQUEST['exercise_id'] : 0;
$statusId = isset($_REQUEST['status']) ? (int) $_REQUEST['status'] : 0;
$questionTypeId = isset($_REQUEST['questionTypeId']) ? (int) $_REQUEST['questionTypeId'] : 0;
$exportXls = isset($_REQUEST['export_xls']) && !empty($_REQUEST['export_xls']) ? (int) $_REQUEST['export_xls'] : 0;
$action = $_REQUEST['a'] ?? null;
@ -293,6 +294,14 @@ $status = [
];
$form->addSelect('status', get_lang('Status'), $status);
$questionType = [
0 => get_lang('All'),
1 => get_lang('QuestionsWithNoAutomaticCorrection'),
];
$form->addSelect('questionTypeId', get_lang('QuestionType'), $questionType);
$form->addButtonSearch(get_lang('Search'), 'pendingSubmit');
$content = $form->returnForm();
@ -305,7 +314,7 @@ if (empty($statusId)) {
$url = api_get_path(WEB_AJAX_PATH).
'model.ajax.php?a=get_exercise_pending_results&filter_by_user='.$filter_user.
'&course_id='.$courseId.'&exercise_id='.$exerciseId.'&status='.$statusId.'&showAttemptsInSessions='.$showAttemptsInSessions;
'&course_id='.$courseId.'&exercise_id='.$exerciseId.'&status='.$statusId.'&questionType='.$questionTypeId.'&showAttemptsInSessions='.$showAttemptsInSessions;
$action_links = '';
$officialCodeInList = api_get_setting('show_official_code_exercise_result_list');

@ -649,6 +649,7 @@ switch ($action) {
$courseId = $_REQUEST['course_id'] ?? 0;
$exerciseId = $_REQUEST['exercise_id'] ?? 0;
$status = $_REQUEST['status'] ?? 0;
$questionType = $_REQUEST['questionType'] ?? 0;
$showAttemptsInSessions = $_REQUEST['showAttemptsInSessions'] ? true : false;
if (isset($_GET['filter_by_user']) && !empty($_GET['filter_by_user'])) {
$filter_user = (int) $_GET['filter_by_user'];
@ -685,7 +686,8 @@ switch ($action) {
false,
true,
$status,
$showAttemptsInSessions
$showAttemptsInSessions,
$questionType
);
break;
@ -1622,7 +1624,8 @@ switch ($action) {
false,
true,
$status,
$showAttemptsInSessions
$showAttemptsInSessions,
$questionType
);
break;

@ -2227,7 +2227,8 @@ HOTSPOT;
$showSession = false,
$searchAllTeacherCourses = false,
$status = 0,
$showAttemptsInSessions = false
$showAttemptsInSessions = false,
$questionType = 0
) {
return self::get_exam_results_data(
null,
@ -2246,7 +2247,8 @@ HOTSPOT;
false,
$searchAllTeacherCourses,
$status,
$showAttemptsInSessions
$showAttemptsInSessions,
$questionType
);
}
@ -2534,7 +2536,8 @@ HOTSPOT;
$getOnlyIds = false,
$searchAllTeacherCourses = false,
$status = 0,
$showAttemptsInSessions = false
$showAttemptsInSessions = false,
$questionType = 0
) {
//@todo replace all this globals
global $filter;
@ -2558,6 +2561,27 @@ HOTSPOT;
$courseCondition = "c_id = $courseId";
$statusCondition = '';
if ($questionType == 1) {
$TBL_EXERCISES_REL_QUESTION = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
$TBL_EXERCISES_QUESTION = Database::get_course_table(TABLE_QUIZ_QUESTION);
$sqlExercise = "SELECT exercice_id
FROM $TBL_EXERCISES_REL_QUESTION terq
LEFT JOIN $TBL_EXERCISES_QUESTION teq
ON terq.question_id = teq.iid
WHERE teq.type in (".FREE_ANSWER.", ".ORAL_EXPRESSION.", ".ANNOTATION.", ".UPLOAD_ANSWER.")
";
$resultExerciseIds = Database::query($sqlExercise);
$exercises = Database::store_result($resultExerciseIds, 'ASSOC');
$exerciseIds = [];
foreach ($exercises as $exercise) {
$exerciseIds[] = $exercise['exercice_id'];
}
$exercises_where = " AND te.exe_exo_id IN(".implode(',', $exerciseIds).")";
$exercisesFilter = " AND exe_exo_id IN(".implode(',', $exerciseIds).")";
}
if (!empty($status)) {
switch ($status) {
case 2:
@ -2653,6 +2677,7 @@ HOTSPOT;
WHERE
$courseCondition
$exerciseFilter
$exercisesFilter
$sessionCondition
GROUP BY ttte.exe_id
)";
@ -2809,6 +2834,7 @@ HOTSPOT;
ce.active <> -1 AND
ce.$courseCondition
$exercise_where
$exercises_where
$extra_where_conditions
$statusCondition
";

Loading…
Cancel
Save