diff --git a/components/ILIAS/TestQuestionPool/classes/class.assFormulaQuestion.php b/components/ILIAS/TestQuestionPool/classes/class.assFormulaQuestion.php index a7384d520908..940dec05fdfb 100755 --- a/components/ILIAS/TestQuestionPool/classes/class.assFormulaQuestion.php +++ b/components/ILIAS/TestQuestionPool/classes/class.assFormulaQuestion.php @@ -834,8 +834,7 @@ public function calculateReachedPoints( $this->getVariables(), $this->getResults(), $user_solution[$result->getResult()]['value'] ?? '', - $user_solution[$result->getResult()]['unit'] ?? null, - $this->unitrepository->getUnits() + $user_solution[$result->getResult()]['unit'] ?? null ); } @@ -849,7 +848,7 @@ public function calculateReachedPointsFromPreviewSession(ilAssQuestionPreviewSes $points = 0; foreach ($this->getResults() as $result) { $result_unit = "{$result->getResult()}_unit"; - $unit_id = isset($user_solution[$result_unit]) && is_numeric($user_solution[$result_unit]) + $answer_unit_id = isset($user_solution[$result_unit]) && is_numeric($user_solution[$result_unit]) ? (int) $user_solution[$result_unit] : null; @@ -857,8 +856,7 @@ public function calculateReachedPointsFromPreviewSession(ilAssQuestionPreviewSes $this->getVariables(), $this->getResults(), $user_solution[$result->getResult()] ?? '', - $unit_id !== null ? $this->unitrepository->getUnit($unit_id) : null, - $this->unitrepository->getUnits() + $answer_unit_id !== null ? $this->unitrepository->getUnit($answer_unit_id) : null ); } return $this->ensureNonNegativePoints($points); diff --git a/components/ILIAS/TestQuestionPool/classes/class.assFormulaQuestionResult.php b/components/ILIAS/TestQuestionPool/classes/class.assFormulaQuestionResult.php index d1bb686d78a1..c7ed5c55d085 100755 --- a/components/ILIAS/TestQuestionPool/classes/class.assFormulaQuestionResult.php +++ b/components/ILIAS/TestQuestionPool/classes/class.assFormulaQuestionResult.php @@ -411,15 +411,11 @@ private function checkSign(float $v1, float $v2): bool return ($v1 >= 0.0 && $v2 >= 0.0) || ($v1 <= 0.0 && $v2 <= 0.0); } - /** - * @param assFormulaQuestionUnit[] $units - */ public function getReachedPoints( array $variables, array $results, string $answer_value, - ?assFormulaQuestionUnit $answer_unit, - array $units + ?assFormulaQuestionUnit $answer_unit ): float { if ($this->getRatingSimple()) { return $this->isCorrect($variables, $results, $answer_value, $answer_unit) @@ -431,16 +427,12 @@ public function getReachedPoints( $float_value = $this->transformAnswerValueAccordingToType($answer_value, $answer_unit); $points = 0.0; - if ($answer_unit instanceof assFormulaQuestionUnit && $answer_unit instanceof assFormulaQuestionUnit) { - $base1 = $units[$answer_unit->getBaseUnit()] ?? null; - $base2 = $units[$answer_unit->getBaseUnit()] ?? null; - if ( - $base1 instanceof assFormulaQuestionUnit - && $base2 instanceof assFormulaQuestionUnit - && $base1->getId() === $base2->getId() - ) { - $points += ilMath::_mul($this->getPoints(), ilMath::_div($this->getRatingUnit(), 100)); - } + if ( + $this->unit instanceof assFormulaQuestionUnit + && $answer_unit instanceof assFormulaQuestionUnit + && $this->unit->getBaseUnit() === $answer_unit->getBaseUnit() + ) { + $points += ilMath::_mul($this->getPoints(), ilMath::_div($this->getRatingUnit(), 100)); } if ($float_value === null) { diff --git a/components/ILIAS/TestQuestionPool/classes/questions/LogicalAnswerCompare/ilAssLacCompositeEvaluator.php b/components/ILIAS/TestQuestionPool/classes/questions/LogicalAnswerCompare/ilAssLacCompositeEvaluator.php index 6c37c3929dc8..1b997a1070a3 100755 --- a/components/ILIAS/TestQuestionPool/classes/questions/LogicalAnswerCompare/ilAssLacCompositeEvaluator.php +++ b/components/ILIAS/TestQuestionPool/classes/questions/LogicalAnswerCompare/ilAssLacCompositeEvaluator.php @@ -181,8 +181,7 @@ private function evaluateSubTree(ilAssLacAbstractComposite $composite): bool $question->getVariables(), $question->getResults(), $result["value"] ?? "", - $key, - $unit_repository->getUnits() + $key ); $percentage = 0;