本文整理汇总了PHP中qtism\data\storage\xml\XmlDocument::getUrl方法的典型用法代码示例。如果您正苦于以下问题:PHP XmlDocument::getUrl方法的具体用法?PHP XmlDocument::getUrl怎么用?PHP XmlDocument::getUrl使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qtism\data\storage\xml\XmlDocument
的用法示例。
在下文中一共展示了XmlDocument::getUrl方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: createFromXmlAssessmentTestDocument
/**
* Create a new instance of XmlCompactDocument from an XmlAssessmentTestDocument.
*
* @param XmlDocument $xmlAssessmentTestDocument An XmlAssessmentTestDocument object you want to store as a compact XML file.
* @return XmlCompactDocument An XmlCompactAssessmentTestDocument object.
* @throws XmlStorageException If an error occurs while transforming the XmlAssessmentTestDocument object into an XmlCompactAssessmentTestDocument object.
*/
public static function createFromXmlAssessmentTestDocument(XmlDocument $xmlAssessmentTestDocument, FileResolver $itemResolver = null)
{
$compactAssessmentTest = new XmlCompactDocument();
$identifier = $xmlAssessmentTestDocument->getDocumentComponent()->getIdentifier();
$title = $xmlAssessmentTestDocument->getDocumentComponent()->getTitle();
$assessmentTest = new AssessmentTest($identifier, $title);
$assessmentTest->setOutcomeDeclarations($xmlAssessmentTestDocument->getDocumentComponent()->getOutcomeDeclarations());
$assessmentTest->setOutcomeProcessing($xmlAssessmentTestDocument->getDocumentComponent()->getOutcomeProcessing());
$assessmentTest->setTestFeedbacks($xmlAssessmentTestDocument->getDocumentComponent()->getTestFeedbacks());
$assessmentTest->setTestParts($xmlAssessmentTestDocument->getDocumentComponent()->getTestParts());
$assessmentTest->setTimeLimits($xmlAssessmentTestDocument->getDocumentComponent()->getTimeLimits());
$assessmentTest->setToolName($xmlAssessmentTestDocument->getDocumentComponent()->getToolName());
$assessmentTest->setToolVersion($xmlAssessmentTestDocument->getDocumentComponent()->getToolVersion());
// File resolution.
$sectionResolver = new LocalFileResolver($xmlAssessmentTestDocument->getUrl());
if (is_null($itemResolver) === true) {
$itemResolver = new LocalFileResolver($xmlAssessmentTestDocument->getUrl());
} else {
$itemResolver->setBasePath($xmlAssessmentTestDocument->getUrl());
}
// It simply consists of replacing assessmentItemRef and assessmentSectionRef elements.
$trail = array();
// trailEntry[0] = a component, trailEntry[1] = from where we are coming (parent).
$mark = array();
$root = $xmlAssessmentTestDocument->getDocumentComponent();
array_push($trail, array($root, $root));
while (count($trail > 0)) {
$trailer = array_pop($trail);
$component = $trailer[0];
$previous = $trailer[1];
if (!in_array($component, $mark) && count($component->getComponents()) > 0) {
// First pass on a hierarchical node... go deeper in the n-ary tree.
array_push($mark, $component);
// We want to go back on this component.
array_push($trail, $trailer);
// Prepare further exploration.
foreach ($component->getComponents()->getArrayCopy() as $comp) {
array_push($trail, array($comp, $component));
}
} else {
if (in_array($component, $mark) || count($component->getComponents()) === 0) {
// Second pass on a hierarchical node (we are bubbling up accross the n-ary tree)
// OR
// Leaf node
if ($component instanceof AssessmentItemRef) {
// Transform the ref in an compact extended ref.
$compactRef = ExtendedAssessmentItemRef::createFromAssessmentItemRef($component);
// find the old one and replace it.
$previousParts = $previous->getSectionParts();
foreach ($previousParts as $k => $previousPart) {
if ($previousParts[$k] === $component) {
// If the previous processed component is an XmlAssessmentSectionDocument,
// it means that the given baseUri must be adapted.
$baseUri = $xmlAssessmentTestDocument->getUrl();
if ($component instanceof XmlDocument && $component->getDocumentComponent() instanceof AssessmentSection) {
$baseUri = $component->getUrl();
}
$itemResolver->setBasePath($baseUri);
self::resolveAssessmentItemRef($compactRef, $itemResolver);
$previousParts->replace($component, $compactRef);
break;
}
}
} else {
if ($component instanceof AssessmentSectionRef) {
// We follow the unreferenced AssessmentSection as if it was
// the 1st pass.
$assessmentSection = self::resolveAssessmentSectionRef($component, $sectionResolver);
$previousParts = $previous->getSectionParts();
foreach ($previousParts as $k => $previousPart) {
if ($previousParts[$k] === $component) {
$previousParts->replace($component, $assessmentSection);
break;
}
}
array_push($trail, array($assessmentSection, $previous));
} else {
if ($component instanceof AssessmentSection) {
$assessmentSection = ExtendedAssessmentSection::createFromAssessmentSection($component);
$previousParts = $previous instanceof TestPart ? $previous->getAssessmentSections() : $previous->getSectionParts();
foreach ($previousParts as $k => $previousPart) {
if ($previousParts[$k] === $component) {
$previousParts->replace($component, $assessmentSection);
break;
}
}
} else {
if ($component === $root) {
// 2nd pass on the root, we have to stop.
$compactAssessmentTest->setDocumentComponent($assessmentTest);
return $compactAssessmentTest;
}
}
//.........这里部分代码省略.........