/**
  * {@inheritdoc}
  */
 public function persistInteractionDetails(Question $question, \stdClass $importData)
 {
     $interaction = new InteractionQCM();
     if ($importData->score->type === 'sum') {
         $interaction->setWeightResponse(true);
         //weighted true
     } elseif ($importData->score->type === 'fixed') {
         $interaction->setWeightResponse(false);
         //no weighted false
         $interaction->setScoreRightResponse($importData->score->success);
         $interaction->setScoreFalseResponse($importData->score->failure);
     }
     for ($i = 0, $max = count($importData->choices); $i < $max; ++$i) {
         // temporary limitation
         if ($importData->choices[$i]->type !== 'text/html') {
             throw new \Exception("Import not implemented for MIME type {$importData->choices[$i]->type}");
         }
         $choice = new Choice();
         $choice->setLabel($importData->choices[$i]->data);
         $choice->setOrdre($i);
         foreach ($importData->solutions as $solution) {
             if ($solution->id === $importData->choices[$i]->id) {
                 $choice->setWeight($solution->score);
                 if (0 < $solution->score) {
                     $choice->setRightResponse(true);
                 }
                 if (isset($solution->feedback)) {
                     $choice->setFeedback($solution->feedback);
                 }
             }
         }
         $choice->setInteractionQCM($interaction);
         $interaction->addChoice($choice);
         $this->om->persist($choice);
     }
     $subTypeCode = $importData->multiple ? 1 : 2;
     $subType = $this->om->getRepository('UJMExoBundle:TypeQCM')->findOneByCode($subTypeCode);
     $interaction->setTypeQCM($subType);
     $interaction->setShuffle($importData->random);
     $interaction->setQuestion($question);
     $this->om->persist($interaction);
 }
Exemple #2
0
 /**
  * @param string   $title
  * @param Choice[] $choices
  * @param string   $description
  *
  * @return Question
  */
 public function qcmQuestion($title, array $choices = [], $description = '')
 {
     $question = new Question();
     $question->setTitle($title);
     $question->setInvite('Invite...');
     $question->setDescription($description);
     if (!$this->multipleChoiceType) {
         $this->multipleChoiceType = $this->om->getRepository('UJMExoBundle:TypeQCM')->findOneByValue('Multiple response');
     }
     $interactionQcm = new InteractionQCM();
     $interactionQcm->setQuestion($question);
     $interactionQcm->setTypeQCM($this->multipleChoiceType);
     $interactionQcm->setWeightResponse(true);
     for ($i = 0, $max = count($choices); $i < $max; ++$i) {
         $choices[$i]->setOrdre($i);
         $interactionQcm->addChoice($choices[$i]);
     }
     $this->om->persist($interactionQcm);
     $this->om->persist($question);
     return $question;
 }