Beispiel #1
0
 /**
  * @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));
 }
Beispiel #4
0
 /**
  * @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());
 }
Beispiel #5
0
 /**
  * @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;
 }
Beispiel #6
0
 /**
  * @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));
 }
Beispiel #7
0
 /**
  * @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;
 }