/** * {@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); }
/** * @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; }