/** * Marshall a HotspotChoice/AssociableHotspot object into a DOMElement object. * * @param QtiComponent $component A HotspotChoice/AssociableHotspot object. * @return DOMElement The according DOMElement object. * @throws MarshallingException */ protected function marshall(QtiComponent $component) { $element = self::getDOMCradle()->createElement($component->getQtiClassName()); self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier()); self::setDOMElementAttribute($element, 'shape', Shape::getNameByConstant($component->getShape())); self::setDOMElementAttribute($element, 'coords', $component->getCoords()->__toString()); if ($component->isFixed() === true) { self::setDOMElementAttribute($element, 'fixed', true); } if ($component->hasTemplateIdentifier() === true) { self::setDOMElementAttribute($element, 'templateIdentifier', $component->getTemplateIdentifier()); } if ($component->getShowHide() === ShowHide::HIDE) { self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant($component->getShowHide())); } if ($component->hasHotspotLabel() === true) { self::setDOMElementAttribute($element, 'hotspotLabel', $component->getHotspotLabel()); } if ($component instanceof AssociableHotspot) { self::setDOMElementAttribute($element, 'matchMax', $component->getMatchMax()); if ($component->getMatchMin() !== 0) { self::setDOMElementAttribute($element, 'matchMin', $component->getMatchMin()); } } self::fillElement($element, $component); return $element; }
/** * Marshall a Gap object into a DOMElement object. * * @param \qtism\data\QtiComponent $component A Gap object. * @return \DOMElement The according DOMElement object. * @throws \qtism\data\storage\xml\marshalling\MarshallingException */ protected function marshall(QtiComponent $component) { $version = $this->getVersion(); $element = self::getDOMCradle()->createElement('gap'); self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier()); if ($component->isFixed() === true) { self::setDOMElementAttribute($element, 'fixed', true); } if (Version::compare($version, '2.1.0', '>=') === true && $component->hasTemplateIdentifier() === true) { self::setDOMElementAttribute($element, 'templateIdentifier', $component->getTemplateIdentifier()); } if (Version::compare($version, '2.1.0', '>=') === true && $component->getShowHide() === ShowHide::HIDE) { self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant(ShowHide::HIDE)); } if (Version::compare($version, '2.1.0', '>=') === true && $component->isRequired() === true) { self::setDOMElementAttribute($element, 'required', true); } if (Version::compare($version, '2.1.0', '<') === true) { $matchGroup = $component->getMatchGroup(); if (count($matchGroup) > 0) { self::setDOMElementAttribute($element, 'matchGroup', implode(' ', $matchGroup->getArrayCopy())); } } $this->fillElement($element, $component); return $element; }
/** * 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; }
/** * Marshall a HotspotChoice/AssociableHotspot object into a DOMElement object. * * @param \qtism\data\QtiComponent $component A HotspotChoice/AssociableHotspot object. * @return \DOMElement The according DOMElement object. * @throws \qtism\data\storage\xml\marshalling\MarshallingException */ protected function marshall(QtiComponent $component) { $version = $this->getVersion(); $element = self::getDOMCradle()->createElement($component->getQtiClassName()); self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier()); self::setDOMElementAttribute($element, 'shape', QtiShape::getNameByConstant($component->getShape())); self::setDOMElementAttribute($element, 'coords', $component->getCoords()->__toString()); if ($component->isFixed() === true) { self::setDOMElementAttribute($element, 'fixed', true); } if (Version::compare($version, '2.1.0', '>=') === true && $component->hasTemplateIdentifier() === true) { self::setDOMElementAttribute($element, 'templateIdentifier', $component->getTemplateIdentifier()); } if (Version::compare($version, '2.1.0', '>=') === true && $component->getShowHide() === ShowHide::HIDE) { self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant($component->getShowHide())); } if ($component->hasHotspotLabel() === true) { self::setDOMElementAttribute($element, 'hotspotLabel', $component->getHotspotLabel()); } if ($component instanceof AssociableHotspot) { if (Version::compare($version, '2.1.0', '<') === true) { $matchGroup = $component->getMatchGroup(); if (count($matchGroup) > 0) { self::setDOMElementAttribute($element, 'matchGroup', implode(' ', $matchGroup->getArrayCopy())); } } if (Version::compare($version, '2.1.0', '>=') === true) { if ($component->getMatchMin() !== 0) { self::setDOMElementAttribute($element, 'matchMin', $component->getMatchMin()); } } } if ($component instanceof AssociableHotspot) { self::setDOMElementAttribute($element, 'matchMax', $component->getMatchMax()); } $this->fillElement($element, $component); 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; }
/** * Marshall a Gap object into a DOMElement object. * * @param QtiComponent $component A Gap object. * @return DOMElement The according DOMElement object. * @throws MarshallingException */ protected function marshall(QtiComponent $component) { $element = self::getDOMCradle()->createElement('gap'); self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier()); if ($component->isFixed() === true) { self::setDOMElementAttribute($element, 'fixed', true); } if ($component->hasTemplateIdentifier() === true) { self::setDOMElementAttribute($element, 'templateIdentifier', $component->getTemplateIdentifier()); } if ($component->getShowHide() === ShowHide::HIDE) { self::setDOMElementAttribute($element, 'showHide', ShowHide::HIDE); } if ($component->isRequired() === true) { self::setDOMElementAttribute($element, 'required', true); } self::fillElement($element, $component); 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; }