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. 17
      main/exercise/exercise.class.php
  2. 2
      main/exercise/exercise_report.php
  3. 23
      main/exercise/exercise_result.php
  4. 21
      main/exercise/overview.php

@ -10852,7 +10852,7 @@ class Exercise
* @param int $sessionId * @param int $sessionId
* @param array $attemps * @param array $attemps
*/ */
public function advancedCourseList($userId = 0, $sessionId = 0, $attempt = []) public function advancedCourseList($userId = 0, $sessionId = 0)
{ {
$userId = (int) $userId; $userId = (int) $userId;
$sessionId = (int) $sessionId; $sessionId = (int) $sessionId;
@ -10877,18 +10877,12 @@ class Exercise
if (!isset($bestAttempt['exe_result'])) { if (!isset($bestAttempt['exe_result'])) {
// In the case that the result is 0, get_best_attempt_exercise_results_per_user does not return data, // 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 // for that this block is used
if (count($attempt) == 0) {
$exerciseStatInfo = Event::getExerciseResultsByUser( $exerciseStatInfo = Event::getExerciseResultsByUser(
$userId, $userId,
$this->id, $this->id,
$this->course_id, $this->course_id,
$sessionId $sessionId
); );
} else {
$exerciseStatInfo = $attempt;
}
unset($attempt);
$bestAttempt['exe_result'] = 0; $bestAttempt['exe_result'] = 0;
foreach ($exerciseStatInfo as $attempt) { foreach ($exerciseStatInfo as $attempt) {
if ($attempt['exe_result'] >= $bestAttempt['exe_result']) { if ($attempt['exe_result'] >= $bestAttempt['exe_result']) {
@ -11019,10 +11013,11 @@ class Exercise
* *
* @param int $userId * @param int $userId
* @param int $sessionId * @param int $sessionId
* @param array $attemps
* @param bool $review * @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; $userId = empty($userId) ? api_get_user_id() : (int) $userId;
$sessionId = (int) $sessionId; $sessionId = (int) $sessionId;
@ -11054,16 +11049,12 @@ class Exercise
ANNOTATION, ANNOTATION,
]; ];
if (count($attempt) != 0) {
$exercise_stat_info = $attempt;
} else {
$exercise_stat_info = Event::getExerciseResultsByUser( $exercise_stat_info = Event::getExerciseResultsByUser(
$userId, $userId,
$this->id, $this->id,
$this->course_id, $this->course_id,
$sessionId $sessionId
); );
}
$bestAttempt = Event::get_best_attempt_exercise_results_per_user( $bestAttempt = Event::get_best_attempt_exercise_results_per_user(
$userId, $userId,
$this->id, $this->id,

@ -266,7 +266,7 @@ if (isset($_REQUEST['comments']) &&
Database::query($sql); Database::query($sql);
// See BT#18165 // 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) { if (null != $remedialMessage) {
Display::addFlash( Display::addFlash(
Display::return_message($remedialMessage, 'warning', false) Display::return_message($remedialMessage, 'warning', false)

@ -270,29 +270,16 @@ ExerciseLib::sendNotification(
$hookQuizEnd = HookQuizEnd::create(); $hookQuizEnd = HookQuizEnd::create();
$hookQuizEnd->setEventData(['exe_id' => $exeId]); $hookQuizEnd->setEventData(['exe_id' => $exeId]);
$hookQuizEnd->notifyQuizEnd(); $hookQuizEnd->notifyQuizEnd();
$exerciseStatInfo = Event::getExerciseResultsByUser(
api_get_user_id(), $advanceCourseMessage = $objExercise->advancedCourseList(api_get_user_id(), api_get_session_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);
if (null != $advanceCourseMessage) { if (null != $advanceCourseMessage) {
Display::addFlash( Display::addFlash(
Display::return_message($advanceCourseMessage, 'info', false) 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());
$remedialMessage = $objExercise->remedialCourseList(api_get_user_id(), api_get_session_id(), $exerciseStatInfo);
}
if (null != $remedialMessage) { if (null != $remedialMessage) {
Display::addFlash( Display::addFlash(
Display::return_message($remedialMessage, 'warning', false) 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()); $advanceMessage = $objExercise->advancedCourseList(api_get_user_id(), api_get_session_id());
if (!empty($advanceMessage)) { if (!empty($advanceMessage)) {
$message = Display::return_message( $message .= Display::return_message(
$advanceMessage, $advanceMessage,
'info', 'info',
false false
); );
} }
$exerciseAttempts = $objExercise->selectAttempts(); $remedialMessage = $objExercise->remedialCourseList(api_get_user_id(), api_get_session_id());
$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) { if (null != $remedialMessage) {
Display::addFlash( $message .= Display::return_message($remedialMessage, 'warning', false);
Display::return_message($remedialMessage, 'warning', false)
);
}
} }
if (!api_is_allowed_to_session_edit()) { if (!api_is_allowed_to_session_edit()) {

Loading…
Cancel
Save