/** * Unmarshall an extended version of an assessmentItemRef DOMElement into * a ExtendedAssessmentItemRef object. * * @return ExtendedAssessmentItemRef A ExtendedAssessmentItemRef object. */ protected function unmarshall(DOMElement $element) { $baseComponent = parent::unmarshall($element); $identifier = $baseComponent->getIdentifier(); $href = $baseComponent->getHref(); $compactAssessmentItemRef = new ExtendedAssessmentItemRef($identifier, $href); $compactAssessmentItemRef->setRequired($baseComponent->isRequired()); $compactAssessmentItemRef->setFixed($baseComponent->isFixed()); $compactAssessmentItemRef->setPreConditions($baseComponent->getPreConditions()); $compactAssessmentItemRef->setBranchRules($baseComponent->getBranchRules()); $compactAssessmentItemRef->setItemSessionControl($baseComponent->getItemSessionControl()); $compactAssessmentItemRef->setTimeLimits($baseComponent->getTimeLimits()); $compactAssessmentItemRef->setTemplateDefaults($baseComponent->getTemplateDefaults()); $compactAssessmentItemRef->setWeights($baseComponent->getWeights()); $compactAssessmentItemRef->setVariableMappings($baseComponent->getVariableMappings()); $compactAssessmentItemRef->setCategories($baseComponent->getCategories()); $responseDeclarationElts = self::getChildElementsByTagName($element, 'responseDeclaration'); $responseDeclarations = new ResponseDeclarationCollection(); foreach ($responseDeclarationElts as $responseDeclarationElt) { $marshaller = $this->getMarshallerFactory()->createMarshaller($responseDeclarationElt); $responseDeclarations[] = $marshaller->unmarshall($responseDeclarationElt); } $compactAssessmentItemRef->setResponseDeclarations($responseDeclarations); $outcomeDeclarationElts = self::getChildElementsByTagName($element, 'outcomeDeclaration'); $outcomeDeclarations = new OutcomeDeclarationCollection(); foreach ($outcomeDeclarationElts as $outcomeDeclarationElt) { $marshaller = $this->getMarshallerFactory()->createMarshaller($outcomeDeclarationElt); $outcomeDeclarations[] = $marshaller->unmarshall($outcomeDeclarationElt); } $compactAssessmentItemRef->setOutcomeDeclarations($outcomeDeclarations); $responseProcessingElts = self::getChildElementsByTagName($element, 'responseProcessing'); if (count($responseProcessingElts) === 1) { $marshaller = $this->getMarshallerFactory()->createMarshaller($responseProcessingElts[0]); $compactAssessmentItemRef->setResponseProcessing($marshaller->unmarshall($responseProcessingElts[0])); } if (($adaptive = static::getDOMElementAttributeAs($element, 'adaptive', 'boolean')) !== null) { $compactAssessmentItemRef->setAdaptive($adaptive); } if (($timeDependent = static::getDOMElementAttributeAs($element, 'timeDependent', 'boolean')) !== null) { $compactAssessmentItemRef->setTimeDependent($timeDependent); } else { $msg = "The mandatory attribute 'timeDependent' is missing from element '" . $element->localName . "'."; throw new UnmarshallingException($msg, $element); } return $compactAssessmentItemRef; }