/** * Short description of method buildExpression * * @access public * @author Joel Bout, <*****@*****.**> * @param DOMElement data * @return oat\taoQtiItem\model\qti\response\Rule */ protected function buildExpression(DOMElement $data) { $data = simplexml_import_dom($data); return ExpressionParserFactory::build($data); }
/** * Short description of method buildResponseCondition * * @access private * @author Joel Bout, <*****@*****.**> * @param SimpleXMLElement data * @return oat\taoQtiItem\model\qti\response\ResponseCondition */ private static function buildResponseCondition(SimpleXMLElement $data) { $responseCondition = new ResponseCondition(); foreach ($data->children() as $child) { switch ($child->getName()) { case 'responseIf': case 'responseElseIf': $subchildren = null; foreach ($child->children() as $subchild) { $subchildren[] = $subchild; } // first node is condition $conditionNode = array_shift($subchildren); $condition = ExpressionParserFactory::build($conditionNode); // all the other nodes are action $responseRules = array(); foreach ($subchildren as $responseRule) { $responseRules[] = self::buildResponseRule($responseRule); } $responseCondition->addResponseIf($condition, $responseRules); break; case 'responseElse': $responseRules = array(); foreach ($child->children() as $responseRule) { $responseRules[] = self::buildResponseRule($responseRule); } $responseCondition->setResponseElse($responseRules); break; default: throw new ParsingException('unknown node in ResponseCondition'); } } $returnValue = $responseCondition; return $returnValue; }