You are here

protected function QuizViewBuilder::buildStatsComponent in Quiz 6.x

1 call to QuizViewBuilder::buildStatsComponent()
QuizViewBuilder::buildComponents in src/View/QuizViewBuilder.php
Builds the component fields and properties of a set of entities.

File

src/View/QuizViewBuilder.php, line 32

Class

QuizViewBuilder

Namespace

Drupal\quiz\View

Code

protected function buildStatsComponent(Quiz $quiz) : array {
  $stats = [
    [
      [
        'header' => TRUE,
        'width' => '25%',
        'data' => $this
          ->t('Questions'),
      ],
      $quiz
        ->getNumberOfQuestions(),
    ],
  ];
  if ($quiz
    ->get('show_attempt_stats')->value) {
    $takes = $quiz
      ->get('takes')->value == 0 ? $this
      ->t('Unlimited') : $quiz
      ->get('takes')->value;
    $stats[] = [
      [
        'header' => TRUE,
        'data' => $this
          ->t('Attempts allowed'),
      ],
      $takes,
    ];
  }
  if ($quiz
    ->get('quiz_date')
    ->isEmpty()) {
    $stats[] = [
      [
        'header' => TRUE,
        'data' => $this
          ->t('Available'),
      ],
      $this
        ->t('Always'),
    ];
  }
  else {
    $stats[] = [
      [
        'header' => TRUE,
        'data' => $this
          ->t('Opens'),
      ],
      $quiz
        ->get('quiz_date')->value,
    ];
    $stats[] = [
      [
        'header' => TRUE,
        'data' => $this
          ->t('Closes'),
      ],
      $quiz
        ->get('quiz_date')->end_value,
    ];
  }
  if (!$quiz
    ->get('pass_rate')
    ->isEmpty()) {
    $stats[] = [
      [
        'header' => TRUE,
        'data' => $this
          ->t('Pass rate'),
      ],
      $quiz
        ->get('pass_rate')->value . ' %',
    ];
  }
  if (!$quiz
    ->get('time_limit')
    ->isEmpty()) {
    $stats[] = [
      [
        'header' => TRUE,
        'data' => $this
          ->t('Time limit'),
      ],
      _quiz_format_duration($quiz
        ->get('time_limit')->value),
    ];
  }
  $stats[] = [
    [
      'header' => TRUE,
      'data' => $this
        ->t('Backwards navigation'),
    ],
    $quiz
      ->get('backwards_navigation') ? $this
      ->t('Allowed') : $this
      ->t('Forbidden'),
  ];
  return [
    '#id' => 'quiz-view-table',
    '#theme' => 'table__quiz_stats',
    '#rows' => $stats,
  ];
}