/** * @param \_OurBrand_\My\Domain\Model\User $user * @param \_OurBrand_\Quiz\Domain\Model\Quiz $quiz * * @return bool */ public function canUserEditQuiz(\_OurBrand_\My\Domain\Model\User $user, \_OurBrand_\Quiz\Domain\Model\Quiz $quiz) { if ($user->isWorker()) { return true; } return $user->isInstructor() && $user->getIdentifier() == $quiz->getCreator(); }
/** * Generate testData * * This command inserts all the required data to start testing the student view of the Dictation exercise * * @return void */ public function generateInsertCommand() { $quiz = new Quiz(); $quiz->setTitle('Dictation Insert'); $quiz->setAuthor('Test Instructor'); $quiz->setCreator('instructor'); $quiz->setIsDraft(false); $quiz->setType(0); $exercise = new InsertDictationExercise(); $exercise->setTitle('Spelling and Grammer: Insert Dictation'); $exercise->setDescription('Description'); $snippet = new DictationSnippet(); $snippet->setText('<span class="textShow">This is a very</span> <span class="textmark">marvellous</span> horse'); $markedText = new MarkedText(); $markedText->setText('marvellous'); $snippet->addMarkedText($markedText); $exercise->addSnippet($snippet); $snippet = new DictationSnippet(); $snippet->setText('<span class="textShow">This is another</span> <span class="textmark">sentence</span> horse'); $markedText = new MarkedText(); $markedText->setText('sentence'); $snippet->addMarkedText($markedText); $exercise->addSnippet($snippet); $snippet = new DictationSnippet(); $snippet->setText('<span class="textmark">Newest</span> <span class="textShow">more</span><span class="textmark">text</span>'); $markedText = new MarkedText(); $markedText->setText('Newest'); $snippet->addMarkedText($markedText); $markedText = new MarkedText(); $markedText->setText('text'); $snippet->addMarkedText($markedText); $exercise->addSnippet($snippet); $quiz->addExercise($exercise); $this->quizRepository->add($quiz); //Create QuizSession $quizSession = new QuizSession(); $quizSession->setQuiz($quiz); $quizSession->setInstructor('instructor'); $quizSession->setStudentCanSeeSummaryAndReviewExercises(1); $quizSession->setShowGradeOnSummary(1); $this->quizSessionRepository->add($quizSession); //Create studentQuizSession $studentQuizSession = new StudentQuizSession(); $studentQuizSession->setQuizSession($quizSession); $studentQuizSession->setStudent('student'); $this->studentQuizSessionRepository->add($studentQuizSession); }
/** * 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)); }
/** * @test * * $this->getMock('\_OurBrand_\Quiz\Domain\Model\') */ public function testGetters() { $level = $this->getMock('\\_OurBrand_\\Quiz\\Domain\\Model\\TeamLevel', array(), array('Test teamlevel', 1)); $imageResource = $this->getMock('\\_OurBrand_\\Quiz\\Domain\\Model\\ImageResource'); $lastEdited = new \DateTime(); $quiz = new \_OurBrand_\Quiz\Domain\Model\Quiz(); $quiz->setType(1); $quiz->setDuration(300); $quiz->setTitle('Quiz Title'); $quiz->setWasCopyOf('Original Title'); $quiz->setAuthor('Tester'); $quiz->setBannerImage($imageResource); $quiz->setIntroduction('Introduction test'); $quiz->setDescription('Description test'); $quiz->setCreator('Creator'); $quiz->setIsLanguage(1); $quiz->setLastEdited($lastEdited); $quiz->setSharing(1); $quiz->setIsDraft(1); $quiz->setIsDeleted(0); $this->assertEquals(1, $quiz->getType()); $this->assertEquals(300, $quiz->getDuration()); $this->assertEquals('Quiz Title', $quiz->getTitle()); $this->assertEquals('Original Title', $quiz->getWasCopyOf()); $this->assertEquals('Tester', $quiz->getAuthor()); $this->assertEquals($imageResource, $quiz->getBannerImage()); $this->assertEquals('Introduction test', $quiz->getIntroduction()); $this->assertEquals('Description test', $quiz->getDescription()); $this->assertEquals('Creator', $quiz->getCreator()); $this->assertEquals(1, $quiz->getIsLanguage()); $this->assertEquals($lastEdited->getTimestamp(), $quiz->getLastEdited()->getTimestamp()); $this->assertEquals(1, $quiz->getSharing()); $this->assertEquals(1, $quiz->getIsDraft()); $this->assertEquals(0, $quiz->getIsDeleted()); }
/** * @param $numberOfExercises * * @return Quiz */ private function makeQuizWithExercises($numberOfExercises) { $quiz = new Quiz(); for ($i = 0; $i < $numberOfExercises; $i++) { $exercise = new Exercise(); $exercise->setTitle('Exercise: ' . $i); $quiz->addExercise($exercise); } return $quiz; }
/** * @param string $goto * @param \_OurBrand_\Quiz\Domain\Model\Quiz $quiz * @param \_OurBrand_\Quiz\Domain\Model\Exercise $exercise */ public function previewNavigateAction($goto, $quiz, $exercise = null) { if ($quiz->getExercises()->count() == 0 || $exercise == null) { $this->redirect('previewstart', 'quiz', null, array('quiz' => $quiz)); } if ($goto == "next" && !is_null($exercise)) { $exercise = $quiz->findNextExercise($exercise); } elseif ($goto == "prev" && !is_null($exercise)) { $exercise = $quiz->findPrevExercise($exercise); } elseif (is_numeric($goto)) { $exercises = $quiz->getExercises(); $exercise = $exercises[$goto]; } $this->redirect('preview', 'exercise', null, array('exercise' => $exercise)); }
/** * @param \_OurBrand_\Quiz\Domain\Model\Quiz $quiz * */ public function createAction($quiz = null) { if (!$quiz) { $quiz = new \_OurBrand_\Quiz\Domain\Model\Quiz(); } if ($this->request->hasArgument('quiztype')) { $quiz->setType((int) $this->request->getArgument('quiztype')); } if (!$this->accessHelper->canUserCreateQuiz($this->currentUser, $quiz->getType())) { $this->throwStatus(403); } $quiz->setCreator($this->currentUser->getIdentifier()); $quiz->setAuthor($this->currentUser->getName()); $quiz->setQuiz($this->currentUser->isworker()); $this->quizRepository->add($quiz); $this->persistenceManager->persistAll(); $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); }
/** * @param \_OurBrand_\Quiz\Domain\Model\Quiz $quiz * * @return array */ private function makeExportArrayFromQuiz($quiz) { $thumbnailMaxWidth = 200; $thumbnailMaxHeight = 200; $previewImage = $quiz->getBannerImage() ? $quiz->getBannerImage()->getThumbNail($thumbnailMaxWidth, $thumbnailMaxHeight)->getOriginalResource() : null; $outQuiz = array('__identifier' => $this->persistenceManager->getIdentifierByObject($quiz), 'title' => $quiz->getTitle(), 'bannerImage' => $this->resourcePublisher->getPersistentResourceWebUri($previewImage), 'subject' => $quiz->getSubject(), 'numberOfExercises' => $quiz->getExercises()->count()); return $outQuiz; }