You are here

function QuizQuestionAnsweringForm::submitBack in Quiz 6.x

Same name and namespace in other branches
  1. 8.6 src/Form/QuizQuestionAnsweringForm.php \Drupal\quiz\Form\QuizQuestionAnsweringForm::submitBack()
  2. 8.5 src/Form/QuizQuestionAnsweringForm.php \Drupal\quiz\Form\QuizQuestionAnsweringForm::submitBack()

Submit handler for "back".

File

src/Form/QuizQuestionAnsweringForm.php, line 371

Class

QuizQuestionAnsweringForm
The form used to deliver questions to users and capture their responses.

Namespace

Drupal\quiz\Form

Code

function submitBack(&$form, FormStateInterface $form_state) {

  // Back a question.

  /* @var $quiz_session \Drupal\quiz\Services\QuizSessionInterface */
  $quiz_session = \Drupal::service('quiz.session');
  $quiz = $form['#quiz'];
  $quiz_result = $quiz_session
    ->getResult($quiz);
  $quiz_result
    ->setQuestion($quiz_session
    ->getCurrentQuestion($quiz) - 1);

  // Handle going back to a question which is in a previous page.
  $layout = $quiz_result
    ->getLayout();
  $question = $layout[$quiz_session
    ->getCurrentQuestion($quiz)];
  if (!empty($question->qqr_pid)) {
    foreach ($layout as $question2) {
      if ($question2->qqr_id == $question->qqr_pid) {
        $quiz_result
          ->setQuestion($question2
          ->get('number')->value);
      }
    }
  }
  $form_state
    ->setRedirect('quiz.question.take', [
    'quiz' => $quiz
      ->id(),
    'question_number' => $quiz_session
      ->getCurrentQuestion($quiz),
  ]);
}