From af56798dedd74bc12b06377b026fcd959368bb7d Mon Sep 17 00:00:00 2001 From: Angel Fernando Quiroz Campos Date: Wed, 14 Apr 2021 19:14:13 -0500 Subject: [PATCH] Plugin: Remedial Courses: Fix subscription to remedial courses after saving result - refs BT#18165 --- main/exercise/exercise.class.php | 47 +++++++++++++------------------ main/exercise/exercise_report.php | 2 +- main/exercise/exercise_result.php | 23 ++++----------- main/exercise/overview.php | 23 +++------------ 4 files changed, 29 insertions(+), 66 deletions(-) diff --git a/main/exercise/exercise.class.php b/main/exercise/exercise.class.php index d95a7063c6..1a1550d30f 100755 --- a/main/exercise/exercise.class.php +++ b/main/exercise/exercise.class.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, diff --git a/main/exercise/exercise_report.php b/main/exercise/exercise_report.php index 04e834e955..1acde92e37 100755 --- a/main/exercise/exercise_report.php +++ b/main/exercise/exercise_report.php @@ -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) diff --git a/main/exercise/exercise_result.php b/main/exercise/exercise_result.php index 66e58f4bf6..3c27f235e7 100755 --- a/main/exercise/exercise_result.php +++ b/main/exercise/exercise_result.php @@ -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) diff --git a/main/exercise/overview.php b/main/exercise/overview.php index cbc724ac65..8347d87d8b 100755 --- a/main/exercise/overview.php +++ b/main/exercise/overview.php @@ -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()) {