You are here

function QuizResultViewBuilder::getSummaryText in Quiz 6.x

Same name and namespace in other branches
  1. 8.6 src/View/QuizResultViewBuilder.php \Drupal\quiz\View\QuizResultViewBuilder::getSummaryText()
  2. 8.5 src/View/QuizResultViewBuilder.php \Drupal\quiz\View\QuizResultViewBuilder::getSummaryText()

Get the summary message for a completed quiz result.

Summary is determined by the pass/fail configurations on the quiz.

Parameters

QuizResult $quiz_result: The quiz result.

Return value

Render array.

1 call to QuizResultViewBuilder::getSummaryText()
QuizResultViewBuilder::alterBuild in src/View/QuizResultViewBuilder.php
Specific per-entity building.

File

src/View/QuizResultViewBuilder.php, line 123

Class

QuizResultViewBuilder

Namespace

Drupal\quiz\View

Code

function getSummaryText(QuizResult $quiz_result) {
  $config = Drupal::config('quiz.settings');
  $quiz = Drupal::entityTypeManager()
    ->getStorage('quiz')
    ->loadRevision($quiz_result
    ->get('vid')
    ->getString());
  $token = Drupal::token();
  $account = $quiz_result
    ->get('uid')
    ->referencedEntities()[0];
  $token_types = [
    'global' => NULL,
    'node' => $quiz,
    'user' => $account,
    'quiz_result' => $quiz_result,
  ];
  $summary = [];
  if ($paragraph = $this
    ->getRangeFeedback($quiz, $quiz_result
    ->get('score')
    ->getString())) {

    // Found quiz feedback based on a grade range.
    $token = Drupal::token();
    $paragraph_text = $paragraph
      ->get('quiz_feedback')
      ->get(0)
      ->getValue();
    $summary['result'] = check_markup($token
      ->replace($paragraph_text['value'], $token_types), $paragraph_text['format']);
  }
  $pass_text = $quiz
    ->get('summary_pass')
    ->getValue()[0];
  $default_text = $quiz
    ->get('summary_default')
    ->getValue()[0];
  if ($config
    ->get('use_passfail', 1) && $quiz
    ->get('pass_rate')
    ->getString() > 0) {
    if ($quiz_result
      ->get('score')
      ->getString() >= $quiz
      ->get('pass_rate')
      ->getString()) {

      // Pass/fail is enabled and user passed.
      $summary['passfail'] = check_markup($token
        ->replace($pass_text['value'], $token_types), $pass_text['format']);
    }
    else {

      // User failed.
      $summary['passfail'] = check_markup($token
        ->replace($default_text['value'], $token_types), $default_text['format']);
    }
  }
  else {

    // Pass/fail is not being used so display the default.
    $summary['passfail'] = check_markup($token
      ->replace($default_text['value'], $token_types), $default_text['format']);
  }
  return $summary;
}