51         require_once(
"SeqActivity.php");
 
   53         require_once(
"SeqRule.php");
 
   54         require_once(
"SeqRuleset.php");
 
   56         require_once(
"SeqCondition.php");
 
   57         require_once(
"SeqConditionSet.php");
 
   59         require_once(
"SeqObjective.php");
 
   60         require_once(
"SeqObjectiveMap.php");
 
   62         require_once(
"SeqRollupRule.php");
 
   63         require_once(
"SeqRollupRuleset.php");
 
   65         require_once(
"ADLAuxiliaryResource.php");
 
   71                 $doc = 
new DomDocument();
 
   73                 $organizations = $doc->getElementsByTagName(
"organizations");
 
   76                 $default=$organizations->item(0)->getAttribute(
"default");
 
   79                 $organization = $doc->getElementsByTagName(
"organization");
 
   82                 foreach ($organization as $element) {
 
   83                         if ($element->getAttribute(
"identifier")==$default) {
 
   84                                 $default_organization = $element;
 
   89                 $seqCollection = $doc->getElementsByTagName(
"sequencingCollection")->item(0);
 
   91                 $root = $this->
buildNode($default_organization,$seqCollection,$doc);
 
   94                 $objectivesGlobalToSystem = $default_organization->getAttributeNS(
"http://www.adlnet.org/xsd/adlseq_v1p3",
"objectivesGlobalToSystem");
 
   96                 $org = $default_organization->getAttribute(
"identifier");
 
  101                 if ($objectivesGlobalToSystem==
"false") {
 
  106                 $c_root[
'_SeqActivity']=$root;
 
  108                 $ret[
'global'] = $globaltosystem;
 
  109                 $ret[
'tree'] = $c_root;
 
  124                 $act->setID($node->getAttribute(
"identifier"));
 
  126                 $tempVal = $node->getAttribute(
"identifierref");
 
  128                         $act->setResourceID($tempVal);
 
  131                 $tempVal = $node->getAttribute(
"isvisible");
 
  135                                 $act->setIsVisible(self::convert_to_bool($tempVal));
 
  140                 $children = $node->childNodes;
 
  142                  for ($i = 0; $i < $children->length; $i++ ) {
 
  144                         $curNode=$children->item($i);
 
  147                         if ($curNode->nodeType == XML_ELEMENT_NODE) {
 
  149                                 if ($curNode->localName == 
"item") {
 
  153                                         $nestedAct = $this->
buildNode($curNode,$seq,$doc);
 
  154                                         if ($nestedAct != null ) {
 
  155                                                 $act->AddChild($nestedAct);
 
  158                                 else if ($curNode->localName == 
"title") {
 
  161                                 else if ($curNode->localName == 
"sequencing") {
 
  164                                         $tempVal = $curNode->getAttribute(
"IDRef");
 
  171                                                 $sequencing = $seq->getElementsByTagName(
"sequencing");
 
  174                                                 foreach ($sequencing as $element) {
 
  175                                                         if ($element->getAttribute(
"ID")==$tempVal) {
 
  176                                                                 $seqGlobal = $element;
 
  181                                                 $seqInfo = $seqGlobal->cloneNode(TRUE);
 
  184                                                 $seqChildren = $curNode->childNodes;
 
  185                                 for ($j = 0; $j < $seqChildren->length; $j++ ) {
 
  187                                                         $curChild = $seqChildren->item($j);
 
  188                                 if ( $curChild->nodeType == XML_ELEMENT_NODE ) {
 
  191                                                                 $seqInfo->appendChild($curChild);
 
  205                         $item=$children->item($i)->nodeValue;
 
  216                 $children = $iNode->childNodes;
 
  217                 for ( $i = 0; $i < $children->length; $i++ ) {
 
  218                         $curNode = $children->item($i);
 
  219                 if ( $curNode->nodeType == XML_ELEMENT_NODE ) {
 
  220                                 if ($curNode->localName == 
"controlMode") {
 
  222                                         $tempVal=$curNode->getAttribute(
"choice");
 
  224                                                 $ioAct->setControlModeChoice(self::convert_to_bool($tempVal));
 
  227                                         $tempVal=$curNode->getAttribute(
"choiceExit");
 
  229                                                 $ioAct->setControlModeChoiceExit(self::convert_to_bool($tempVal));
 
  233                                         $tempVal=$curNode->getAttribute(
"flow");
 
  235                                                 $ioAct->setControlModeFlow(self::convert_to_bool($tempVal));
 
  239                         $tempVal=$curNode->getAttribute(
"forwardOnly");
 
  241                                                 $ioAct->setControlForwardOnly(self::convert_to_bool($tempVal));
 
  245                             $tempVal=$curNode->getAttribute(
"useCurrentAttemptObjectiveInfo");
 
  247                                                 $ioAct->setUseCurObjective(self::convert_to_bool($tempVal));
 
  251                                 $tempVal=$curNode->getAttribute(
"useCurrentAttemptProgressInfo");
 
  253                                                 $ioAct->setUseCurProgress(self::convert_to_bool($tempVal));
 
  258                                 else if ($curNode->localName == 
"sequencingRules") {
 
  263                                 else if ($curNode->localName == 
"limitConditions") {
 
  265                                         $tempVal=$curNode->getAttribute(
"attemptLimit");
 
  267                                                 $ioAct->setAttemptLimit($tempVal);
 
  271                         $tempVal=$curNode->getAttribute(
"attemptAbsoluteDurationLimit");
 
  273                                                 $ioAct->setAttemptAbDur($tempVal);
 
  277                                 $tempVal=$curNode->getAttribute(
"attemptExperiencedDurationLimit");
 
  279                                         $ioAct->setAttemptExDur($tempVal);
 
  283                                 $tempVal=$curNode->getAttribute(
"activityAbsoluteDurationLimit");
 
  285                                                 $ioAct->setActivityAbDur($tempVal);
 
  289                                         $tempVal=$curNode->getAttribute(
"activityExperiencedDurationLimit");
 
  291                                         $ioAct->setActivityExDur($tempVal);
 
  295                                         $tempVal=$curNode->getAttribute(
"beginTimeLimit");
 
  297                                                 $ioAct->setBeginTimeLimit($tempVal);
 
  301                         $tempVal=$curNode->getAttribute(
"endTimeLimit");
 
  303                                                 $ioAct->setEndTimeLimit($tempVal);
 
  306                                 else if ($curNode->localName == 
"auxiliaryResources") {
 
  310                                 else if ($curNode->localName == 
"rollupRules") {
 
  314                                 else if ($curNode->localName == 
"objectives") {
 
  318                                 else if ($curNode->localName == 
"randomizationControls") {
 
  321                         $tempVal=$curNode->getAttribute(
"randomizationTiming");
 
  323                                                 $ioAct->setRandomTiming($tempVal);
 
  327                                         $tempVal=$curNode->getAttribute(
"selectCount");
 
  329                                                 $ioAct->setSelectCount($tempVal);
 
  333                         $tempVal=$curNode->getAttribute(
"reorderChildren");
 
  335                                                 $ioAct->setReorderChildren(self::convert_to_bool($tempVal));
 
  339                         $tempVal=$curNode->getAttribute(
"selectionTiming");
 
  341                                 $ioAct->setSelectionTiming($tempVal);
 
  344                                 else if ($curNode->localName == 
"deliveryControls") {
 
  347                                         $tempVal=$curNode->getAttribute(
"tracked");
 
  349                                                 $ioAct->setIsTracked(self::convert_to_bool($tempVal));
 
  353                                         $tempVal=$curNode->getAttribute(
"completionSetByContent");
 
  355                                                 $ioAct->setSetCompletion(self::convert_to_bool($tempVal));
 
  359                                         $tempVal=$curNode->getAttribute(
"objectiveSetByContent");
 
  361                                                 $ioAct->setSetObjective(self::convert_to_bool($tempVal));
 
  364                     else if ($curNode->localName == 
"constrainedChoiceConsiderations") {
 
  367                         $tempVal=$curNode->getAttribute(
"preventActivation");
 
  369                                                 $ioAct->setPreventActivation(self::convert_to_bool($tempVal));
 
  373                         $tempVal=$curNode->getAttribute(
"constrainChoice");
 
  375                                                 $ioAct->setConstrainChoice(self::convert_to_bool($tempVal));
 
  378                                 else if ($curNode->localName == 
"rollupConsiderations") {
 
  381                                         $tempVal=$curNode->getAttribute(
"requiredForSatisfied");
 
  383                                                 $ioAct->setRequiredForSatisfied($tempVal);
 
  387                                         $tempVal=$curNode->getAttribute(
"requiredForNotSatisfied");
 
  389                                                 $ioAct->setRequiredForNotSatisfied($tempVal);
 
  393                         $tempVal=$curNode->getAttribute(
"requiredForCompleted");
 
  395                                                 $ioAct->setRequiredForCompleted($tempVal);
 
  399                         $tempVal=$curNode->getAttribute(
"requiredForIncomplete");
 
  401                                 $ioAct->setRequiredForIncomplete($tempVal);
 
  405                                         $tempVal=$curNode->getAttribute(
"measureSatisfactionIfActive");
 
  407                                                 $ioAct->setSatisfactionIfActive(self::convert_to_bool($tempVal));
 
  424             $objectives = array();
 
  425                 $children = $iNode->childNodes;
 
  426                 for ($i = 0; $i < $children->length; $i++ ) {
 
  427                         $curNode=$children->item($i);
 
  428                         if ($curNode->nodeType == XML_ELEMENT_NODE) {
 
  429                                 if ($curNode->localName == 
"primaryObjective" || $curNode->localName == 
"objective" ) {
 
  432                                         if ($curNode->localName == 
"primaryObjective") { 
 
  433                                 $obj->mContributesToRollup = 
true;
 
  437                                         $tempVal = $curNode->getAttribute(
"objectiveID");
 
  439                                                 $obj->mObjID = $tempVal;
 
  443                         $tempVal = $curNode->getAttribute(
"satisfiedByMeasure");
 
  450                                                 $obj->mMinMeasure = $tempVal;
 
  455                                         if ( $maps != null ){
 
  460                                         $c_obj[
'_SeqObjective'] = $obj;
 
  461                                         array_push($objectives,$c_obj);
 
  465                 $ioAct->setObjectives($objectives);
 
  473                 $children = $iNode->childNodes;
 
  474                 for ($i = 0; $i < $children->length; $i++ ) {
 
  475                         $curNode=$children->item($i);
 
  476                         if ($curNode->nodeType == XML_ELEMENT_NODE) {
 
  477                                 if ($curNode->localName == 
"mapInfo") {
 
  481                          $tempVal = $curNode->getAttribute(
"targetObjectiveID");
 
  483                                                 $map->mGlobalObjID = $tempVal;
 
  487                                 $tempVal = $curNode->getAttribute(
"readSatisfiedStatus");
 
  493                                         $tempVal = $curNode->getAttribute(
"readNormalizedMeasure");
 
  499                                 $tempVal = $curNode->getAttribute(
"writeSatisfiedStatus");
 
  505                                 $tempVal = $curNode->getAttribute(
"writeNormalizedMeasure");
 
  510                                         $c_map[
'_SeqObjectiveMap']=$map;
 
  511                                         array_push($maps,$c_map);
 
  515                 if (count($maps)==null) {
 
  524                 $rollupRules = array();
 
  527         $tempVal = $iNode->getAttribute(
"rollupObjectiveSatisfied");
 
  529                         $ioAct->setIsObjRolledUp(self::convert_to_bool($tempVal));
 
  533         $tempVal = $iNode->getAttribute(
"objectiveMeasureWeight");
 
  535                         $ioAct->setObjMeasureWeight($tempVal);
 
  539         $tempVal = $iNode->getAttribute(
"rollupProgressCompletion");
 
  541                         $ioAct->setIsProgressRolledUp(self::convert_to_bool($tempVal));
 
  544                 $children = $iNode->childNodes;
 
  545                 for ($i = 0; $i < $children->length; $i++ ) {
 
  546                         $curNode=$children->item($i);
 
  547                         if ($curNode->nodeType == XML_ELEMENT_NODE) {
 
  548                                 if ($curNode->localName == 
"rollupRule") {
 
  552                         $tempVal=$curNode->getAttribute(
"childActivitySet");
 
  554                                                 $rule->mChildActivitySet = $tempVal;
 
  557                         $tempVal=$curNode->getAttribute(
"minimumCount");
 
  559                                                         $rule->mMinCount = $tempVal;
 
  563                         $tempVal=$curNode->getAttribute(
"minimumPercent");
 
  565                                                         $rule->mMinPercent = $tempVal;
 
  568                             $conditions = array();
 
  569                                         $ruleInfo = $curNode->childNodes;
 
  570                                         for ($j = 0; $j < $ruleInfo->length; $j++ ) {
 
  571                                                 $curRule=$ruleInfo->item($j);
 
  573                                                 if ($curRule->nodeType == XML_ELEMENT_NODE) {
 
  574                                                   if ($curRule->localName == 
"rollupConditions") {
 
  575                                                         $tempVal = $curRule->getAttribute(
"conditionCombination");
 
  577                                                                 $rule->mConditions[
'_SeqConditionSet']->mCombination = $tempVal;
 
  579                                                                 $rule->mConditions[
'_SeqConditionSet']->mCombination = 
COMBINATION_ANY;         
 
  581                                                 $conds = $curRule->childNodes;
 
  582                                                 for ($k = 0; $k < $conds->length; $k++ ) {
 
  583                                                         $con=$conds->item($k);
 
  584                                                         if ($con->nodeType == XML_ELEMENT_NODE) {
 
  585                                                                 if ($con->localName == 
"rollupCondition") {
 
  588                                          $tempVal = $con->getAttribute(
"condition");
 
  590                                                                                 $cond->mCondition=$tempVal;
 
  593                                           $tempVal = $con->getAttribute(
"operator");
 
  595                                                                                 if($tempVal==
'not') {$cond->mNot = 
true;} 
else {$cond->mNot = 
false;}
 
  598                                                                         $c_cond[
'_SeqCondition'] = $cond;
 
  599                                                                         array_push($conditions,$c_cond);
 
  605                                         else if ($curRule->localName == 
"rollupAction") {
 
  606                                                         $tempVal = $curRule->getAttribute(
"action");
 
  608                                                                 $rule->setRollupAction($tempVal);
 
  616                          $rule->mConditions[
'_SeqConditionSet']->mConditions = $conditions;
 
  620                                 $c_rule[
'_SeqRollupRule']=$rule;
 
  621                                 array_push($rollupRules,$c_rule);
 
  626                 if ( $rollupRules != null ) {
 
  630                          $c_rules[
'_SeqRollupRuleset']=$rules;
 
  631                  $ioAct->setRollupRules($c_rules);
 
  644             $exitRules = array();
 
  645             $postRules = array();
 
  648                 $children = $iNode->childNodes;
 
  651                  for ($i = 0; $i < $children->length; $i++ ) {
 
  652                         $curNode=$children->item($i);
 
  653                         if ($curNode->nodeType == XML_ELEMENT_NODE) {
 
  654                                 if ($curNode->localName == 
"preConditionRule" || $curNode->localName == 
"exitConditionRule" || $curNode->localName == 
"postConditionRule" ) {
 
  656                         $ruleInfo = $curNode->childNodes;
 
  657                                         for ($j = 0; $j < $ruleInfo->length; $j++ ){
 
  658                                                 $curRule=$ruleInfo->item($j);
 
  660                                                 if ($curRule->nodeType == XML_ELEMENT_NODE) { 
 
  661                                                         if ($curRule->localName == 
"ruleConditions") {
 
  664                                                         else if($curRule->localName == 
"ruleAction"){
 
  665                                                                 $tempVal=$curRule->getAttribute(
"action");
 
  667                                                                         $rule->mAction = $tempVal;
 
  673                         if ( $rule->mConditions != null && $rule->mAction != null ) {
 
  675                                                 if ($curNode->localName == 
"preConditionRule") {
 
  678                                                         $c_rule[
'_SeqRule'] = $rule;
 
  679                                         array_push($preRules,$c_rule);
 
  681                                                 if ($curNode->localName == 
"exitConditionRule") {
 
  684                                                         $c_rule[
'_SeqRule'] = $rule;
 
  685                                                         array_push($exitRules,$c_rule);
 
  687                                                 if ($curNode->localName == 
"postConditionRule") {
 
  690                                                         $c_rule[
'_SeqRule'] = $rule;
 
  691                                         array_push($postRules,$c_rule);
 
  699                 if ( count($preRules) > 0 ) {
 
  702                          $c_rules[
'_SeqRuleset']=$rules;
 
  703                  $ioAct->setPreSeqRules($c_rules);
 
  707                 if ( count($exitRules) > 0 ){
 
  710                          $c_rules[
'_SeqRuleset']=$rules;
 
  711                  $ioAct->setExitSeqRules($c_rules);
 
  713                 if ( count($postRules) > 0 ){
 
  716                         $c_rules[
'_SeqRuleset']=$rules;
 
  717                 $ioAct->setPostSeqRules($c_rules);
 
  729             $conditions = array();
 
  730                 $tempVal=$iNode->getAttribute(
"conditionCombination");
 
  732                         $condSet->mCombination=$tempVal;
 
  736                 $condInfo = $iNode->childNodes;
 
  737                 for ($i = 0; $i < $condInfo->length; $i++ ) {
 
  738                         $curCond=$condInfo->item($i);
 
  739                         if ($curCond->nodeType == XML_ELEMENT_NODE) {
 
  740                                 if ($curCond->localName == 
"ruleCondition") {
 
  744                         $tempVal=$curCond->getAttribute(
"condition");
 
  746                                                 $cond->mCondition = $tempVal;
 
  750                                         $tempVal=$curCond->getAttribute(
"referencedObjective");
 
  752                                                 $cond->mObjID = $tempVal;
 
  756                                         $tempVal=$curCond->getAttribute(
"measureThreshold");
 
  758                                                 $cond->mThreshold = $tempVal;
 
  762                                 $tempVal = $curCond->getAttribute(
"operator");
 
  764                                                 if ($tempVal == 
'not') {
 
  772                                         $c_cond[
'_SeqCondition']=$cond;
 
  773                                         array_push($conditions,$c_cond);
 
  779                 if (count($conditions)>0) {
 
  780                         $condSet->mConditions = $conditions;
 
  782                         $condSet->mConditions = null;
 
  785                 $c_condSet[
'_SeqConditionSet']=$condSet;
 
  794                 $children = $iNode->childNodes;
 
  797                 for ($i = 0; $i < $children->length; $i++ ) {
 
  798                         $curNode=$children->item($i);
 
  799                         if ($curNode->nodeType == XML_ELEMENT_NODE) {
 
  800                                 if ($curNode->localName == 
"auxiliaryResource") {
 
  805                         $tempVal=$curNode->getAttribute(
"purpose");
 
  807                                                 $res->mType = $tempVal;
 
  810                                         $tempVal=$curNode->getAttribute(
"auxiliaryResourceID");
 
  812                                                 $res->mResourceID = $tempVal;
 
  814                                         array_push($auxRes,
$res);
 
  819                 $c_auxRes[
'_ADLAuxiliaryResource']=$auxRes;
 
  820                 $ioAct->setAuxResources($c_auxRes);
 
  827                 if (strtoupper($string)==
"FALSE") {
 
  840                 if ( $iNode != null && $iElement != null ){
 
  841                         $children = $iNode->childNodes;
 
  842                         for ($i = 0; $i < $children->length; $i++ ) {
 
  843                                 $curNode = $children->item($i);
 
  844                         if ( ($curNode->nodeType == XML_ELEMENT_NODE)) {
 
  845                                         if ($curNode->localName == $iElement) {
 
  851                         if ($curNode != null ) {
 
  852                                 $comp = $curNode->localName;
 
  854                                         if ($comp != $iElement) {
 
  869                 if ( $curNode != null )
 
  871                         $children = $curNode->childNodes;
 
  872                 if ( $children != null ) {
 
  873                                 for ($i = 0; $i < $children->length; $i++ ) {
 
  874                                         $curNode = $children->item($i);
 
  876                                if ( ($curNode->nodeType == XML_TEXT_NODE) ||($curNode->nodeType == XML_CDATA_SECTION_NODE) )
 
  878                                   $value = $value.$curNode->nodeValue;