62 if (count($composite->nodes) > 0) {
63 $composite->nodes[0] = $this->
evaluate($composite->nodes[0]);
64 $composite->nodes[1] = $this->
evaluate($composite->nodes[1]);
65 $composite = $this->evaluateSubTree($composite);
81 $question = $this->object_loader->getQuestion($composite->nodes[0]->getQuestionIndex());
82 $rightNode = $composite->nodes[1];
86 $solutions = $question->getUserQuestionResult($this->activeId, $this->pass);
94 $result = $solutions->getSolutionForKey($index);
95 $gap = $question->getAvailableAnswerOptions($index - 1);
98 if ($gap->getType() == 1 && is_array($result) && isset($result[
'value'])) {
99 $answer = $gap->getItem($result[
'value'] - 1);
101 $solutions->removeByKey($index);
102 $solutions->addKeyValue($index, $answer->getAnswertext());
111 $answers = $gap->getItems($question->getShuffler());
113 foreach ($answers as $answer) {
114 if ($max_points < $answer->getPoints()) {
115 $max_points = $answer->getPoints();
120 $reached_points =
null;
122 switch ($gap->getType()) {
124 for ($order = 0; $order < $gap->getItemCount(); $order++) {
125 $answer = $gap->getItem($order);
126 $item_points = $question->getTextgapPoints($answer->getAnswertext(), $result[
'value'], $answer->getPoints());
127 if ($item_points > $reached_points) {
128 $reached_points = $item_points;
134 for ($order = 0; $order < $gap->getItemCount(); $order++) {
135 $answer = $gap->getItem($order);
136 $item_points = $question->getNumericgapPoints($answer->getAnswertext(), $result[
"value"], $answer->getPoints(), $answer->getLowerBound(), $answer->getUpperBound());
137 if ($item_points > $reached_points) {
138 $reached_points = $item_points;
144 if ($result[
'value'] !=
null) {
145 $answer = $gap->getItem($result[
'value'] - 1);
146 $reached_points = $answer->getPoints();
152 if ($max_points != 0 && $reached_points !==
null) {
153 $percentage = (
int) (($reached_points / $max_points) * 100);
155 $solutions->setReachedPercentage($percentage);
165 $result = $solutions->getSolutionForKey($index);
166 $answer = $question->getAvailableAnswerOptions($index - 1);
168 $unit_repository = $question->getUnitrepository();
169 $unit = $solutions->getSolutionForKey($index .
"_unit");
170 $key = isset($unit[
"value"])
171 ? $unit_repository->getUnit((
int) $unit[
"value"])
174 $max_points = $answer->getPoints();
180 $points = $answer->getReachedPoints(
181 $question->getVariables(),
182 $question->getResults(),
183 $result[
"value"] ??
"",
185 $unit_repository->getUnits()
189 if ($max_points != 0) {
190 $percentage = (
int) (($points / $max_points) * 100);
192 $solutions->setReachedPercentage($percentage);
195 $result = $rightNode->checkResult($solutions, $composite->getPattern(), $index);
197 switch ($composite->getPattern()) {
199 $result = $composite->nodes[0] && $composite->nodes[1];
202 $result = $composite->nodes[0] || $composite->nodes[1];
209 if ($composite->isNegated()) {
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct($object_loader, $activeId, $pass)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
evaluate(ilAssLacAbstractComposite $composite)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
isInstanceOfAnswerIndexProvidingExpression(ilAssLacAbstractComposite $composite)