/**
  * Marshall a TestFeedbackRef object to its XML counterpart.
  *
  * @param \qtism\data\QtiComponent $component
  * @return \DOMElement
  */
 public function marshall(QtiComponent $component)
 {
     $element = self::getDOMCradle()->createElement('testFeedbackRef');
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     self::setDOMElementAttribute($element, 'outcomeIdentifier', $component->getOutcomeIdentifier());
     self::setDOMElementAttribute($element, 'access', TestFeedbackAccess::getNameByConstant($component->getAccess()));
     self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant($component->getShowHide()));
     self::setDOMElementAttribute($element, 'href', $component->getHref());
     return $element;
 }
 /**
  * Marshall a ModalFeedbackRule object to its XML counterpart.
  *
  * @param \qtism\data\QtiComponent $component
  * @return \DOMElement
  */
 public function marshall(QtiComponent $component)
 {
     $element = self::getDOMCradle()->createElement('modalFeedbackRule');
     self::setDOMElementAttribute($element, 'outcomeIdentifier', $component->getOutcomeIdentifier());
     self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant($component->getShowHide()));
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     if ($component->hasTitle() === true) {
         self::setDOMElementAttribute($element, 'title', $component->getTitle());
     }
     return $element;
 }
 protected function marshallChildrenKnown(QtiComponent $component, array $elements)
 {
     $element = self::getDOMCradle()->createElement($component->getQtiClassName());
     self::setDOMElementAttribute($element, 'outcomeIdentifier', $component->getOutcomeIdentifier());
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant($component->getShowHide()));
     if ($component->hasTitle() === true) {
         self::setDOMElementAttribute($element, 'title', $component->getTitle());
     }
     foreach ($elements as $e) {
         $element->appendChild($e);
     }
     return $element;
 }
 /**
  * Marshall a TestFeedback object into a DOMElement object.
  * 
  * @param QtiComponent $component A TestFeedback object.
  * @return DOMElement The according DOMElement object.
  */
 protected function marshall(QtiComponent $component)
 {
     $element = static::getDOMCradle()->createElement($component->getQtiClassName());
     $access = $component->getAccess() == TestFeedbackAccess::AT_END ? 'atEnd' : 'during';
     $showHide = $component->getShowHide() == ShowHide::SHOW ? 'show' : 'hide';
     self::setDOMElementAttribute($element, 'access', $access);
     self::setDOMElementAttribute($element, 'outcomeIdentifier', $component->getOutcomeIdentifier());
     self::setDOMElementAttribute($element, 'showHide', $showHide);
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     $title = $component->getTitle();
     if (!empty($title)) {
         self::setDOMElementAttribute($element, 'title', $title);
     }
     $flowStatic = static::getDOMCradle()->createDocumentFragment();
     $flowStatic->appendXML($component->getContent());
     $element->appendChild($flowStatic);
     return $element;
 }
 /**
  * Whether or not the 'outcomeIdentifier'/'templateIdentifier' set on a templateElement/feedbackElement/choice
  * matches its 'identifier' attribute.
  *
  * @param QtiComponent $component A TemplateElement or FeedbackElement or Choice element.
  * @return boolean
  */
 protected function identifierMatches(QtiComponent $component)
 {
     $variableIdentifier = $component instanceof FeedbackElement || $component instanceof ModalFeedback ? $component->getOutcomeIdentifier() : $component->getTemplateIdentifier();
     $identifier = new Identifier($component->getIdentifier());
     $showHide = $component->getShowHide();
     $state = $this->getState();
     $matches = false;
     if (($val = $state[$variableIdentifier]) !== null) {
         if ($val instanceof Scalar) {
             $matches = $val->equals($identifier);
         } elseif ($val instanceof Container) {
             $matches = $val->contains($identifier);
         }
     }
     return $matches;
 }
 /**
  * Whether or not the 'outcomeIdentifier'/'templateIdentifier' set on a templateElement/feedbackElement/choice
  * matches its 'identifier' attribute.
  * 
  * @param QtiComponent $component A TemplateElement or FeedbackElement or Choice element.
  * @return boolean
  */
 protected function identifierMatches(QtiComponent $component)
 {
     $variableIdentifier = $component instanceof FeedbackElement || $component instanceof ModalFeedback ? $component->getOutcomeIdentifier() : $component->getTemplateIdentifier();
     $identifier = $component->getIdentifier();
     $showHide = $component->getShowHide();
     $state = $this->getState();
     return ($val = $state[$variableIdentifier]) !== null && $val === $identifier;
 }