function QuizResult::finalize in Quiz 8.6
Same name and namespace in other branches
- 8.5 src/Entity/QuizResult.php \Drupal\quiz\Entity\QuizResult::finalize()
- 6.x src/Entity/QuizResult.php \Drupal\quiz\Entity\QuizResult::finalize()
Score a quiz result.
File
- src/
Entity/ QuizResult.php, line 436
Class
- QuizResult
- Defines the Quiz entity class.
Namespace
Drupal\quiz\EntityCode
function finalize() {
$questions = $this
->getLayout();
// Mark all missing answers as blank. This is essential here for when we may
// have pages of unanswered questions. Also kills a lot of the skip code that
// was necessary before.
foreach ($questions as $qinfo) {
// If the result answer has not been marked as skipped and it hasn't been
// answered.
if (empty($qinfo->is_skipped) && empty($qinfo->answer_timestamp)) {
$qinfo->is_skipped = 1;
$qinfo
->save();
}
}
$score = $this
->score();
if (!isset($score['percentage_score'])) {
$score['percentage_score'] = 0;
}
// @todo Could be removed if we implement any "released" functionality.
$this
->set('released', 1);
$this
->set('is_evaluated', $score['is_evaluated']);
$this
->set('score', $score['percentage_score']);
$this
->set('time_end', \Drupal::time()
->getRequestTime());
$this
->save();
return $this;
}