Plugin: Remedial Courses: Fix subscription to remedial courses after saving result - refs BT#18165

pull/3859/head
Angel Fernando Quiroz Campos 5 years ago
parent 6fda6da964
commit af56798ded
  1. 47
      main/exercise/exercise.class.php
  2. 2
      main/exercise/exercise_report.php
  3. 23
      main/exercise/exercise_result.php
  4. 23
      main/exercise/overview.php

@ -10852,7 +10852,7 @@ class Exercise
* @param int $sessionId
* @param array $attemps
*/
public function advancedCourseList($userId = 0, $sessionId = 0, $attempt = [])
public function advancedCourseList($userId = 0, $sessionId = 0)
{
$userId = (int) $userId;
$sessionId = (int) $sessionId;
@ -10877,18 +10877,12 @@ class Exercise
if (!isset($bestAttempt['exe_result'])) {
// In the case that the result is 0, get_best_attempt_exercise_results_per_user does not return data,
// for that this block is used
if (count($attempt) == 0) {
$exerciseStatInfo = Event::getExerciseResultsByUser(
$userId,
$this->id,
$this->course_id,
$sessionId
);
} else {
$exerciseStatInfo = $attempt;
}
unset($attempt);
$exerciseStatInfo = Event::getExerciseResultsByUser(
$userId,
$this->id,
$this->course_id,
$sessionId
);
$bestAttempt['exe_result'] = 0;
foreach ($exerciseStatInfo as $attempt) {
if ($attempt['exe_result'] >= $bestAttempt['exe_result']) {
@ -11017,12 +11011,13 @@ class Exercise
* When a student completes the number of attempts and fails the exam, she is enrolled in a series of remedial
* courses BT#18165.
*
* @param int $userId
* @param int $sessionId
* @param array $attemps
* @param bool $review
* @param int $userId
* @param int $sessionId
* @param bool $review
*
* @return string|null
*/
public function remedialCourseList($userId = 0, $sessionId = 0, $attempt = [], $review = false)
public function remedialCourseList($userId = 0, $sessionId = 0, $review = false)
{
$userId = empty($userId) ? api_get_user_id() : (int) $userId;
$sessionId = (int) $sessionId;
@ -11054,16 +11049,12 @@ class Exercise
ANNOTATION,
];
if (count($attempt) != 0) {
$exercise_stat_info = $attempt;
} else {
$exercise_stat_info = Event::getExerciseResultsByUser(
$userId,
$this->id,
$this->course_id,
$sessionId
);
}
$exercise_stat_info = Event::getExerciseResultsByUser(
$userId,
$this->id,
$this->course_id,
$sessionId
);
$bestAttempt = Event::get_best_attempt_exercise_results_per_user(
$userId,
$this->id,

@ -266,7 +266,7 @@ if (isset($_REQUEST['comments']) &&
Database::query($sql);
// See BT#18165
$remedialMessage = $objExerciseTmp->remedialCourseList($student_id, api_get_session_id(), [], true);
$remedialMessage = $objExerciseTmp->remedialCourseList($student_id, api_get_session_id(), true);
if (null != $remedialMessage) {
Display::addFlash(
Display::return_message($remedialMessage, 'warning', false)

@ -270,29 +270,16 @@ ExerciseLib::sendNotification(
$hookQuizEnd = HookQuizEnd::create();
$hookQuizEnd->setEventData(['exe_id' => $exeId]);
$hookQuizEnd->notifyQuizEnd();
$exerciseStatInfo = Event::getExerciseResultsByUser(
api_get_user_id(),
$exerciseId,
api_get_course_int_id(),
api_get_session_id()
);
$attempt_count = Event::get_attempt_count(
$currentUserId,
$exerciseId,
$learnpath_id,
$learnpath_item_id,
$learnpath_item_view_id
);
$advanceCourseMessage = $objExercise->advancedCourseList(api_get_user_id(), api_get_session_id(), $exerciseStatInfo);
$advanceCourseMessage = $objExercise->advancedCourseList(api_get_user_id(), api_get_session_id());
if (null != $advanceCourseMessage) {
Display::addFlash(
Display::return_message($advanceCourseMessage, 'info', false)
);
}
$remedialMessage = null;
if ($attempt_count >= $objExercise->selectAttempts() || $objExercise->isBlockedByPercentage($exercise_stat_info)) {
$remedialMessage = $objExercise->remedialCourseList(api_get_user_id(), api_get_session_id(), $exerciseStatInfo);
}
$remedialMessage = $objExercise->remedialCourseList(api_get_user_id(), api_get_session_id());
if (null != $remedialMessage) {
Display::addFlash(
Display::return_message($remedialMessage, 'warning', false)

@ -199,30 +199,15 @@ if ($visible_return['value'] == false) {
}
$advanceMessage = $objExercise->advancedCourseList(api_get_user_id(), api_get_session_id());
if (!empty($advanceMessage)) {
$message = Display::return_message(
$message .= Display::return_message(
$advanceMessage,
'info',
false
);
}
$exerciseAttempts = $objExercise->selectAttempts();
$remedialMessage = null;
$exercise_stat_info = Event::getExerciseResultsByUser(
api_get_user_id(),
$objExercise->iId,
$objExercise->course_id,
api_get_session_id()
);
$attempt_count = count($exercise_stat_info) + 1;
if ($exerciseAttempts > 0) {
if ($attempt_count > $exerciseAttempts) {
$remedialMessage .= $objExercise->remedialCourseList(api_get_user_id(), api_get_session_id(), $exercise_stat_info);
}
if (null != $remedialMessage) {
Display::addFlash(
Display::return_message($remedialMessage, 'warning', false)
);
}
$remedialMessage = $objExercise->remedialCourseList(api_get_user_id(), api_get_session_id());
if (null != $remedialMessage) {
$message .= Display::return_message($remedialMessage, 'warning', false);
}
if (!api_is_allowed_to_session_edit()) {

Loading…
Cancel
Save