/** * Add label * */ public function addLabel(\UJM\ExoBundle\Entity\Label $label) { $this->labels[] = $label; //le label est bien lié à l'entité interactionmatching, mais dans l'entité label il faut //aussi lié l'interactionmatching double travail avec les relations bidirectionnelles avec //lesquelles il faut bien faire attention à garder les données cohérentes dans un autre //script il faudra exécuter $interactionmatching->addLabel() qui garde la cohérence entre les //deux entités, il ne faudra pas exécuter $label->setInteractionMatching(), car lui ne garde //pas la cohérence $label->setInteractionMatching($this); }
/** * Create Labels in BDD. */ protected function createLabels() { $ordre = 0; $ib = $this->assessmentItem->getElementsByTagName('itemBody')->item(0); $mi = $ib->getElementsByTagName('matchInteraction')->item(0); $sms = $mi->getElementsByTagName('simpleMatchSet')->item(1); foreach ($sms->getElementsByTagName('simpleAssociableChoice') as $simpleLabel) { //create a new Label and set attributes $label = new Label(); $feedback = $simpleLabel->getElementsByTagName('feedbackInline'); if ($feedback->item(0)) { $feedbackVal = $this->domElementToString($feedback->item(0)); $feedbackVal = html_entity_decode($feedbackVal); $label->setFeedback($feedbackVal); $simpleLabel->removeChild($feedback->item(0)); } $label->setValue($this->value($simpleLabel)); $identifiant = $simpleLabel->getAttribute('identifier'); $label->setScoreRightResponse($this->notation($identifiant)); $label->setInteractionMatching($this->interactionMatching); $label->setOrdre($ordre); if ($simpleLabel->hasAttribute('fixed') && $simpleLabel->getAttribute('fixed') == 'true') { $label->setPositionForce(true); } else { $label->setPositionForce(false); } //recording in the DBB $this->om->persist($label); $this->associatedLabels[$identifiant] = $label; ++$ordre; } $this->om->flush(); }