You are here

function Quiz::copyFromRevision in Quiz 8.5

Same name and namespace in other branches
  1. 8.6 src/Entity/Quiz.php \Drupal\quiz\Entity\Quiz::copyFromRevision()
  2. 6.x src/Entity/Quiz.php \Drupal\quiz\Entity\Quiz::copyFromRevision()

Copy questions to a new quiz revision.

Parameters

Quiz $old_quiz: The old quiz revision.

File

src/Entity/Quiz.php, line 804

Class

Quiz
Defines the Quiz entity class.

Namespace

Drupal\quiz\Entity

Code

function copyFromRevision(Quiz $old_quiz) {
  $quiz_questions = \Drupal::entityTypeManager()
    ->getStorage('quiz_question_relationship')
    ->loadByProperties([
    'quiz_vid' => $old_quiz
      ->getRevisionId(),
  ]);
  foreach ($quiz_questions as $quiz_question) {
    $new_question = $quiz_question
      ->createDuplicate();
    $new_question
      ->set('quiz_vid', $this
      ->getRevisionId());
    $new_question
      ->set('quiz_id', $this
      ->id());
    $old_id = $quiz_question
      ->id();
    $new_question
      ->save();
    $new_questions[$old_id] = $new_question;
  }
  foreach ($new_questions as $old_id => $quiz_question) {
    if (!$quiz_question
      ->get('qqr_pid')
      ->isEmpty()) {
      $quiz_question
        ->set('qqr_pid', $new_questions[$quiz_question
        ->get('qqr_pid')
        ->getString()]
        ->id());
      $quiz_question
        ->save();
    }
  }
}