@ -2451,7 +2451,7 @@ class learnpathItem
/** @var learnpathItem $itemToCheck */
/** @var learnpathItem $itemToCheck */
$itemToCheck = $items[$refs_list[$prereqs_string]];
$itemToCheck = $items[$refs_list[$prereqs_string]];
if ($itemToCheck->type == 'quiz') {
if ($itemToCheck->type === 'quiz') {
// 1. Checking the status in current items.
// 1. Checking the status in current items.
$status = $itemToCheck->get_status(true);
$status = $itemToCheck->get_status(true);
$returnstatus = $status == $this->possible_status[2] || $status == $this->possible_status[3];
$returnstatus = $status == $this->possible_status[2] || $status == $this->possible_status[3];
@ -2495,10 +2495,18 @@ class learnpathItem
LIMIT 0, 1';
LIMIT 0, 1';
$rs_quiz = Database::query($sql);
$rs_quiz = Database::query($sql);
if ($quiz = Database::fetch_array($rs_quiz)) {
if ($quiz = Database::fetch_array($rs_quiz)) {
$minScore = $items[$refs_list[$this->get_id(
/** @var learnpathItem $myItemToCheck */
)]]->getPrerequisiteMinScore();
$myItemToCheck = $items[$refs_list[$this->get_id()]];
$maxScore = $items[$refs_list[$this->get_id(
$minScore = $myItemToCheck->getPrerequisiteMinScore();
)]]->getPrerequisiteMaxScore();
$maxScore = $myItemToCheck->getPrerequisiteMaxScore();
if (empty($minScore)) {
// Try with mastery_score
$masteryScoreAsMin = $myItemToCheck->get_mastery_score();
if (!empty($masteryScoreAsMin)) {
$minScore = $masteryScoreAsMin;
}
}
if (isset($minScore) & & isset($minScore)) {
if (isset($minScore) & & isset($minScore)) {
// Taking min/max prerequisites values see BT#5776
// Taking min/max prerequisites values see BT#5776
@ -2544,19 +2552,29 @@ class learnpathItem
exe_exo_id = '.$items[$refs_list[$prereqs_string]]->path.' AND
exe_exo_id = '.$items[$refs_list[$prereqs_string]]->path.' AND
exe_user_id = '.$user_id.' AND
exe_user_id = '.$user_id.' AND
orig_lp_id = '.$this->lp_id.' AND
orig_lp_id = '.$this->lp_id.' AND
orig_lp_item_id = '.$prereqs_string.' ' ;
orig_lp_item_id = '.$prereqs_string;
$rs_quiz = Database::query($sql);
$rs_quiz = Database::query($sql);
if (Database::num_rows($rs_quiz) > 0) {
if (Database::num_rows($rs_quiz) > 0) {
while ($quiz = Database::fetch_array($rs_quiz)) {
while ($quiz = Database::fetch_array($rs_quiz)) {
$minScore = $items[$refs_list[$this->get_id(
/** @var learnpathItem $myItemToCheck */
)]]->getPrerequisiteMinScore();
$myItemToCheck = $items[$refs_list[$this->get_id()]];
$maxScore = $items[$refs_list[$this->get_id(
$minScore = $myItemToCheck->getPrerequisiteMinScore();
)]]->getPrerequisiteMaxScore();
$maxScore = $myItemToCheck->getPrerequisiteMaxScore();
if (empty($minScore)) {
// Try with mastery_score
$masteryScoreAsMin = $myItemToCheck->get_mastery_score();
if (!empty($masteryScoreAsMin)) {
$minScore = $masteryScoreAsMin;
}
}
if (isset($minScore) & & isset($minScore)) {
if (isset($minScore) & & isset($minScore)) {
// Taking min/max prerequisites values see BT#5776
// Taking min/max prerequisites values see BT#5776
if ($quiz['exe_result'] >= $minScore & & $quiz['exe_result'] < = $maxScore) {
if ($quiz['exe_result'] >= $minScore & &
$quiz['exe_result'] < = $maxScore
) {
$returnstatus = true;
$returnstatus = true;
break;
break;
} else {
} else {
@ -2574,9 +2592,7 @@ class learnpathItem
$returnstatus = true;
$returnstatus = true;
break;
break;
} else {
} else {
$this->prereq_alert = get_lang(
$this->prereq_alert = get_lang('LearnpathPrereqNotCompleted');
'LearnpathPrereqNotCompleted'
);
$returnstatus = false;
$returnstatus = false;
}
}
}
}