/** * Creates fake Quiz and exercise in it * @param string $exerciseName Exercise's class name */ public function createForPortalAction($exerciseName) { $quiz = new \_OurBrand_\Quiz\Domain\Model\Quiz(); if (!$this->accessHelper->canUserCreateQuiz($this->currentUser, $quiz->getType())) { $this->throwStatus(403); } $quiz->setCreator($this->currentUser->getIdentifier()); $quiz->setAuthor($this->currentUser->getName()); $quiz->setPropertiesForPortalQuizWhenCreatesTheQuiz(); $this->quizRepository->add($quiz); $exerciseType = null; $exerciseClassName = '\\_OurBrand_\\Quiz\\Domain\\Model\\Exercises\\' . $exerciseName; if (class_exists($exerciseClassName)) { $newExercise = $this->objectManager->get($exerciseClassName); } else { throw new \InvalidArgumentException('Model Class not defined: ' . $exerciseName); } $quiz->addExercise($newExercise); $quiz->touch(); $newExercise->setType($exerciseType); $newExercise->setTitle(''); $this->quizRepository->update($quiz); $this->persistenceManager->persistAll(); $this->redirect('editForPortal', 'exercise', null, array('exercise' => $newExercise)); }