Plugin: Remedial Courses: Allow subscription to remedial when result is 0 - refs BT#18165

pull/3859/head
Angel Fernando Quiroz Campos 5 years ago
parent f002248e34
commit 8532032ce8
  1. 98
      main/exercise/exercise.class.php

@ -11027,15 +11027,27 @@ class Exercise
$field = new ExtraField('exercise'); $field = new ExtraField('exercise');
$remedialField = $field->get_handler_field_info_by_field_variable('remedialcourselist'); $remedialField = $field->get_handler_field_info_by_field_variable('remedialcourselist');
if (false === $remedialField) { if (empty($remedialField)) {
return null; return null;
} }
$extraFieldValue = new ExtraFieldValue('exercise');
$remedialExcerciseField = $extraFieldValue->get_values_by_handler_and_field_variable(
$this->iId,
'remedialcourselist'
);
$remedialCourseIds = explode(';', $remedialExcerciseField['value']);
if (empty($remedialExcerciseField['value']) || count($remedialCourseIds) == 0) {
return null;
}
$questionExcluded = [ $questionExcluded = [
FREE_ANSWER, FREE_ANSWER,
ORAL_EXPRESSION, ORAL_EXPRESSION,
ANNOTATION, ANNOTATION,
]; ];
$extraMessage = null;
if (count($attemp) != 0) { if (count($attemp) != 0) {
$exercise_stat_info = $attemp; $exercise_stat_info = $attemp;
} else { } else {
@ -11087,7 +11099,7 @@ class Exercise
if (isset($bestAttempt['exe_result'])) { if (isset($bestAttempt['exe_result'])) {
$bestAttempt['exe_result'] = (int) $bestAttempt['exe_result']; $bestAttempt['exe_result'] = (int) $bestAttempt['exe_result'];
$canRemedial = $this->isBlockedByPercentage($bestAttempt); $canRemedial = $this->isBlockedByPercentage($bestAttempt);
if ($bestAttempt['exe_result'] != 0 && false == $canRemedial) { if (false == $canRemedial) {
$pass = ExerciseLib::isPassPercentageAttemptPassed( $pass = ExerciseLib::isPassPercentageAttemptPassed(
$this, $this,
$bestAttempt['exe_result'], $bestAttempt['exe_result'],
@ -11099,62 +11111,52 @@ class Exercise
} }
} }
} }
$extraFieldValue = new ExtraFieldValue('exercise');
$remedialExcerciseField = $extraFieldValue->get_values_by_handler_and_field_variable(
$this->iId,
'remedialcourselist'
);
// Remedial course // Remedial course
if ($canRemedial) { if (!$canRemedial) {
$coursesIds = explode(';', $remedialExcerciseField['value']); return null;
if ('' == $remedialExcerciseField['value'] || count($coursesIds) == 0) { }
return null;
} $courses = [];
$courses = []; $isInASession = !empty($sessionId);
$isInASession = (0 == $sessionId) ? false : true; foreach ($remedialCourseIds as $course) {
foreach ($coursesIds as $course) { $courseData = api_get_course_info_by_id($course);
$courseData = api_get_course_info_by_id($course); if (!empty($courseData) && isset($courseData['real_id'])) {
if (!empty($courseData) && isset($courseData['real_id'])) { if ($isInASession) {
if ($isInASession) { $courseExistsInSession = SessionManager::sessionHasCourse($sessionId, $courseData['code']);
$courseExistsInSession = SessionManager::sessionHasCourse($sessionId, $courseData['code']); if ($courseExistsInSession) {
if ($courseExistsInSession) { SessionManager::subscribe_users_to_session_course(
SessionManager::subscribe_users_to_session_course( [$userId],
[$userId], $sessionId,
$sessionId, $courseData['code']
$courseData['code'] );
); $courses[] = $courseData['title'];
$courses[] = $courseData['title']; }
} } else {
} else { $isSubscribed = CourseManager::is_user_subscribed_in_course(
$isSubscribed = CourseManager::is_user_subscribed_in_course( $userId,
$courseData['code']
);
if (!$isSubscribed) {
CourseManager::subscribeUser(
$userId, $userId,
$courseData['code'], $courseData['code'],
$isInASession, STUDENT
$sessionId
); );
if (!$isSubscribed) { $courses[] = $courseData['title'];
CourseManager::subscribeUser(
$userId,
$courseData['code'],
STUDENT,
$sessionId
);
$courses[] = $courseData['title'];
}
} }
} }
} }
}
if (0 != count($courses)) { if (0 != count($courses)) {
$extraMessage = sprintf( return sprintf(
get_plugin_lang('SubscriptionToXRemedialCourses', RemedialCoursePlugin::class), get_plugin_lang('SubscriptionToXRemedialCourses', RemedialCoursePlugin::class),
implode(' - ', $courses) implode(' - ', $courses)
); );
}
} }
return $extraMessage; return null;
} }
/** /**

Loading…
Cancel
Save