/** * Update draft status, touch and change duration. * * @param \_OurBrand_\Quiz\Domain\Model\Quiz $quiz * @param boolean $draft */ public function updateQuiz($quiz, $draft) { $quiz->touch(); $quiz->calculateDuration(); $quiz->setIsDraft($draft); if ($this->request->hasArgument('category')) { $category = $this->persistenceManager->getObjectByIdentifier($this->request->getArgument('category'), '\\_OurBrand_\\Quiz\\Domain\\Model\\Category'); $quiz->setCategory($category); } if ($draft == FALSE) { $this->quizService->makeSnapshotAndPersist($quiz); } $this->quizRepository->update($quiz); }
/** * @param \_OurBrand_\Quiz\Domain\Model\Exercise $exercise * @return void */ public function deleteAction($exercise) { if (!$this->accessHelper->canUserEditQuiz($this->currentUser, $exercise->getQuiz())) { $this->throwStatus(403); } $number = $exercise->getNumber(); $quiz = $exercise->getQuiz(); $prevExercise = null; $quiz->removeExercise($exercise); $quiz->touch(); if ($quiz->getExercises()->count() > 0) { $prevExercise = $quiz->getExerciseByNumber($number > 0 ? $number - 1 : 0); } $this->quizRepository->update($quiz); $this->persistenceManager->persistAll(); if ($prevExercise) { $this->redirect('edit', 'exercise', null, array('exercise' => $prevExercise)); } else { $this->redirect('edit', 'quiz', null, array('quiz' => $quiz)); } }
/** * Updates Quiz before updating Exercise. This function is needed when user saves Exercise for Portal * @param \_OurBrand_\Quiz\Domain\Model\Quiz $quiz * @param array $quizArguments */ public function updateQuizBeforeUpdatingExercise($quiz, $quizArguments) { $quizArguments['subject'] = $this->subjectRepository->findByIdentifier($quizArguments['subject']); $quiz->setPropertiesForPortalQuizWhenEditsTheExercise($quizArguments); $this->quizRepository->update($quiz); }