/** * Create choices * * @access protected * */ protected function createChoices() { $order = 1; $ib = $this->assessmentItem->getElementsByTagName("itemBody")->item(0); $ci = $ib->getElementsByTagName("choiceInteraction")->item(0); foreach ($ci->getElementsByTagName("simpleChoice") as $simpleChoice) { $choice = new Choice(); if ($simpleChoice->hasAttribute("fixed") && $simpleChoice->getAttribute("fixed") == 'true') { $choice->setPositionForce(true); } $feedback = $simpleChoice->getElementsByTagName("feedbackInline"); if ($feedback->item(0)) { $choice->setFeedback($feedback->item(0)->nodeValue); $simpleChoice->removeChild($feedback->item(0)); } $choice->setLabel($this->choiceValue($simpleChoice)); $choice->setOrdre($order); $choice->setWeight($this->getWeightChoice($simpleChoice->getAttribute("identifier"))); $choice->setRightResponse($this->getRightResponse($simpleChoice->getAttribute("identifier"))); $choice->setInteractionQCM($this->interactionQCM); $this->om->persist($choice); $order++; } $this->om->flush(); }
/** * {@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); }
/** * Create choices. */ protected function createChoices() { $order = 1; $ib = $this->assessmentItem->getElementsByTagName('itemBody')->item(0); $ci = $ib->getElementsByTagName('choiceInteraction')->item(0); foreach ($ci->getElementsByTagName('simpleChoice') as $simpleChoice) { $choice = new Choice(); if ($simpleChoice->hasAttribute('fixed') && $simpleChoice->getAttribute('fixed') === 'true') { $choice->setPositionForce(true); } $feedback = $simpleChoice->getElementsByTagName('feedbackInline'); if ($feedback->item(0)) { $feedbackVal = $this->domElementToString($feedback->item(0)); $feedbackVal = html_entity_decode($feedbackVal); $choice->setFeedback($feedbackVal); $simpleChoice->removeChild($feedback->item(0)); } $choice->setLabel($this->choiceValue($simpleChoice)); $choice->setOrdre($order); $choice->setWeight($this->getWeightChoice($simpleChoice->getAttribute('identifier'))); $choice->setRightResponse($this->getRightResponse($simpleChoice->getAttribute('identifier'))); $choice->setInteractionQCM($this->interactionQCM); $this->om->persist($choice); ++$order; } $this->om->flush(); }