Fix validation with quiz_question_limit_per_day - refs BT#15234

pull/2874/head
Angel Fernando Quiroz Campos 7 years ago
parent 657af7711e
commit bc16fa6254
  1. 13
      main/exercise/exercise.class.php
  2. 2
      main/exercise/exercise_submit.php
  3. 21
      main/exercise/overview.php
  4. 5
      main/inc/lib/exercise.lib.php

@ -6284,19 +6284,6 @@ class Exercise
);
$isVisible = false;
}
} else {
$isLimitReached = ExerciseLib::isQuestionsLimitPerDayReached(
api_get_user_id(),
$this->selectNbrQuestions(),
api_get_course_int_id(),
api_get_session_id()
);
if ($isLimitReached) {
$maxQuestionsAnswered = (int) api_get_course_setting('quiz_question_limit_per_day');
$message = sprintf(get_lang('QuizQuestionsLimitPerDayXReached'), $maxQuestionsAnswered);
$isVisible = false;
}
}
}

@ -247,7 +247,7 @@ if ($objExercise->selectAttempts() > 0) {
if (!empty($exercise_stat_info)) {
$isQuestionsLimitReached = ExerciseLib::isQuestionsLimitPerDayReached(
$user_id,
$objExercise->selectNbrQuestions(),
count($objExercise->get_validated_question_list()),
$courseId,
$sessionId
);

@ -28,7 +28,7 @@ $sessionId = api_get_session_id();
$exercise_id = isset($_REQUEST['exerciseId']) ? intval($_REQUEST['exerciseId']) : 0;
$objExercise = new Exercise();
$result = $objExercise->read($exercise_id, false);
$result = $objExercise->read($exercise_id, true);
if (!$result) {
api_not_allowed(true);
@ -392,7 +392,14 @@ if ($disable && empty($exercise_stat_info)) {
$exercise_url_button = Display::return_message(get_lang('NewExerciseAttemptDisabled'));
}
if (!empty($exercise_url_button)) {
$isLimitReached = ExerciseLib::isQuestionsLimitPerDayReached(
api_get_user_id(),
count($objExercise->get_validated_question_list()),
api_get_course_int_id(),
api_get_session_id()
);
if (!empty($exercise_url_button) && !$isLimitReached) {
$html .= Display::div(
Display::div(
$exercise_url_button,
@ -402,6 +409,16 @@ if (!empty($exercise_url_button)) {
);
}
if ($isLimitReached) {
$maxQuestionsAnswered = (int) api_get_course_setting('quiz_question_limit_per_day');
$html .= Display::return_message(
sprintf(get_lang('QuizQuestionsLimitPerDayXReached'), $maxQuestionsAnswered),
'warning',
false
);
}
$html .= Display::tag(
'div',
$table_content,

@ -5299,12 +5299,11 @@ EOT;
SELECT COUNT(ea) FROM ChamiloCoreBundle:TrackEAttempt ea
WHERE ea.userId = :user AND ea.cId = :course AND ea.sessionId = :session
AND ea.tms > :time
GROUP BY ea.questionId
')
->setParameters(['user' => $userId, 'course' => $courseId, 'session' => $sessionId, 'time' => $time])
->getResult();
->getSingleScalarResult();
return count($result);
return $result;
}
/**

Loading…
Cancel
Save